Skip to content

Release Process

Daniel Foré edited this page Oct 21, 2019 · 38 revisions

Currently 😥

Update AppData Release Tag

Create some XML like this:

<release version="1.0.1" date="2019-09-25" urgency="medium">
  <description>
    <ul>
      <li>changelog contents</li>
      <li>More changelog contents</li>
    </ul>
  </description>
</release>

Update Debian Changelog

In the debian branch:

# Create a versioned release, without changing the maintainer, and the first line of the changelog
dch -Mv 1.0.1 changelog contents

## Append another list item to the changelog, without changing the maintainer
dch -Ma more changelog contents

## Set the release channel/distro, without changing the maintainer
dch -Mr bionic

## Commit and Push
git commit -am "Release 1.0.1"
git push

Create a GitHub Release

Use the web UI, point to the master branch, and summarize the changes.

Manually Trigger a Launchpad Build


Ideal ✨🤖✨

Normal Development

Humans 👩‍💻

  1. Create a pull request with a new feature or fix
  2. Ensure the AppData contains relevant release notes in the PR
  3. PR is reviewed, approved, and merged

CI 🤖

  1. Updates translation files when there are string changes

Release Time

Humans 👩‍💻

  1. Create a release PR based off of the master branch
  2. Fill out the PR template:
    • Verify the versioning for the new release (i.e. if it's a x.y.patch or x.minor.z bump)
    • Verify screenshots, AppData, etc.
    • Bump the release date in AppData
    • Verify that the PR has a label called Release (should be auto-set by the PR template)
  3. PR is reviewed, approved, and merged.

CI 🤖

  1. Updates the Debian changelog in the deb-packaging branch
  2. Tags the x.y.z version on the master branch and creates a new GitHub Release
  3. Tags the x.y.z-debian version on the deb-packaging branch
  4. Pushes a next-version commit to master including a patch version bump in Meson and AppData
  5. Merges the master branch into the user-defined stable branch (eg. juno) to enable stable launchpad builds

Automation Notes 📝

Triggering a GitHub Release

https://github.com/danrabbit/release-automation/releases/new?tag=v1.0.1;body=Changelog+contents

(REST API ffr: https://developer.github.com/v3/repos/releases/#create-a-release)

Triggering a Launchpad build

There are two ways we can go about this. One is using dput for a "push" method:

cd /tmp
git clone --single-branch [email protected]:elementary/appcenter
git clone --single-branch --branch deb-packaging [email protected]:elementary/appcenter deb-packaging
mv deb-packaging/debian appcenter/
cd appcenter 
debuild -S -sd
cd ..
dput ppa:elementary-os/stable appcenter_3.1.1_source.changes

Another (which is what we'll actually do) is to set up daily builds using Launchpad recipes for a non-master git branch. So to summarize:

  1. Create or fast forward a release branch (aka step 5 of automated release process)
  2. Use Launchpad automatic git imports
  3. Use launchpad recipes to "daily" build the release branch in the stable PPA. (But since this branch is not updated daily, it'll only build release commits)