Release process
- We usually make two releases per year (spring and fall)
- We currently use a semantic versioning scheme (
4.8.XX
)
Pre-requisites
Release VM
- Install a fresh Fedora VM to cut a release:
yum build-dep mc yum install git-core fakeroot check-devel po4a libX11-devel
- Configure
git
:git config --global user.name "Yury V. Zaytsev" git config --global user.email "yury@shurup.com"
- Port over the GPG keyring to make it possible to sign the tag.
Transifex
Set up Transifex to be able to work with translations.
GPG
(see before: [wiki:GpgSetUpForSigningReleases how to set up your gpg key for signing releases]) # TODO
Release process
Copy and paste the following list into the Prepare for release mc-4.8.XX
issue on GitHub:
Pre-release tasks
- Prepare the repository for release:
git clone git@github.com:MidnightCommander/mc.git git fetch git checkout master git reset --hard origin/master git clean -dfx ./autogen.sh mkdir dist; cd dist; ../configure; cd ..
- Download PO translations from Transifex:
./maint/sync-transifex/po-from-transifex.py
- Commit PO translations to
git
:make -C dist/po update-po git add po/*.po git commit -s -m 'maint: update PO translations from Transifex' git push origin master
- Download hints translations from Transifex:
./maint/sync-transifex/hints-from-transifex.py
- Commit hints translations to
git
:git add doc/hints/l10n/mc.hint.* git commit -s -m 'maint: update hints translations from Transifex' git push origin master
- Create a new
NEWS-4.8.YY
wiki page on Trac for the next version with an empty template. The template can be copied from the currentNEWS
wiki page (without the list of tasks and bug reports). - Add the content of the current
NEWS
wiki page to thedoc/NEWS
file in thegit
repo:git add doc/NEWS git commit -s -m 'maint: update doc/NEWS file' git push origin master
- Create a new version label1 on GitHub (
ver: 4.8.XX
) - Create a new milestone1 on GitHub (
4.8.YY
)
Cutting release tarballs
- Create a new
git
tag:git tag -s 4.8.XX # "Release" or "RCn"
- Create
*.tar.(bz2|xz)
distribution archives:cd dist; fakeroot make dist-bzip2 && fakeroot make dist-xz # https://bugzilla.redhat.com/show_bug.cgi?id=2338285 cat mc-4.8.33.tar | XZ_OPT=${XZ_OPT--e} xz -c >mc-4.8.33.tar.xz
- Compute checksums for distribution archives:
sha256sum mc-*tar.* > mc-4.8.XX.sha256
- Upload source packages and checksums to the issue
- Developers should download tarballs, verify checksums, compile and install locally; if everything is OK, developers should vote for the release.
./configure --prefix=$(pwd)/install make install make check
- Push out the release (or release candidate) tag:
git push origin 4.8.XX
- Upload source packages and checksums to the mirror master (maintainers should have access via public keys):
scp mc-4.8.XX.* midnightcommander@ftp-osl.osuosl.org:/home/midnightcommander/data ssh midnightcommander@ftp-osl.osuosl.org 'ls -als /home/midnightcommander/data/' | grep 4.8.3
- Trigger distribution of the tarballs to the mirrors:
ssh midnightcommander@ftp-osl.osuosl.org '/home/midnightcommander/trigger-midnightcommander'
- Check that files can be downloaded; adjust permissions (
0644
) if necessary
Post-release tasks
- Update the home page with the latest release version
- Write an announcement highlighting user-visible changes
- Create a new issue
Prepare for release mc-4.8.YY
(type:Task
, label:area: adm
) for the next release - Close issue for current release
- Close current milestone1