auto

CLI tools to help facilitate semantic versioning based on GitHub PR labels


Keywords
automation, semantic, release, github, labels, automated, continuos integration, changelog, cli, auto-release, hack, hacktoberfest, jira, publishing, releases, slack
License
MIT
Install
npm install auto@8.0.0-canary.773.10166.0

Documentation

Auto Logo

Generate releases based on semantic version labels on pull requests


CircleCI Codecov npm All Contributors npm Auto Release code style: prettier

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 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

πŸ”¨ 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:

  1. A spaced name
  2. 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:

  1. A spaced name
  2. 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

⭐ react-easy-crop - A React component to crop images/videos with easy interactions

πŸ’… auto Badge πŸ’…

Does your project use auto? Then use our custom badge!

Auto Release

Auto Release

Auto Release

Auto Release

🎨 Prior Art 🎨

auto is inspired by some excellent tech that came before it.

Contributors

Thanks goes to these wonderful people (emoji key):


Adam Dierkens

πŸ’» πŸ“– πŸ€” ⚠️

Andrew Lisowski

πŸ’» πŸ“– πŸ€” πŸš‡ ⚠️ πŸ“

David

πŸš‡ ⚠️ πŸ’» πŸ“–

Orta

πŸ’» πŸ“–

Justin Bennett

πŸ› πŸ’» πŸ“– ⚠️

Alec Larson

πŸ’»

Tyler Krupicka

πŸ’»

Zachary Sherwin

πŸ’» πŸ“– ⚠️

bnigh

πŸ’» πŸ“– ⚠️

su7edja

πŸ’»

Yogesh Khandelwal

πŸ’» ⚠️

Matt Boulanger

πŸ’»

Karen Lo

πŸ“–

James Nail

⚠️ πŸ’»

rdipika94

πŸ“–

Brian Muenzenmeyer

πŸ“– πŸ’»

Sarah van der Laan

πŸ“–

Hannes GΓΌdelhΓΆfer

πŸ’»

Eric Clemmons

πŸ’» πŸ“– ⚠️

Jeremiah Zucker

πŸ“– ⚠️ πŸ’»

Brandon Miller

πŸ’» πŸ“– ⚠️

Harris Borawski

πŸ“– ⚠️ πŸ’»

Shelby Cohen

πŸ“– ⚠️ πŸ’»

Kyle Brown

⚠️ πŸ’»

Till Weisser

πŸ“– ⚠️ πŸ’»

G. Richard Bellamy

πŸ“– πŸ’» ⚠️

Kevin Wolf

πŸ“– ⚠️ πŸ’»

Marty Henderson

πŸ“– ⚠️ πŸ’»

Spencer Hamm

πŸ’»

Lucas Shadler

πŸ’» ⚠️

David Stone

πŸ“– ⚠️ πŸ’»

Lucas Curti

πŸ’»

rachana

πŸ“– ⚠️ πŸ’»

Richard Simpson

πŸ“– ⚠️ πŸ’»

Arturo Silva

πŸ“–

Christy Jacob

πŸ“–

Check your git settings!

πŸ“–

Kendall Gassner

πŸ“– ⚠️ πŸ’»

Drew Cortright

πŸ“– ⚠️ πŸ’»

Philippe Boyd

πŸ“–

Mukul Chaware

πŸ“– ⚠️ πŸ’»

Tim Ottewell

πŸ“– ⚠️ πŸ’»

Andrew Leedham

πŸ“– ⚠️ πŸ’»

Seth Thomas

⚠️ πŸ’»

Evan Lovely

πŸ“–

Dorian MariΓ©

πŸ“–

myndelx

πŸ’»

sentony93

πŸ“– ⚠️ πŸ’»

Kelly Harrop

πŸ“– πŸ’»

Rogerio Angeliski

πŸ“– ⚠️ πŸ’»

Piotr Monwid-Olechnowicz

πŸ’» πŸ“–

John T. Wodder II

πŸ“–

Alexey Alekhin

πŸ“– πŸ’» ⚠️ πŸš‡

Vincent Briglia

πŸ“– ⚠️ πŸ’»

Cameron Yick

⚠️ πŸ’» πŸ“– πŸš‡

Kelvin Nguyen

πŸ’»

Lucas Shadler

πŸ“– ⚠️ πŸ’»

Mathieu Bergeron

πŸ“– ⚠️ πŸ’»

Andreas Weichselbaum

πŸ“– ⚠️ πŸ’»

Torkjel Hongve

πŸ“– ⚠️ πŸ’»

Dalton Scharff

πŸ“– ⚠️ πŸ’»

Corentin Ardeois

πŸ’»

Julien Bouyoud

πŸ“– ⚠️ πŸ’»

Valentin Hervieu

πŸ“– ⚠️ πŸ’»

Ikko Ashimine

πŸ“– ⚠️ πŸ’»

Josh Biddick

πŸ“– πŸ’»

Anton Karpov

⚠️ πŸ’»

Eric Hayes

πŸ“– ⚠️ πŸ’»

Dominik Moritz

πŸ’» ⚠️

Jason T Brown

πŸ“– πŸš‡ ⚠️ πŸ’»

Bruno Nardini

πŸ“– πŸš‡ ⚠️ πŸ’»

Andrey Bozhko

πŸ’»

Adil Malik

πŸ“– πŸš‡ ⚠️ πŸ’»

David Sheldrick

⚠️ πŸ’» πŸ“–

Eskild Diderichsen

πŸ“– ⚠️ πŸ’»

ld-codes

πŸ“– πŸ’»

Chris

πŸ“–

Satish Pokala

πŸ“–

NiccolΓ² Olivieri Achille

⚠️ πŸ’»

Jack Westbrook

πŸ“– ⚠️ πŸ’»

Atte Huhtakangas

πŸ“– ⚠️ πŸ’»

Patrick Ruhkopf

⚠️ πŸ’»

Mark Potnick

⚠️ πŸ’»

MichaelRyanWebber

πŸ’»

Martin Elias

πŸ’»

Ketan Reddy

⚠️ πŸ’»

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.

License

FOSSA Status