mirror of
https://github.com/go-task/task.git
synced 2025-05-13 22:16:31 +02:00
feat: better release task
This commit is contained in:
parent
fb3c64c46e
commit
f35e51e4e5
47
Taskfile.yml
47
Taskfile.yml
@ -123,10 +123,53 @@ tasks:
|
|||||||
cmds:
|
cmds:
|
||||||
- go install github.com/goreleaser/goreleaser@latest
|
- go install github.com/goreleaser/goreleaser@latest
|
||||||
|
|
||||||
release:
|
release:*:
|
||||||
desc: Prepare the project for a new release
|
desc: Prepare the project for a new release
|
||||||
|
summary: |
|
||||||
|
This task will do the following:
|
||||||
|
|
||||||
|
- Update the version and date in the CHANGELOG.md file
|
||||||
|
- Update the version in the package.json and package-lock.json files
|
||||||
|
- Copy the latest docs to the "current" version on the website
|
||||||
|
- Commit the changes
|
||||||
|
- Create a new tag
|
||||||
|
- Push the commit/tag to the repository
|
||||||
|
- Create a GitHub release
|
||||||
|
|
||||||
|
To use the task, simply run "task release:<version>" where "<version>" is is one of:
|
||||||
|
|
||||||
|
- "major" - Bumps the major number
|
||||||
|
- "minor" - Bumps the minor number
|
||||||
|
- "patch" - Bumps the patch number
|
||||||
|
- A semver compatible version number (e.g. "1.2.3")
|
||||||
|
vars:
|
||||||
|
VERSION:
|
||||||
|
sh: "go run ./cmd/release --version {{index .MATCH 0}}"
|
||||||
|
COMPLETE_MESSAGE: |
|
||||||
|
Creating release with GoReleaser: https://github.com/go-task/task/actions/workflows/release.yml
|
||||||
|
|
||||||
|
Please wait for the CI to finish and then do the following:
|
||||||
|
|
||||||
|
- Copy the changelog for v{{.VERSION}} to the GitHub release
|
||||||
|
- Publish the package to NPM with `task npm:publish`
|
||||||
|
- Update and push the snapcraft manifest in https://github.com/go-task/snap/blob/main/snap/snapcraft.yaml
|
||||||
|
preconditions:
|
||||||
|
- sh: test $(git rev-parse --abbrev-ref HEAD) = "main"
|
||||||
|
msg: "You must be on the main branch to release"
|
||||||
|
- sh: "[[ -z $(git diff --shortstat main) ]]"
|
||||||
|
msg: "You must have a clean working tree to release"
|
||||||
|
prompt: "Are you sure you want to release version {{.VERSION}}?"
|
||||||
cmds:
|
cmds:
|
||||||
- go run ./cmd/release {{.CLI_ARGS}}
|
- cmd: echo "Releasing v{{.VERSION}}"
|
||||||
|
silent: true
|
||||||
|
- "go run ./cmd/release {{.VERSION}}"
|
||||||
|
- "git add --all"
|
||||||
|
- "git commit -m v{{.VERSION}}"
|
||||||
|
- "git push"
|
||||||
|
- "git tag v{{.VERSION}}"
|
||||||
|
- "git push origin tag v{{.VERSION}}"
|
||||||
|
- cmd: printf "%s" '{{.COMPLETE_MESSAGE}}'
|
||||||
|
silent: true
|
||||||
|
|
||||||
npm:publish:
|
npm:publish:
|
||||||
desc: Publish release to npm
|
desc: Publish release to npm
|
||||||
|
@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
"github.com/Masterminds/semver/v3"
|
"github.com/Masterminds/semver/v3"
|
||||||
"github.com/otiai10/copy"
|
"github.com/otiai10/copy"
|
||||||
|
"github.com/spf13/pflag"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -25,6 +26,16 @@ var (
|
|||||||
versionRegex = regexp.MustCompile(`(?m)^ "version": "\d+\.\d+\.\d+",$`)
|
versionRegex = regexp.MustCompile(`(?m)^ "version": "\d+\.\d+\.\d+",$`)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Flags
|
||||||
|
var (
|
||||||
|
versionFlag bool
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
pflag.BoolVarP(&versionFlag, "version", "v", false, "resolved version number")
|
||||||
|
pflag.Parse()
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := release(); err != nil {
|
if err := release(); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
@ -33,7 +44,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func release() error {
|
func release() error {
|
||||||
if len(os.Args) != 2 {
|
if len(pflag.Args()) != 1 {
|
||||||
return errors.New("error: expected version number")
|
return errors.New("error: expected version number")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,11 +53,14 @@ func release() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := bumpVersion(version, os.Args[1]); err != nil {
|
if err := bumpVersion(version, pflag.Arg(0)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if versionFlag {
|
||||||
fmt.Println(version)
|
fmt.Println(version)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
if err := changelog(version); err != nil {
|
if err := changelog(version); err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user