An open API service indexing awesome lists of open source software.

https://github.com/toucantoco/releaseman

Git flow + GitHub PRs = <3
https://github.com/toucantoco/releaseman

Last synced: 3 months ago
JSON representation

Git flow + GitHub PRs = <3

Awesome Lists containing this project

README

        

# Releaseman
Git flow + GitHub PRs = <3

## Installation
- Copy `src/defaults.json.dist` as `src/defaults.json`
- Complete the new file with your defaults (See [options](#options))
- Run `yarn`
- You now have an executable file at `./bin/releaseman`

> :warning: Each time `defaults.json` is modified or `releaseman` updated, you need to run `yarn` again to update the binary

## Usage
`releaseman [options]`

### Options
| CLI | Description |
| ---------------------------- | ------------------------------------------------------------------- |
| `--branches.beta ` | Latest beta branch |
| `--branches.develop ` | Develop branch |
| `--branches.doc ` | Documentation branches prefix |
| `--branches.feature ` | Feature branches prefix |
| `--branches.fix ` | Fix branches prefix |
| `--branches.hotfix ` | Hotfix branches prefix |
| `--branches.master ` | Master branch |
| `--branches.release ` | Release branches prefix |
| `--categories ` | JSON array of labels/titles from which the changelogs are generated |
| `--defaults ` | Path to a custom defaults JSON file |
| `--doc` | Enable documentation mode |
| `--labels.breaking ` | Label triggering a breaking change in the version number |
| `--labels.doc ` | Label for documentation pull requests |
| `--labels.feature ` | Label for features pull requests |
| `--labels.fix ` | Label for fixes pull requests |
| `--labels.release ` | Label for releases pull requests |
| `--labels.wip ` | Label for unfinished pull requests |
| `--no-release` | Skip tag/release creation (for fixes/hotfixes) |
| `--owner ` | Repository owner |
| `--repo ` | Repository name |
| `--tag ` | Tags prefix |
| `--token ` | GitHub access token |
| `--verbose` | Log requests & full errors |

### Commands
#### Changes
Display the changelog for the next beta or stable release.

`releaseman changes start|finish [options]`

| CLI | Description |
| -------- | -------------------------- |
| `finish` | Use latest beta and master |
| `start` | Use develop and master |

#### Continue
Re-run the last command starting where it failed.

`releaseman continue`

#### Feature
Start, publish or finish a feature.

`releaseman feature ((start|publish) )|(finish ) [options]`

| CLI | Description |
| ---------- | -------------------------------- |
| `finish` | Merge the feature into develop |
| `publish` | Create the pull request |
| `start` | Create a new branch from develop |
| `` | Feature name |
| `` | Feature pull request number |

#### Fix
Start, publish or finish a fix.

`releaseman fix ((start|publish) )|(finish ) [options]`

| CLI | Description |
| ---------- | ----------------------------------------------------- |
| `finish` | Merge the fix into the release branch and backport it |
| `publish` | Create the pull request |
| `start` | Create a new branch from the release branch |
| `` | Fix name |
| `` | Fix pull request number |

#### Help
Display help on `releaseman`'s usage.

`releaseman help []`

| CLI | Description |
| ----------- | ------------------------------------------------------------------------------------------------ |
| `` | Command on which to display help: changes, continue, feature, fix, help, hotfix, init or release |

#### Hotfix
Start, publish or finish a hotfix.

`releaseman hotfix ((start|publish) )|(finish ) [options]`

| CLI | Description |
| ---------- | -------------------------------------------- |
| `finish` | Merge the hotfix into master and backport it |
| `publish` | Create the pull request |
| `start` | Create a new branch from master |
| `` | Hotfix name |
| `` | Hotfix pull request number |

#### Init
Make your repository ready for `releaseman` by creating develop and latest-beta branches, an initial release and labels.

`releaseman init`

#### Release
Create a new beta or stable release.
The `` param is used as the new release's name.
It is used only when creating a new beta since the stable release will reuse it's beta name.

`releaseman release (start )|finish [options]`

| CLI | Description |
| -------- | --------------------------- |
| `finish` | Create a new stable release |
| `start` | Create a new beta release |
| `` | Release name |

## Typical workflow
Using releaseman from it's cloned folder without `repo` specified in the `defaults.json`

### Start the release process
`./bin/releaseman release start --repo `

At this point, if some PRs were mis-labeled, `releaseman` will probably crash.
Don't worry, the `continue` command is made for this, you can fix the labels
in GitHub and run

`./bin/releaseman continue`

`releaseman` will skip all the steps before the one it crashed on and runs with the same options as before.

### Deploy release branch and test (optional)
If some fixes need to be done here, create a fix branch with

`./bin/releaseman fix start --repo `

It will create a `fix/` branch.
Make your fixes on it, then create a PR with

`./bin/releaseman fix publish --repo `

Then merge it using

`./bin/releaseman fix finish --repo `

### Finish the release process.
`./bin/releaseman release finish --repo `