README
CI Pilot 👨🏿✈️
Automate your CI pipeline with ease - you'll find binaries and functions that help you simplify the process.
Overview
CI Pilot aims to provide direction and guidance towards setting up the ideal software delivery pipeline as well as fully automating it.
Production releases
There are plenty of incredible players on the market that aid in production release management and publishing, and CI Pilot doesn't aim to compete with them, rather to bridge the gap and standardise their use in coordination with your Git methodology (focusing on GitHubFlow and GitFlow).
Pre-production releases
Looking at the most well used release management tools (semantic-release, standard-version, etc.), there's a clear lack of in-depth focus on how to go about producing internal packages during the development life-cycle, pre-production. CI Pilot steps in with out of the box support for the following:
- Feature/Bug-Fix/Hot-Fix branch alpha releases, Git tagging the branch and publishing a package
- For GitFlow adopters, Alpha releases, Git tagging the development branch and publishing a package
Getting started
Install
npm:
npm i --save-dev ci-pilot
Yarn:
yarn add -D ci-pilot
Commands
Supported commands:
publish
release-gh-gf
helper
Publish
ci-pilot publish [stage]
Publish a feature branch
ci-pilot publish feature
Release GitHub-GitFlow
ci-pilot release-gh-fg [step]
Cut a new release
ci-pilot release-gh-gf cut
Stage a release via a Git tag
ci-pilot release-gh-gf stage
Finish a release
ci-pilot release-gh-gf finish
Additional command-line flags:
--auto-bump-change-log
or-a
: This flag when specified will use standard-version under the hood to generate the next release version based on the Conventional Commits preset chosen, bump thepackage.json
version, generate or update the change log, and Git tag the commit with the version.--merge-msg-skip-ci
or-m
: This flag will suffix GitFlow merge commits with[skip ci]
, a common convention used to avoid additional jobs being triggered in your CI pipeline.
Scrap a release
ci-pilot release-gh-gf scrap
Helper
ci-pilot helper [helper]
Cut a new release
ci-pilot helper package-name
Stage a release via a Git tag
ci-pilot helper is-repo-gitflow
Configure
Create a file called ci-pilot.config.json
in the root of the repository, and populate it with the following:
Default (fully expanded):
{
"packageManager": "npm",
"gitMethodology": "...",
"branchNames": {
"base": "master",
"feature": "feature",
"hotfix": "hotfix",
"development": "develop",
"bugfix": "bugfix"
},
"release": {
"preset": "angular",
"tagPrefix": "v"
},
"gitBranchSeparator": "/",
"tagSeparator": "#"
}
Alternate example:
{
"gitMethodology": "...",
"branchNames": {
"base": "main",
"feature": "topic",
"gitBranchSeparator": "-",
"tagSeparator": "