Skip to content

Commit

Permalink
Merge pull request #1318 from caarlos0/git
Browse files Browse the repository at this point in the history
feat: accept GIT_TOKEN
  • Loading branch information
tejal29 committed Aug 13, 2020
2 parents 8fbd6c8 + 008f8e8 commit d83338e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
4 changes: 3 additions & 1 deletion README.md
Expand Up @@ -176,7 +176,9 @@ If you are using Azure Blob Storage for context file, you will need to pass [Azu
You can use `Personal Access Tokens` for Build Contexts from Private Repositories from [GitHub](https://blog.github.com/2012-09-21-easier-builds-and-deployments-using-git-over-https-and-oauth/).

You can either pass this in as part of the git URL (e.g., `git://TOKEN@github.com/acme/myproject.git#refs/heads/mybranch`)
or using the environment variable `GIT_USERNAME`.
or using the environment variable `GIT_TOKEN`.

You can also pass `GIT_USERNAME` and `GIT_PASSWORD` (password being the token) if you want to be explicit about the username.

### Using Standard Input
If running kaniko and using Standard Input build context, you will need to add the docker or kubernetes `-i, --interactive` flag.
Expand Down
6 changes: 6 additions & 0 deletions pkg/buildcontext/git.go
Expand Up @@ -34,6 +34,7 @@ const (

gitAuthUsernameEnvKey = "GIT_USERNAME"
gitAuthPasswordEnvKey = "GIT_PASSWORD"
gitAuthTokenEnvKey = "GIT_TOKEN"
)

var (
Expand Down Expand Up @@ -65,6 +66,11 @@ func (g *Git) UnpackTarFromBuildContext() (string, error) {
func getGitAuth() transport.AuthMethod {
username := os.Getenv(gitAuthUsernameEnvKey)
password := os.Getenv(gitAuthPasswordEnvKey)
token := os.Getenv(gitAuthTokenEnvKey)
if token != "" {
username = token
password = ""
}
if username != "" || password != "" {
return &http.BasicAuth{
Username: username,
Expand Down
22 changes: 22 additions & 0 deletions pkg/buildcontext/git_test.go
Expand Up @@ -149,6 +149,28 @@ func TestGetGitAuth(t *testing.T) {
return
},
},
{
testName: "withToken",
setEnv: func() (expectedValue transport.AuthMethod) {
token := "some-other-token"
_ = os.Setenv(gitAuthTokenEnvKey, token)
expectedValue = &http.BasicAuth{Username: token}
return
},
},
{
testName: "withTokenUsernamePassword",
setEnv: func() (expectedValue transport.AuthMethod) {
username := "foo-user"
token := "some-token-45678"
pass := "some-password-12345"
_ = os.Setenv(gitAuthUsernameEnvKey, username)
_ = os.Setenv(gitAuthPasswordEnvKey, pass)
_ = os.Setenv(gitAuthTokenEnvKey, token)
expectedValue = &http.BasicAuth{Username: token}
return
},
},
}

for _, tt := range tests {
Expand Down

0 comments on commit d83338e

Please sign in to comment.