Merge pull request #62 from kaleo211/master

Allow insecure connection to private Enterprise github
This commit is contained in:
Alex Suraci
2017-11-07 09:17:51 -05:00
committed by GitHub
3 changed files with 21 additions and 8 deletions

View File

@@ -23,6 +23,9 @@ Fetches and creates versioned GitHub resources.
for uploading. If `github_api_url` is set, this value defaults to the same
value, but if you have your own endpoint, this field will override it.
* `insecure`: *Optional. Default `false`.* When set to `true`, concourse will allow
insecure connection to your github API.
* `release`: *Optional. Default `true`.* When set to `true`, `put` produces
release and `check` detects releases. If `false`, `put` and `check` will ignore releases.
Note that releases must have semver compliant tags to be detected.

View File

@@ -1,6 +1,7 @@
package resource
import (
"crypto/tls"
"errors"
"io"
"net/http"
@@ -40,18 +41,26 @@ type GitHubClient struct {
}
func NewGitHubClient(source Source) (*GitHubClient, error) {
var client *github.Client
var httpClient = &http.Client{}
var ctx = context.TODO()
if source.AccessToken == "" {
client = github.NewClient(nil)
} else {
if source.Insecure {
httpClient.Transport = &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
ctx = context.WithValue(ctx, oauth2.HTTPClient, httpClient)
}
if source.AccessToken != "" {
var err error
client, err = oauthClient(source)
httpClient, err = oauthClient(ctx, source)
if err != nil {
return nil, err
}
}
client := github.NewClient(httpClient)
if source.GitHubAPIURL != "" {
var err error
client.BaseURL, err = url.Parse(source.GitHubAPIURL)
@@ -238,16 +247,16 @@ func (g *GitHubClient) GetZipballLink(tag string) (*url.URL, error) {
return u, nil
}
func oauthClient(source Source) (*github.Client, error) {
func oauthClient(ctx context.Context, source Source) (*http.Client, error) {
ts := oauth2.StaticTokenSource(&oauth2.Token{
AccessToken: source.AccessToken,
})
oauthClient := oauth2.NewClient(oauth2.NoContext, ts)
oauthClient := oauth2.NewClient(ctx, ts)
githubHTTPClient := &http.Client{
Transport: oauthClient.Transport,
}
return github.NewClient(githubHTTPClient), nil
return githubHTTPClient, nil
}

View File

@@ -13,6 +13,7 @@ type Source struct {
Drafts bool `json:"drafts"`
PreRelease bool `json:"pre_release"`
Release bool `json:"release"`
Insecure bool `json:"insecure"`
}
type CheckRequest struct {