Skip to content

Commit 8658a41

Browse files
committed
feat(releaser): add support for custom krew index repo
Signed-off-by: Casale, Robert <robert.casale@fmr.com>
1 parent ad6e92e commit 8658a41

File tree

4 files changed

+44
-12
lines changed

4 files changed

+44
-12
lines changed

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,12 @@ $ docker run -v /path/to/your/template-file.yaml:/tmp/template-file.yaml ghcr.io
7070

7171
# Inputs for the action
7272

73-
| Key | Default Value | Description |
74-
| ------------------ | ---------------------- | ------------------------------------------------------------------------------------ |
75-
| workdir | `env.GITHUB_WORKSPACE` | Overrides the GitHub workspace directory path |
76-
| krew_template_file | `.krew.yaml` | The path to template file relative to $workdir. e.g. templates/misc/plugin-name.yaml |
73+
| Key | Default Value | Description |
74+
| ------------------------------ | ---------------------- | ------------------------------------------------------------------------------------ |
75+
| workdir | `env.GITHUB_WORKSPACE` | Overrides the GitHub workspace directory path |
76+
| krew_template_file | `.krew.yaml` | The path to template file relative to $workdir. e.g. templates/misc/plugin-name.yaml |
77+
| upstream_krew_index_repo_owner | `kubernetes-sigs` | Overrides the GitHub owner of the Krew index, defaults to kubernetes-sigs |
78+
| upstream_krew_index_repo_name | `krew-index` | Overrides the GitHub repository of the Krew index, defaults to krew-index |
7779

7880
# Limitations of krew-release-bot
7981

action.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,11 @@ inputs:
99
description: "Working directory, defaults to env.GITHUB_WORKSPACE"
1010
krew_template_file:
1111
description: "the path to template file relative to $workdir. e.g. templates/misc/plugin-name.yaml. defaults to .krew.yaml"
12+
upstream_krew_index_repo_owner:
13+
description: 'The owner of the Krew index repository'
14+
required: false
15+
default: kubernetes-sigs
16+
upstream_krew_index_repo_name:
17+
description: 'The name of the Krew index repository'
18+
required: false
19+
default: krew-index

pkg/krew/repos.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const (
99

1010
//GetKrewIndexRepoName returns the krew-index repo name
1111
func GetKrewIndexRepoName() string {
12-
override := os.Getenv("UPSTREAM_KREW_INDEX_REPO_NAME")
12+
override := os.Getenv("INPUT_UPSTREAM_KREW_INDEX_REPO_NAME")
1313
if override != "" {
1414
return override
1515
}
@@ -19,7 +19,7 @@ func GetKrewIndexRepoName() string {
1919

2020
//GetKrewIndexRepoOwner returns the krew-index repo owner
2121
func GetKrewIndexRepoOwner() string {
22-
override := os.Getenv("UPSTREAM_KREW_INDEX_REPO_OWNER")
22+
override := os.Getenv("INPUT_UPSTREAM_KREW_INDEX_REPO_OWNER")
2323
if override != "" {
2424
return override
2525
}

pkg/releaser/git.go

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,16 @@ const (
3030
// CloneRepos clones the repo
3131
func (r *Releaser) cloneRepos(dir string, request *source.ReleaseRequest) (*ugit.Repository, error) {
3232
logrus.Infof("Cloning %s", r.UpstreamKrewIndexRepoCloneURL)
33+
client := getGitHubClient(r.Token)
34+
remoteRepo, err := r.getRepo(client, r.UpstreamKrewIndexRepoOwner, r.UpstreamKrewIndexRepo)
35+
if err != nil {
36+
return nil, err
37+
}
38+
3339
repo, err := ugit.PlainClone(dir, false, &ugit.CloneOptions{
3440
URL: r.UpstreamKrewIndexRepoCloneURL,
3541
Progress: os.Stdout,
36-
ReferenceName: plumbing.Master,
42+
ReferenceName: plumbing.ReferenceName(*remoteRepo.DefaultBranch),
3743
SingleBranch: true,
3844
Auth: r.getAuth(),
3945
RemoteName: OriginNameUpstream,
@@ -123,23 +129,39 @@ func getPushRefSpec(branchName string) string {
123129
return fmt.Sprintf("refs/heads/%s:refs/heads/%s", branchName, branchName)
124130
}
125131

132+
func getGitHubClient(token string) *github.Client {
133+
ts := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})
134+
tc := oauth2.NewClient(context.TODO(), ts)
135+
return github.NewClient(tc)
136+
}
137+
138+
func (r *Releaser) getRepo(client *github.Client, owner string, repoName string) (*github.Repository, error) {
139+
repo, _, err := client.Repositories.Get(context.TODO(), owner, repoName)
140+
if err != nil {
141+
return nil, err
142+
}
143+
return repo, nil
144+
}
145+
126146
// SubmitPR submits the PR
127147
func (r *Releaser) submitPR(request *source.ReleaseRequest) (string, error) {
128-
ts := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: r.Token})
129-
tc := oauth2.NewClient(context.TODO(), ts)
130-
client := github.NewClient(tc)
148+
client := getGitHubClient(r.Token)
149+
repo, err := r.getRepo(client, r.UpstreamKrewIndexRepoOwner, r.UpstreamKrewIndexRepo)
150+
if err != nil {
151+
return "", err
152+
}
131153

132154
prr := &github.NewPullRequest{
133155
Title: r.getTitle(request),
134156
Head: r.getHead(request),
135-
Base: github.String("master"),
157+
Base: github.String(*repo.DefaultBranch),
136158
Body: r.getPRBody(request),
137159
}
138160

139161
logrus.Infof("creating pr with title %q, \nhead %q, \nbase %q, \nbody %q",
140162
github.Stringify(r.getTitle(request)),
141163
github.Stringify(r.getHead(request)),
142-
"master",
164+
github.Stringify(*repo.DefaultBranch),
143165
github.Stringify(r.getPRBody(request)),
144166
)
145167

0 commit comments

Comments
 (0)