Automated releases powered by pull request labels. Streamline your release workflow and publish constantly! auto
is meant to be run in a continuous integration (CI) environment, but all the commands work locally as well.
Release Features:
- Calculate semantic version bumps from PRs
- Skip a release with the
skip-release
label - Publish canary releases from PRs or locally
- Generate changelogs with fancy headers, authors, and monorepo package association
- Use labels to create new changelog sections
- Generate a GitHub release
Pull Request Interaction Features:
- Get the labels for a PR
- Set the status of a PR
- Check that a pull request has a SemVer label
- Comment on a PR with markdown
- Update the PR body with contextual build metadata
Visit the docs for more information.
π Plugins π
Auto has an extensive plugin system and wide variety of official plugins. Make a PR to add yours!
Package Managers:
- brew - Automate the creation of Homebrew formulae
- chrome - Publish code to Chrome Web Store
- cocoapods - Version your CocoaPod, and push to your specs repository!
- crates - Publish Rust crates
- docker - Publish images with Docker
- gem - Publish ruby gems
- git-tag - Manage your projects version through just a git tag (
default
when used with binary) - gradle - Publish code with gradle
- maven - Publish code with maven
- npm - Publish code to npm (
default
when installed throughnpm
) - sbt - Publish Scala projects with sbt
- vscode - Publish code to the VSCode extension marketplace
Extra Functionality:
- all-contributors - Automatically add contributors as changelogs are produced using all-contributors-cli
- conventional-commits - Parse conventional commit messages for version bumps
- exec - Tap into hooks and run scripts on the terminal
- first-time-contributor - Thank first time contributors for their work right in your release notes.
- gh-pages - Automate publishing to your gh-pages documentation website
- jira - Include Jira story links in the changelog
- magic-zero - A plugin that closely adheres to semver versioning for 0.0.x and 0.x.y releases
- microsoft-teams - Post your release notes to a Microsoft teams channel
- omit-commits - Ignore commits base on name, email, subject, labels, and username
- omit-release-notes - Ignore release notes in PRs made by certain accounts
- pr-body-labels - Allow outside contributors to indicate what semver label should be applied to the Pull Request
- released - Add a
released
label to published PRs, comment with the version it's included in and comment on the issues the PR closes - s3 - Post your built artifacts to amazon s3
- slack - Post release notes to slack
- twitter - Post release notes to twitter
- upload-assets - Add extra assets to the release
π¨ Start Developing π¨
To get set up, fork and clone the project then run the following command:
yarn
Build/Typecheck
You must build at least once before running the tests or lint.
yarn build
In watch mode:
yarn start
Installing the binary
Install the bundled binary onto your system. This requires the project to be built or in watch mode.
yarn install-mac
If running this for the first time you may also have to run the following command.
chmod +x /usr/local/bin/auto
Cleaning
yarn clean
Linting
yarn lint
Testing
yarn test
Run the docs
yarn docs
Create a new plugin
Get started developing a new plugin in the monorepo in seconds.
The two arguments are:
- A spaced name
- A description
yarn create:plugin my-plugin "Do something really cool"
Create a new package
Get started developing a new package in the monorepo in seconds.
The two arguments are:
- A spaced name
- A description
yarn create:package my-package "Do something really cool"
π» Contributing π»
Feel free to make an issue or open a pull request!
Make sure to read our code of conduct.
π Projects Using auto
π
β Storybookjs design-system - Storybook's official design system
β space-kit - Home base for Apollo's design system
β react-glider - A react wrapper for glider.js
β reaction - Artsyβs React Components
β emission - Artsyβs React Native Components
β webpack-inject-plugin - A webpack plugin to dynamically inject code into the bundle.
β html-webpack-insert-text-plugin - Insert text into the head or body of your HTML
π
auto
Badge π
Does your project use auto
? Then use our custom badge!
π¨ Prior Art π¨
auto
is inspired by some excellent tech that came before it.
- github-semantic-version - Automated semantic version releases powered by Github Issues.
- lerna-changelog - π PR-based changelog generator with monorepo support
Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Adding a Contributor
To add a contributor run yarn contributors:add
, choose "Add new contributor or edit contribution type" and follow the prompts.