Home Engineering Release Process

Release Process

Last updated on Apr 17, 2023

At Chatwoot, we follow a monthly release schedule. On the 15th of every month, we will release a new software version. To release the version of the software, use the following guide.

Github release process

We use git-flow as our branching strategy.

1. Pull the latest changes

Pull latest develop branch and master branch in your local machine.

git checkout master
git pull
git checkout develop
git pull
git fetch --tags

2. Prepare release

# find the appropriate version by looking into `config/app.yml`
git flow release start '1.12.0' # replace your version number

3. Bump the version number now

4. Start committing last-minute fixes in preparing your release

5. Finish release

git flow release finish '1.12.0' # replace your version number

# Leave default merge messages as it is
# prepare the tag message as 'v1.12.0' # replace your version number

6. Push changes to remote

Branch protection might be enabled for the master branch. In that case head over to github settings and have it disabled for admins before pushing the changes. You should renable it after finishing the process

Push master branch, develop branch and the tags.

# Push develop
git checkout develop
git push --no-verify

# Push master
git checkout master
git push --no-verify

# Push tags
git checkout develop
git push --tags --no-verify

8. Prepare release notes

  • Compare the current version to the previous version using the tag compare feature in Github. https://github.com/chatwoot/chatwoot/compare/v1.11.1...v1.12.0

  • Create a new release on Github from existing tags and update release notes.

  • Ensure that the milestones exist for the subsequent 2 versions.

  • Close the current milestone and move issues to the next milestone.

Release note format:

- Describe the changes in the current release
- List the new languages that are added in the new release
- Gratitudes towards who have contributed to the project.

Release note example:

## Changelog

- Ability to detect contact location
- Ability to download Agent reports
- Search contacts using the phone number
- Set up dev environments with GitHub codespaces
- Ability to set Installation wide default language
- Improved alerts on agent/user typing
- Limit file types that can be attached
- Ability for external systems to authenticate users into Chatwoot using tokens
- Numerous bug fixes and enhancements

- New Languages
  - Danish
  - Korean
  - Czech
  - Turkish
  - Finnish
  - Indonesian

Thanks to @azyzio, @hiaselhans, @vishal-pandey, @troscoe, @timcowlishaw, @mike9011 for the contributions

Todos after Github release

  • Create release notes in Changelog (https://chatwoot.com/changelog). If you don't have access to the blog, please contact Pranav / Sojan.

  • Update the latest version in Chatwoot Hub. This is used to show a notification to users using self-hosted installation.

  • Create tasks in Product board to deploy the changes to our paid clients.

Hotfix Releases

Follow the same release process except for the git flow release commands. Replace the commands with git flow hotfix instead.

# example
git flow hotfix start '2.8.1'
git flow hotfix finish '2.8.1'

Note: Make sure that the hotfix release branches are branched off from master instead of develop.