Add support for enterprise repos to github plugin (#6194)
This commit is contained in:
parent
78d3b86581
commit
3c811c15b3
|
@ -14,6 +14,9 @@ alternative method for collecting repository information.
|
||||||
|
|
||||||
## Github API access token. Unauthenticated requests are limited to 60 per hour.
|
## Github API access token. Unauthenticated requests are limited to 60 per hour.
|
||||||
# access_token = ""
|
# access_token = ""
|
||||||
|
|
||||||
|
## Github API enterprise url. Github Enterprise accounts must specify their base url.
|
||||||
|
# enterprise_base_url = ""
|
||||||
|
|
||||||
## Timeout for HTTP requests.
|
## Timeout for HTTP requests.
|
||||||
# http_timeout = "5s"
|
# http_timeout = "5s"
|
||||||
|
|
|
@ -18,10 +18,11 @@ import (
|
||||||
|
|
||||||
// GitHub - plugin main structure
|
// GitHub - plugin main structure
|
||||||
type GitHub struct {
|
type GitHub struct {
|
||||||
Repositories []string `toml:"repositories"`
|
Repositories []string `toml:"repositories"`
|
||||||
AccessToken string `toml:"access_token"`
|
AccessToken string `toml:"access_token"`
|
||||||
HTTPTimeout internal.Duration `toml:"http_timeout"`
|
EnterpriseBaseURL string `toml:"enterprise_base_url"`
|
||||||
githubClient *github.Client
|
HTTPTimeout internal.Duration `toml:"http_timeout"`
|
||||||
|
githubClient *github.Client
|
||||||
|
|
||||||
obfusticatedToken string
|
obfusticatedToken string
|
||||||
|
|
||||||
|
@ -36,6 +37,9 @@ const sampleConfig = `
|
||||||
|
|
||||||
## Github API access token. Unauthenticated requests are limited to 60 per hour.
|
## Github API access token. Unauthenticated requests are limited to 60 per hour.
|
||||||
# access_token = ""
|
# access_token = ""
|
||||||
|
|
||||||
|
## Github API enterprise url. Github Enterprise accounts must specify their base url.
|
||||||
|
# enterprise_base_url = ""
|
||||||
|
|
||||||
## Timeout for HTTP requests.
|
## Timeout for HTTP requests.
|
||||||
# http_timeout = "5s"
|
# http_timeout = "5s"
|
||||||
|
@ -71,9 +75,16 @@ func (g *GitHub) createGitHubClient(ctx context.Context) (*github.Client, error)
|
||||||
|
|
||||||
g.obfusticatedToken = g.AccessToken[0:4] + "..." + g.AccessToken[len(g.AccessToken)-3:]
|
g.obfusticatedToken = g.AccessToken[0:4] + "..." + g.AccessToken[len(g.AccessToken)-3:]
|
||||||
|
|
||||||
return github.NewClient(oauthClient), nil
|
return g.newGithubClient(oauthClient)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return g.newGithubClient(httpClient)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GitHub) newGithubClient(httpClient *http.Client) (*github.Client, error) {
|
||||||
|
if g.EnterpriseBaseURL != "" {
|
||||||
|
return github.NewEnterpriseClient(g.EnterpriseBaseURL, "", httpClient)
|
||||||
|
}
|
||||||
return github.NewClient(httpClient), nil
|
return github.NewClient(httpClient), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package github
|
package github
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -8,6 +9,18 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestNewGithubClient(t *testing.T) {
|
||||||
|
httpClient := &http.Client{}
|
||||||
|
g := &GitHub{}
|
||||||
|
client, err := g.newGithubClient(httpClient)
|
||||||
|
require.Nil(t, err)
|
||||||
|
require.Contains(t, client.BaseURL.String(), "api.github.com")
|
||||||
|
g.EnterpriseBaseURL = "api.example.com/"
|
||||||
|
enterpriseClient, err := g.newGithubClient(httpClient)
|
||||||
|
require.Nil(t, err)
|
||||||
|
require.Contains(t, enterpriseClient.BaseURL.String(), "api.example.com")
|
||||||
|
}
|
||||||
|
|
||||||
func TestSplitRepositoryNameWithWorkingExample(t *testing.T) {
|
func TestSplitRepositoryNameWithWorkingExample(t *testing.T) {
|
||||||
var validRepositoryNames = []struct {
|
var validRepositoryNames = []struct {
|
||||||
fullName string
|
fullName string
|
||||||
|
|
Loading…
Reference in New Issue