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
|
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.
|
||||||
|
25
github.go
25
github.go
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user