Allow insecure connection to private Enterprise github

This commit is contained in:
Xuebin He
2017-10-24 16:03:27 -04:00
parent 3cf6e11c5a
commit ce3e69847b
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 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. 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`: *Optional. Default `true`.* When set to `true`, `put` produces
release and `check` detects releases. If `false`, `put` and `check` will ignore releases. release and `check` detects releases. If `false`, `put` and `check` will ignore releases.
Note that releases must have semver compliant tags to be detected. Note that releases must have semver compliant tags to be detected.

View File

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

View File

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