Releasing
The release process of Task is done with the help of GoReleaser. You can test the release process locally by calling the goreleaser:test task of the Taskfile.
GitHub Actions should release artifacts automatically when a new Git tag is pushed to main branch (raw executables and DEB and RPM packages).
Raw executables can also be reproduced and verified locally by checking out a specific tag and calling goreleaser build, using the Go version defined in the above GitHub Actions.
Website
task release:<version> promotes the documentation before tagging: the docs in website/src/next/docs, their sidebar and the next-* JSON schemas are copied over their published counterparts, so the released tag carries the docs of the version it ships. The release workflow then runs task website:deploy:prod.
Because taskfile.dev is built from the latest copy, it can be redeployed at any time between releases - to publish a blog post or a documentation fix - without exposing the docs of unreleased features:
git checkout main && git pull
task website:deploy:prodPackage managers
GoReleaser will automatically publish the release to most package managers:
- Cloudsmith (DEB and RPM repositories)
- Homebrew
- npm
- winget
A single package manager still require manual steps:
- Snapcraft:
- Update the
version:field on snapcraft.yaml - Trigger a new build on Snapcraft -> Builds
- Once finished, move the new build to "stable" on Snapcraft -> Releases
- Update the
These package managers are updated automatically by the community: