From db7af5388d808f70b9d83c443f8d41d378ba4c33 Mon Sep 17 00:00:00 2001 From: Jorin Vogel Date: Thu, 5 Oct 2017 15:47:29 +0200 Subject: [PATCH] feat: Add prerelease option Add an config option to `release` section to set a release at not ready for production. Closes #384 --- config/config.go | 5 +++-- docs/115-release.md | 4 ++++ internal/client/github.go | 9 +++++---- pipeline/release/release.go | 14 +++++++------- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/config/config.go b/config/config.go index d294c3339..ee2922d3f 100644 --- a/config/config.go +++ b/config/config.go @@ -116,8 +116,9 @@ type Archive struct { // Release config used for the GitHub release type Release struct { - GitHub Repo `yaml:",omitempty"` - Draft bool `yaml:",omitempty"` + GitHub Repo `yaml:",omitempty"` + Draft bool `yaml:",omitempty"` + Prerelease bool `yaml:",omitempty"` // Capture all undefined fields and should be empty after loading XXX map[string]interface{} `yaml:",inline"` diff --git a/docs/115-release.md b/docs/115-release.md index b77e2f753..d94933256 100644 --- a/docs/115-release.md +++ b/docs/115-release.md @@ -19,6 +19,10 @@ release: # If set to true, will not auto-publish the release. # Default is false. draft: true + + # If set to true, will mark the release as not ready for production. + # Default is false. + prerelease: true ``` ## Custom release notes diff --git a/internal/client/github.go b/internal/client/github.go index ab22d541d..99c7d46ac 100644 --- a/internal/client/github.go +++ b/internal/client/github.go @@ -84,10 +84,11 @@ func (c *githubClient) CreateFile( func (c *githubClient) CreateRelease(ctx *context.Context, body string) (releaseID int, err error) { var release *github.RepositoryRelease var data = &github.RepositoryRelease{ - Name: github.String(ctx.Git.CurrentTag), - TagName: github.String(ctx.Git.CurrentTag), - Body: github.String(body), - Draft: github.Bool(ctx.Config.Release.Draft), + Name: github.String(ctx.Git.CurrentTag), + TagName: github.String(ctx.Git.CurrentTag), + Body: github.String(body), + Draft: github.Bool(ctx.Config.Release.Draft), + Prerelease: github.Bool(ctx.Config.Release.Prerelease), } release, _, err = c.client.Repositories.GetReleaseByTag( ctx, diff --git a/pipeline/release/release.go b/pipeline/release/release.go index 65c2a62f0..4336307c5 100644 --- a/pipeline/release/release.go +++ b/pipeline/release/release.go @@ -23,14 +23,14 @@ func (Pipe) Description() string { // Run the pipe func (Pipe) Run(ctx *context.Context) error { - client, err := client.NewGitHub(ctx) + c, err := client.NewGitHub(ctx) if err != nil { return err } - return doRun(ctx, client) + return doRun(ctx, c) } -func doRun(ctx *context.Context, client client.Client) error { +func doRun(ctx *context.Context, c client.Client) error { if !ctx.Publish { return pipeline.Skip("--skip-publish is set") } @@ -41,7 +41,7 @@ func doRun(ctx *context.Context, client client.Client) error { if err != nil { return err } - releaseID, err := client.CreateRelease(ctx, body.String()) + releaseID, err := c.CreateRelease(ctx, body.String()) if err != nil { return err } @@ -54,13 +54,13 @@ func doRun(ctx *context.Context, client client.Client) error { defer func() { <-sem }() - return upload(ctx, client, releaseID, artifact) + return upload(ctx, c, releaseID, artifact) }) } return g.Wait() } -func upload(ctx *context.Context, client client.Client, releaseID int, artifact string) error { +func upload(ctx *context.Context, c client.Client, releaseID int, artifact string) error { var path = filepath.Join(ctx.Config.Dist, artifact) file, err := os.Open(path) if err != nil { @@ -69,5 +69,5 @@ func upload(ctx *context.Context, client client.Client, releaseID int, artifact defer func() { _ = file.Close() }() _, name := filepath.Split(path) log.WithField("file", file.Name()).WithField("name", name).Info("uploading to release") - return client.Upload(ctx, releaseID, name, file) + return c.Upload(ctx, releaseID, name, file) }