File: RELEASING.md

package info (click to toggle)
ppa-dev-tools 0.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,096 kB
  • sloc: python: 5,069; makefile: 3
file content (115 lines) | stat: -rw-r--r-- 3,039 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
Releasing a New PPA Dev Tools Version
=====================================

Before you start
----------------

* Update local Git repository to the current `main` tip.  For a
  maintenance release (e.g. version 1.2.3), update to the current
  `stable-1.2` tip, instead.

* Doublecheck all new dependencies are specified in packaging
  $ grep -h import */* | sed 's/    //' | grep -vE '(import|from) (ppa|\.)' | sort -u

* Doublecheck the INSTALL.md file is still up to date

* Write an entry in NEWS.md file with release notes

* Commit everything that needs included in the release.  These two
  commands should produce no output:
  $ git diff HEAD
  $ git log main...origin/main

* Verify the build system works without errors
  $ make build

* Verify the testsuite, lint, flake, etc. passes
  $ make check
  $ make coverage

* Verify the snapcraft config is ready
  $ snapcraft --debug
  $ rm *.snap

* Cleanup
  $ make clean
  $ git status --ignored


Generate the source release
---------------------------

* Set the version
  $ export VERSION="X.Y.Z"
  $ make set-release-version

* Add a changelog entry
  $ dch -v "${VERSION}"

* Add the release collateral
  $ git commit NEWS.md ppa/_version.py pyproject.toml debian/changelog snap/snapcraft.yaml -m "Releasing ${VERSION}"
  $ git tag -a -m "PPA Dev Tools ${VERSION}" "v${VERSION}"

* Push the release
  $ git push origin main "v${VERSION}"

* Create the release directory
  $ cp -ir ../$(basename $(pwd)) ../Releases/ppa-dev-tools-${VERSION}/
  $ cd ../Releases/ppa-dev-tools-${VERSION}

* Generate the release tarball
  $ make build
  $ python3 -m twine upload --verbose --repository pypi dist/*-${VERSION}*


Generate the debian package
---------------------------

* Set to latest distro release, and add changelog entry for "New release"
  $ debuild -S -sa
  $ dput ppa:bryce/ppa-dev-tools ../ppa-dev-tools_${VERSION}_source.changes

* Repeat for each LTS release, with version set to ${VERSION}~YY.MM.N
  and changelog entry "Backport for ${codename}"
  $ dput ppa:bryce/ppa-dev-tools ../ppa-dev-tools_${VERSION}~YY.MM.N_source.changes


Generate the snap
-----------------

* Build the snap locally
  $ make snap

* Verify the snap
  $ sudo snap install ppa-dev-tools_<version>_amd64.snap --devmode
  ppa-dev-tools <version> installed
  $ ppa --version
  ppa 0.4.0

* Push snap to the snap repository
  $ snapcraft login
  $ snapcraft upload --release edge *.snap

* Push the tag up to the repository


Announce release
----------------

* Add release announcement on Launchpad
* Send email to users' list
  - ppa-dev-tools-users@lists.launchpad.net
    CC ubuntu-server <ubuntu-server@lists.ubuntu.com>
* Post to discourse Server channel, e.g. like
  https://discourse.ubuntu.com/t/release-of-ppa-dev-tools-0-4-0/35467
* Update Jira card(s)


Return to Development
---------------------

* Add a final commit bumping the package version to a new development
  one
  - Set snapcraft.yaml back to version: git

* Finally, a manual `git push` (including tags) is required.