Files
website/docs/release-process.md
Yury V. Zaytsev 7420f8125b Remove GPG todo
2025-03-11 14:34:48 +01:00

3.8 KiB

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 tags.

Transifex

Set up Transifex to be able to work with translations.

Release process

[Copy and paste]({{ page.edit_url | replace("/mc", "/website") }}) the following list into the Prepare for release mc-4.8.XX [issue on GitHub]({{ config.repo_url }}/issues):

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]({{ config.repo_url }}/wiki) for the next version with an empty template. The template can be copied from the current NEWS wiki page (without the list of tasks and bug reports).
  • Add the content of the current NEWS wiki page to the doc/NEWS file in the git 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

  1. Labels and milestones are managed via Pulumi ↩︎