Skip to content

Releasing a New Version

Evgeny Kochetkov edited this page Sep 8, 2020 · 42 revisions

Prepare CHANGELOG

Complete ./CHANGELOG.md with changes done since the last published release. Place the changes under the top section labeled ## Not yet released. Create the section if necessary.

Use the list of recent PRs or something like git log v0.41.0..master --merges --pretty="%s%n%b%n" to craft the log. Use a natural language to describe the changes. It should be clear to xoders.

Make a PR with updated changelog to perform review.

Bump version

Prepare new version environment

  • Set env var to be used later in the process (given the version to release is 0.42.0):

    export XOD_NEW_VERSION=0.42.0
  • Create a release branch:

    git checkout -b release-${XOD_NEW_VERSION:?}

Bump packages

  • Update versions in various package.jsons

    npm run lerna -- publish --skip-git --skip-npm --cd-version minor

    (use --cd-version patch if it is a hotfix release)

Update changelog

  • Replace ## Not yet released title with new version number and today date.

Update libraries

  • Bump all library versions in workspace/__lib__/xod/*/project.xod to match XOD_NEW_VERSION.

    ./tools/bump-workspace-lib-versions.sh

Commit and tag

  • Complete the local part of the process

    git commit --all --message "chore(infra): release $XOD_NEW_VERSION"
    git tag v${XOD_NEW_VERSION}

Publish

Build and upload distros

  • Push the release branch to the origin

    git push origin release-${XOD_NEW_VERSION}
  • Open a PR of release-0.42.0 to master

    Release 0.42.0
    
    A formal PR, part of the [release procedure](https://github.com/xodio/xod/wiki/Releasing-a-New-Version).
    
  • Wait for review approvals and CI verification (make the PR green)

  • Push the tag to the origin. This would start building new distros on CI servers.

    git push origin v${XOD_NEW_VERSION}
  • Merge the PR. This would start building new docker images on CI servers.

Publish packages to NPM

yarn build && ls -d ./packages/* | grep -v "client" | xargs -I {} npm publish {}

Update XOD libraries

Update xod-docs

See private wiki.

Update browser-based IDE

See private wiki.

Create a new release on GitHub

  • Use plain 0.42.0 as the release title (no leading v)
  • Point the release to the tag v0.42.0 @ master
  • Copy the relevant section of changelog to the release description

Upkeep GitHub repo

  • Close the milestone
  • Archive all cards on the project board
  • Create and protect a new maintenance branch 0.42.x
  • Remove old maintenance branches

Announce

  • Create new topic on the forum
  • Mention the release in relevant open threads
  • Announce on Twitter
  • Announce on Facebook
  • Announce via e-mail
  • Announce on arduino.cc forum
  • Announce on reddit