We are excited to announce the release of auto 8.0.0!
This release brings a new command next, a new use for shipit, more powerful label configuration, and more.
If you are unfamiliar, auto is a CLI tool which helps you version your code and automate any part of your release pipeline.
auto's main use is for automating your versioning with semantic versioning and GitHub pull request labels.
It handles determining the next version, creating changelogs, publishing to package managers, publishing GitHub Releases, and so much more through plugins.
If you aren't already using auto you can either install it through npm:
npm install autoOr if you are publishing to something other than npm:
# On OSX
brew tap intuit/auto https://github.com/intuit/auto
brew install auto
# Or other OSs
# Download a platform specific version of auto
curl -vkL -o - https://github.com/intuit/auto/releases/download/v8.0.0/auto-linux.gz | gunzip > ~/auto
# Make auto executable
chmod a+x ~/autoThis new command will make a preview release of your code. This entails:
- Creating a prerelease on package management platform (supported by 
npmandgit-tagplugins) - Creating a tag and "Pre Release" on GitHub releases page
 
The only prerelease branch auto comes configured with is next.
You can configure as many branches as you want with the prereleaseBranches .autorc option.
If your package manager plugin supports release tags, such as the npm plugin, auto will publish the prerelease branch to a tag of the same name.
Calling auto next from a one of these branches will publish a prerelease, otherwise it will publish to your default prerelease branch/tag.
Given the following configuration:
{
  "prereleaseBranches": ["beta"]
}Run auto next from beta branch => Publish prerelease to beta tag.
Run auto next from feature branch => Publish prerelease to beta tag.
The shipit command will now also publish a prerelease when ran from a prerelease branch. You can use this in a few different ways:
- Two release branches: 
masterandnext - Without 
nextBranch (--only-graduate-with-release-label) - Multiple 
nextBranches (ex:alpha,beta,rc) - Feature Pre-releases
 
Read more here.
Label configuration just got a whole lot simpler π.
- 
Labels can now only be supplied as an array of label objects.
{ "labels": [ { "releaseType": "major", "name": "Version: Major" }, { "releaseType": "minor", "name": "Version: Minor" }, { "releaseType": "patch", "name": "Version: Patch" } ] } - 
Instead of using
skipReleaseLabelsjust set the label'stypetoskip{ "labels": [{ "releaseType": "skip", "name": "NO!" }] } - 
Overwrite default labels using
overwrite{ "labels": [ { "releaseType": "major", "name": "Version: Major", "overwrite": true } ] } - 
Add
nonereleaseType. This will act as askip-releaseunless paired with a SEMVER label{ "labels": [{ "releaseType": "none", "name": "documentation" }] } - 
Changed
titletochangelogTitle.{ "labels": [{ "changelogTitle": "New Docs Yo!", "name": "documentation" }] } 
You might want to upload multiple files or you might not know the file-name (ex: a vscode extension w/ a version number in the name), but you know the pattern of the filenames that you want to upload. So now you can use globs!
{
  "plugins": [["upload-assets", ["./path/**/to/*.file"]]]
}Using -w for very verbose logs was a very odd choice on my part (two vs next to each other look like a w π).
Instead you can now just add another -v and get the very verbose logs!
# old
auto shipit -w
# new
auto shipit -vv
# or
auto shipit --verbose --verboseWe hope you enjoy the new ways you can release your code!
β Andrew Lisowski and the auto Team