Skip to content

Commit 8103d04

Browse files
meringukvanzuijlen
authored andcommitted
fix: GitHub - Support Token File for Git Commands (runatlantis#5067)
Signed-off-by: Henry Muru Paenga <[email protected]> Signed-off-by: kvanzuijlen <[email protected]>
1 parent 2e18262 commit 8103d04

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

server/events/event_parser.go

+21-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"encoding/json"
1818
"fmt"
1919
"net/url"
20+
"os"
2021
"path"
2122
"strings"
2223

@@ -357,6 +358,7 @@ type EventParsing interface {
357358
type EventParser struct {
358359
GithubUser string
359360
GithubToken string
361+
GithubTokenFile string
360362
GitlabUser string
361363
GitlabToken string
362364
GiteaUser string
@@ -372,7 +374,15 @@ type EventParser struct {
372374
func (e *EventParser) ParseAPIPlanRequest(vcsHostType models.VCSHostType, repoFullName string, cloneURL string) (models.Repo, error) {
373375
switch vcsHostType {
374376
case models.Github:
375-
return models.NewRepo(vcsHostType, repoFullName, cloneURL, e.GithubUser, e.GithubToken)
377+
token := e.GithubToken
378+
if e.GithubTokenFile != "" {
379+
content, err := os.ReadFile(e.GithubTokenFile)
380+
if err != nil {
381+
return models.Repo{}, fmt.Errorf("failed reading github token file: %w", err)
382+
}
383+
token = string(content)
384+
}
385+
return models.NewRepo(vcsHostType, repoFullName, cloneURL, e.GithubUser, token)
376386
case models.Gitea:
377387
return models.NewRepo(vcsHostType, repoFullName, cloneURL, e.GiteaUser, e.GiteaToken)
378388
case models.Gitlab:
@@ -626,7 +636,16 @@ func (e *EventParser) ParseGithubPull(logger logging.SimpleLogging, pull *github
626636
// returns a repo into the Atlantis model.
627637
// See EventParsing for return value docs.
628638
func (e *EventParser) ParseGithubRepo(ghRepo *github.Repository) (models.Repo, error) {
629-
return models.NewRepo(models.Github, ghRepo.GetFullName(), ghRepo.GetCloneURL(), e.GithubUser, e.GithubToken)
639+
token := e.GithubToken
640+
if e.GithubTokenFile != "" {
641+
content, err := os.ReadFile(e.GithubTokenFile)
642+
if err != nil {
643+
return models.Repo{}, fmt.Errorf("failed reading github token file: %w", err)
644+
}
645+
token = string(content)
646+
}
647+
648+
return models.NewRepo(models.Github, ghRepo.GetFullName(), ghRepo.GetCloneURL(), e.GithubUser, token)
630649
}
631650

632651
// ParseGiteaRepo parses the response from the Gitea API endpoint that

server/events/event_parser_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
var parser = events.EventParser{
3737
GithubUser: "github-user",
3838
GithubToken: "github-token",
39+
GithubTokenFile: "",
3940
GitlabUser: "gitlab-user",
4041
GitlabToken: "gitlab-token",
4142
AllowDraftPRs: false,

server/server.go

+1
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,7 @@ func NewServer(userConfig UserConfig, config Config) (*Server, error) {
560560
eventParser := &events.EventParser{
561561
GithubUser: userConfig.GithubUser,
562562
GithubToken: userConfig.GithubToken,
563+
GithubTokenFile: userConfig.GithubTokenFile,
563564
GitlabUser: userConfig.GitlabUser,
564565
GitlabToken: userConfig.GitlabToken,
565566
GiteaUser: userConfig.GiteaUser,

0 commit comments

Comments
 (0)