<div align="center">
<img
src="docs/public/readme-logo.png"
alt="Auto Logo"
width="300px"
padding="40px"
/>
<br />
<br />
<p>Generate releases based on semantic version labels on pull requests</p>
</div>
<div align="center"><a href="https://circleci.com/gh/intuit/auto"><img src="https://img.shields.io/circleci/project/github/intuit/auto/main.svg?style=flat-square&logo=circleci" alt="CircleCI" /></a> <a href="https://codecov.io/gh/intuit/auto"><img src="https://img.shields.io/codecov/c/github/intuit/auto.svg?style=flat-square&logo=codecov" alt="Codecov" /></a> <a href="https://www.npmjs.com/package/auto"><img src="https://img.shields.io/npm/v/auto.svg?style=flat-square&logo=npm" alt="npm" /></a> <a href="#contributors"><img src="https://img.shields.io/badge/all_contributors-30-orange.svg?style=flat-square&logo=github" alt="All Contributors" /></a> <a href="https://www.npmjs.com/package/auto"><img src="https://img.shields.io/npm/dt/auto.svg?style=flat-square&logo=npm" alt="npm" /></a> <a href="https://github.com/intuit/auto"><img src="https://img.shields.io/badge/release-auto.svg?style=flat-square&colorA=888888&colorB=9B065A&label=auto&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAACzElEQVR4AYXBW2iVBQAA4O+/nLlLO9NM7JSXasko2ASZMaKyhRKEDH2ohxHVWy6EiIiiLOgiZG9CtdgG0VNQoJEXRogVgZYylI1skiKVITPTTtnv3M7+v8UvnG3M+r7APLIRxStn69qzqeBBrMYyBDiL4SD0VeFmRwtrkrI5IjP0F7rjzrSjvbTqwubiLZffySrhRrSghBJa8EBYY0NyLJt8bDBOtzbEY72TldQ1kRm6otana8JK3/kzN/3V/NBPU6HsNnNlZAz/ukOalb0RBJKeQnykd7LiX5Fp/YXuQlfUuhXbg8Di5GL9jbXFq/tLa86PpxPhAPrwCYaiorS8L/uuPJh1hZFbcR8mewrx0d7JShr3F7pNW4vX0GRakKWVk7taDq7uPvFWw8YkMcPVb+vfvfRZ1i7zqFwjtmFouL72y6C/0L0Ie3GvaQXRyYVB3YZNE32/+A/D9bVLcRB3yw3hkRCdaDUtFl6Ykr20aaLvKoqIXUdbMj6GFzAmdxfWx9iIRrkDr1f27cFONGMUo/gRI/jNbIMYxJOoR1cY0OGaVPb5z9mlKbyJP/EsdmIXvsFmM7Ql42nEblX3xI1BbYbTkXCqRnxUbgzPo4T7sQBNeBG7zbAiDI8nWfZDhQWYCG4PFr+HMBQ6l5VPJybeRyJXwsdYJ/cRnlJV0yB4ZlUYtFQIkMZnst8fRrPcKezHCblz2IInMIkPzbbyb9mW42nWInc2xmE0y61AJ06oGsXL5rcOK1UdCbEXiVwNXsEy/6+EbaiVG8eeEAfxvaoSBnCH61uOD7BS1Ul8ESHBKWxCrdyd6EYNKihgEVrwOAbQruoytuBYIFfAc3gVN6iawhjKyNCEpYhVJXgbOzARyaU4hCtYizq5EI1YgiUoIlT1B7ZjByqmRWYbwtdYjoWoN7+LOIQefIqKawLzK6ID69GGpQgwhhEcwGGUzfEPAiPqsCXadFsAAAAASUVORK5CYII=" alt="Auto Release" /></a> <a href="https://app.snyk.io/org/hipstersmoothie/project/f32a03c3-9884-4fc9-9ac5-525c48799d4c"><img src="https://img.shields.io/snyk/vulnerabilities/github/intuit/auto/package.json.svg?style=flat-square&logo=snyk&logoColor=lightgrey" alt="" /></a> <a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fintuit%2Fauto?ref=badge_shield" alt="FOSSA Status"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fintuit%2Fauto.svg?type=shield"/></a>
<a href="https://github.com/prettier/prettier"><img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square&logo=producthunt" alt="code style: prettier" /></a></div>
<br />
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.
:pushpin: Plugins :pushpin:
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 through npm
)
- 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
- protected-branch - Handle Github branch protections and avoid run auto with an admin token
:hammer: Start Developing :hammer:
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"
:beers: Contributing :beers:
Feel free to make an issue or open a pull request!
Make sure to read our code of conduct.
:rocket: Projects Using auto
:rocket:
:star: Storybookjs design-system - Storybook's official design system
:star: space-kit - Home base for Apollo's design system
:star: react-glider - A react wrapper for glider.js
:star: reaction - Artsy’s React Components
:star: emission - Artsy’s React Native Components
:star: webpack-inject-plugin - A webpack plugin to dynamically inject code into the bundle.
:star: html-webpack-insert-text-plugin - Insert text into the head or body of your HTML
:star: react-easy-crop - A React component to crop images/videos with easy interactions
:nail_care: auto
Badge :nail_care:
Does your project use auto
? Then use our custom badge!



[![Auto