diff --git a/README.md b/README.md index 5c57d482..3810d591 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ Flags: --release-notes-file string Markdown file with chart release notes. If it is set to empty string, or the file is not found, the chart description will be used instead. The file is read from the chart package --skip-existing Skip upload if release exists -t, --token string GitHub Auth Token + --make-release-latest bool Mark the created GitHub release as 'latest' (default "true") Global Flags: --config string Config file (default is $HOME/.cr.yaml) diff --git a/cr/cmd/upload.go b/cr/cmd/upload.go index 545c188d..a01c4fd1 100644 --- a/cr/cmd/upload.go +++ b/cr/cmd/upload.go @@ -56,4 +56,5 @@ func init() { uploadCmd.Flags().String("release-notes-file", "", "Markdown file with chart release notes. "+ "If it is set to empty string, or the file is not found, the chart description will be used instead. The file is read from the chart package") uploadCmd.Flags().Bool("generate-release-notes", false, "Whether to automatically generate the name and body for this release. See https://docs.github.com/en/rest/releases/releases") + uploadCmd.Flags().Bool("make-release-latest", true, "Mark the created GitHub release as 'latest'") } diff --git a/doc/cr_upload.md b/doc/cr_upload.md index d46d057b..1ecbdd05 100644 --- a/doc/cr_upload.md +++ b/doc/cr_upload.md @@ -19,6 +19,7 @@ cr upload [flags] -r, --git-repo string GitHub repository -u, --git-upload-url string GitHub Upload URL (only needed for private GitHub) (default "https://uploads.github.com/") -h, --help help for upload + --make-release-latest Mark the created GitHub release as 'latest' (default true) -o, --owner string GitHub username or organization -p, --package-path string Path to directory with chart packages (default ".cr-release-packages") --release-name-template string Go template for computing release names, using chart metadata (default "{{ .Name }}-{{ .Version }}") diff --git a/pkg/config/config.go b/pkg/config/config.go index 691a7c6c..28bdc375 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -60,6 +60,7 @@ type Options struct { SkipExisting bool `mapstructure:"skip-existing"` ReleaseNotesFile string `mapstructure:"release-notes-file"` GenerateReleaseNotes bool `mapstructure:"generate-release-notes"` + MakeReleaseLatest bool `mapstructure:"make-release-latest"` } func LoadConfiguration(cfgFile string, cmd *cobra.Command, requiredFlags []string) (*Options, error) { diff --git a/pkg/github/github.go b/pkg/github/github.go index 7b1fc2cc..a5ac5d0c 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -35,6 +35,7 @@ type Release struct { Assets []*Asset Commit string GenerateReleaseNotes bool + MakeLatest string } type Asset struct { @@ -109,6 +110,7 @@ func (c *Client) CreateRelease(ctx context.Context, input *Release) error { TagName: &input.Name, TargetCommitish: &input.Commit, GenerateReleaseNotes: &input.GenerateReleaseNotes, + MakeLatest: &input.MakeLatest, } release, _, err := c.Repositories.CreateRelease(context.TODO(), c.owner, c.repo, req) diff --git a/pkg/releaser/releaser.go b/pkg/releaser/releaser.go index 5b1cc80f..2100da96 100644 --- a/pkg/releaser/releaser.go +++ b/pkg/releaser/releaser.go @@ -24,6 +24,7 @@ import ( "net/url" "os" "path/filepath" + "strconv" "strings" "time" @@ -337,6 +338,7 @@ func (r *Releaser) CreateReleases() error { }, Commit: r.config.Commit, GenerateReleaseNotes: r.config.GenerateReleaseNotes, + MakeLatest: strconv.FormatBool(r.config.MakeReleaseLatest), } provFile := fmt.Sprintf("%s.prov", p) if _, err := os.Stat(provFile); err == nil { diff --git a/pkg/releaser/releaser_test.go b/pkg/releaser/releaser_test.go index 56aa667d..739c0aeb 100644 --- a/pkg/releaser/releaser_test.go +++ b/pkg/releaser/releaser_test.go @@ -301,6 +301,7 @@ func TestReleaser_CreateReleases(t *testing.T) { chart string version string commit string + latest string error bool }{ { @@ -309,6 +310,7 @@ func TestReleaser_CreateReleases(t *testing.T) { "test-chart", "0.1.0", "", + "true", true, }, { @@ -317,6 +319,7 @@ func TestReleaser_CreateReleases(t *testing.T) { "test-chart", "0.1.0", "", + "true", false, }, { @@ -325,6 +328,7 @@ func TestReleaser_CreateReleases(t *testing.T) { "test-chart", "0.1.0", "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c", + "true", false, }, } @@ -336,6 +340,7 @@ func TestReleaser_CreateReleases(t *testing.T) { PackagePath: tt.packagePath, Commit: tt.commit, ReleaseNameTemplate: "{{ .Name }}-{{ .Version }}", + MakeReleaseLatest: true, }, github: fakeGitHub, } @@ -355,6 +360,7 @@ func TestReleaser_CreateReleases(t *testing.T) { assert.Len(t, fakeGitHub.release.Assets, 1) assert.Equal(t, assetPath, fakeGitHub.release.Assets[0].Path) assert.Equal(t, tt.commit, fakeGitHub.release.Commit) + assert.Equal(t, tt.latest, fakeGitHub.release.MakeLatest) fakeGitHub.AssertNumberOfCalls(t, "CreateRelease", 1) } })