Allow insecure connection to private Enterprise github
This commit is contained in:
@@ -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.
|
||||
|
25
github.go
25
github.go
@@ -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
|
||||
}
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user