This section documents the release process. Unless you're a dangerzone developer making a release, you'll probably never need to follow it.
Before making a release, all of these should be complete:
- Update
version
inpyproject.toml
- Update
share/version.txt
- Update version and download links in
README.md
- CHANGELOG.md should be updated to include a list of all major changes since the last release
- Test CircleCI Linux builds: Look in
.circleci/config.yml
, manually try each build in docker, and add new platforms and remove obsolete platforms - Create a test build in Windows and make sure it works
- Create a test build in mcaOS and make sure it works
- There must be a PGP-signed git tag for the version, e.g. for dangerzone 0.1.0, the tag must be
v0.1.0
Before making a release, verify the release git tag:
git fetch
git tag -v v$VERSION
If the tag verifies successfully and check it out:
git checkout v$VERSION
To make a macOS release, go to macOS build machine:
- Build machine must have:
- macOS 10.14
- Apple-trusted
Developer ID Application: FIRST LOOK PRODUCTIONS, INC.
andDeveloper ID Installer: FIRST LOOK PRODUCTIONS, INC.
code-signing certificates installed - An app-specific Apple ID password saved in the login keychain called
flockagent-notarize
- Verify and checkout the git tag for this release
- Run
poetry install
- Run
poetry run ./install/macos/build_app.py --with-codesign
; this will makedist/Dangerzone.dmg
- Notarize it:
xcrun altool --notarize-app --primary-bundle-id "media.firstlook.dangerzone" -u "[email protected]" -p "@keychain:dangerzone-notarize" --file dist/Dangerzone.dmg
- Wait for it to get approved, check status with:
xcrun altool --notarization-history 0 -u "[email protected]" -p "@keychain:dangerzone-notarize"
- (If it gets rejected, you can see why with:
xcrun altool --notarization-info [RequestUUID] -u "[email protected]" -p "@keychain:dangerzone-notarize"
) - After it's approved, staple the ticket:
xcrun stapler staple dist/Dangerzone.dmg
This process ends up with the final file:
dist/Dangerzone.dmg
Rename Dangerzone.dmg
to Dangerzone-$VERSION.dmg
.
To make a Windows release, go to the Windows build machine:
- Build machine should be running Windows 10, and have the Windows codesigning certificate installed
- Verify and checkout the git tag for this release
- Run
poetry install
- Run
poetry shell
, thencd ..\pyinstaller
,python setup.py install
,exit
- Run
poetry run install\windows\step1-build-exe.bat
- Open a second command prompt as an administratror, cd to the dangerzone directory, and run:
install\windows\step2-make-symlink.bat
- Back in the first command prompt, run:
poetry run install\windows\step3-build-installer.bat
- When you're done you will have
dist\Dangerzone.msi
Rename Dangerzone.msi
to Dangerzone-$VERSION.msi
.
Linux binaries are automatically built and deployed to repositories when a new tag is pushed.
To publish the release:
- Create a new release on GitHub, put the changelog in the description of the release, and upload the macOS and Windows installers
- Update the Installing Dangerzone wiki page
- Update the Dangerzone website to link to the new installers