diff --git a/README.md b/README.md index d291e8d3e..160cdde13 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/pkg/buildcontext/git.go b/pkg/buildcontext/git.go index f0b00fc24..1ca42c35b 100644 --- a/pkg/buildcontext/git.go +++ b/pkg/buildcontext/git.go @@ -34,6 +34,7 @@ const ( gitAuthUsernameEnvKey = "GIT_USERNAME" gitAuthPasswordEnvKey = "GIT_PASSWORD" + gitAuthTokenEnvKey = "GIT_TOKEN" ) var ( @@ -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, diff --git a/pkg/buildcontext/git_test.go b/pkg/buildcontext/git_test.go index cefd7a438..0f86ca166 100644 --- a/pkg/buildcontext/git_test.go +++ b/pkg/buildcontext/git_test.go @@ -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 {