Skip to content

Commit 1c186d1

Browse files
committed
feat: add pre-release flag to GitHub releases
This change adds the ability to mark GitHub releases as pre-releases by: - Adding a new 'pre-release' flag to the upload command - Updating the configuration to support the pre-release option - Implementing the pre-release flag in the GitHub release creation - Adding tests for the pre-release functionality - Updating documentation in README.md
1 parent 4177be1 commit 1c186d1

6 files changed

Lines changed: 31 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ Flags:
106106
--skip-existing Skip upload if release exists
107107
-t, --token string GitHub Auth Token
108108
--make-release-latest bool Mark the created GitHub release as 'latest' (default "true")
109+
--pre-release Mark the release as a pre-release
109110
--packages-with-index Host the package files in the GitHub Pages branch
110111

111112
Global Flags:

cr/cmd/upload.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,5 @@ func init() {
6262
uploadCmd.Flags().Bool("push", false, "Push the chart package to the GitHub Pages branch (must not be set if --pr is set)")
6363
uploadCmd.Flags().Bool("pr", false, "Create a pull request for the chart package against the GitHub Pages branch (must not be set if --push is set)")
6464
uploadCmd.Flags().Bool("packages-with-index", false, "Host the package files in the GitHub Pages branch")
65+
uploadCmd.Flags().Bool("pre-release", false, "Mark the release as a pre-release")
6566
}

pkg/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ type Options struct {
6161
ReleaseNotesFile string `mapstructure:"release-notes-file"`
6262
GenerateReleaseNotes bool `mapstructure:"generate-release-notes"`
6363
MakeReleaseLatest bool `mapstructure:"make-release-latest"`
64+
PreRelease bool `mapstructure:"pre-release"`
6465
PackagesWithIndex bool `mapstructure:"packages-with-index"`
6566
}
6667

pkg/github/github.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ type Release struct {
3636
Commit string
3737
GenerateReleaseNotes bool
3838
MakeLatest string
39+
PreRelease bool
3940
}
4041

4142
type Asset struct {
@@ -111,6 +112,7 @@ func (c *Client) CreateRelease(_ context.Context, input *Release) error {
111112
TargetCommitish: &input.Commit,
112113
GenerateReleaseNotes: &input.GenerateReleaseNotes,
113114
MakeLatest: &input.MakeLatest,
115+
Prerelease: &input.PreRelease,
114116
}
115117

116118
release, _, err := c.Repositories.CreateRelease(context.TODO(), c.owner, c.repo, req)

pkg/releaser/releaser.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ func (r *Releaser) CreateReleases() error {
328328
Commit: r.config.Commit,
329329
GenerateReleaseNotes: r.config.GenerateReleaseNotes,
330330
MakeLatest: strconv.FormatBool(r.config.MakeReleaseLatest),
331+
PreRelease: r.config.PreRelease,
331332
}
332333
provFile := fmt.Sprintf("%s.prov", p)
333334
if _, err := os.Stat(provFile); err == nil {

pkg/releaser/releaser_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
362362
version string
363363
commit string
364364
latest string
365+
preRelease bool
365366
Releaser *Releaser
366367
error bool
367368
}{
@@ -372,6 +373,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
372373
version: "0.1.0",
373374
commit: "",
374375
latest: "true",
376+
preRelease: false,
375377
Releaser: &Releaser{
376378
config: &config.Options{
377379
PackagePath: "testdata/does-not-exist",
@@ -389,6 +391,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
389391
version: "0.1.0",
390392
commit: "",
391393
latest: "true",
394+
preRelease: false,
392395
Releaser: &Releaser{
393396
config: &config.Options{
394397
PackagePath: "testdata/release-packages",
@@ -406,6 +409,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
406409
version: "0.1.0",
407410
commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
408411
latest: "true",
412+
preRelease: false,
409413
Releaser: &Releaser{
410414
config: &config.Options{
411415
PackagePath: "testdata/release-packages",
@@ -423,6 +427,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
423427
version: "0.1.0",
424428
commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
425429
latest: "true",
430+
preRelease: false,
426431
Releaser: &Releaser{
427432
config: &config.Options{
428433
PackagePath: "testdata/release-packages",
@@ -434,6 +439,25 @@ func TestReleaser_CreateReleases(t *testing.T) {
434439
},
435440
error: false,
436441
},
442+
{
443+
name: "valid-package-with-pre-release",
444+
packagePath: "testdata/release-packages",
445+
chart: "test-chart",
446+
version: "0.1.0",
447+
commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
448+
latest: "true",
449+
preRelease: true,
450+
Releaser: &Releaser{
451+
config: &config.Options{
452+
PackagePath: "testdata/release-packages",
453+
Commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
454+
PackagesWithIndex: false,
455+
MakeReleaseLatest: true,
456+
PreRelease: true,
457+
},
458+
},
459+
error: false,
460+
},
437461
}
438462
for _, tt := range tests {
439463
t.Run(tt.name, func(t *testing.T) {
@@ -466,6 +490,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
466490
assert.Equal(t, assetPath, fakeGitHub.release.Assets[0].Path)
467491
assert.Equal(t, tt.commit, fakeGitHub.release.Commit)
468492
assert.Equal(t, tt.latest, fakeGitHub.release.MakeLatest)
493+
assert.Equal(t, tt.preRelease, fakeGitHub.release.PreRelease)
469494
assert.Equal(t, tt.Releaser.config.Commit, fakeGitHub.release.Commit)
470495
if !tt.Releaser.config.PackagesWithIndex {
471496
fakeGit.AssertNumberOfCalls(t, "AddWorktree", 0)

0 commit comments

Comments
 (0)