allegro_release tool

allegro_release is a dedicated tool that helps in releasing a pod.

Prerequests

In order to properly use allegro_release you need to install atlassian-stash gem:

gem install atlassian-stash

After installation, run stash configure to configure Stash instance (you will have to run stash configure every time you change your password, which currently is once per month). The following prompts should appear:

Bitbucket Server Username: <your_username> (go to "View Profile" in upper-right corner of Stash)
Bitbucket Server Password (optional): <your_password>
Bitbucket Server URL: https://stash.allegrogroup.com/
Remote (optional): <leave_empty>
Create a git alias 'git create-pull-request'? n

Installation of allegro_release

Run:

gem install allegro_release

Procedure flow

If you don't want to use allegro_release just follow the steps in What it does? sections.

Step 1

Run command in root of repository where .podspec is.

allegro_release (major|minor|patch)
  • major increases major (X.0.0) version of pod.
  • minor increases minor (0.X.0) version of pod.
  • patch increases patch (0.0.X) version of pod.

What it does?

  1. Checkouts develop branch and pulls changes from repository.
  2. Creates new branch named release_<version>.
  3. Bumps the version in .podspec accordingly to chosen option.
  4. Updates CHANGELOG.md if available in the repository. Precisely, the tool is updating release date of release version and adds placeholders for next version on top of the file. CHANGELOG.md must follow the convention (explained below) used in repositories in order for this step to work.
  5. Checks if .podspec file is valid via pod lib lint.
  6. Commits all the changes. During this step allegro_release is asking the user for release issue JIRA ID.
  7. Pushes the branch to the remote repository.
  8. Creates pull request from release_<version> to develop.
CHANGELOG.md convention

File line numbers are on the left.

1. # CHANEGLOG
2.
3. ## Version X.X.X
4. #### Unreleased
5.
6. - (added) # Some unreleased changes
7. 
8. ## Version 2.2.2
9. ### Released 01.01.2016
10.
11. - (modified) # Some released changes and the rest of CHANGELOG.md. 

Step 2

After merging pull request that was created automatically in step 1, run command in root of repository where .podspec is.

allegro_release to_master

What it does?

  1. Checkouts release_<version> branch and pulls changes from repository.
  2. Creates pull requests from release_<version> to master.

Step 3

After merging pull request that was created automatically in step 2, run command in root of repository where .podspec is.

allegro_release finish

What it does?

  1. Checkouts master branch and pulls changes from repository.
  2. Adds tag to master with updated version.
  3. Pushes .podspec to spec repository (this repository).