Skip to content

Deployment

Yee Cheng Chin edited this page Sep 11, 2024 · 20 revisions

Making a release

Preparations

Before making a new release, make sure to manually test on x86_64 and arm64, as well as across different macOS versions.

Also, it's a good idea to merge from upstream (see Merging-from-upstream-Vim) at least a few days before the final release. This makes sure we have the most up-to-date Vim, while we can monitor and see if there are any glaring issues with Vim like crashes that would block a release.

Also, double check if we have upstream dependencies (e.g. Sparkle) that we should update to, and check that if scripting languages like Python have been updated to a new versions.

Deploy

  • Update src/MacVim/Info.plist CFBundleVersion to NUMBER.

  • Commit src/MacVim/Info.plist with meaningful commit log like this and push it.

  • Create a signed annotated release-NUMBER tag (make sure you have Git set up to sign, and the signature is registered at Github) and push the tag to the origin (assuming "origin" is the name of the remote to this repository):

     $ git tag -a -s release-NUMBER
     $ git push origin release-NUMBER
    
    • Don't use git push origin --tags!
  • Go to the Tags page and find the tag you made and create a release out of it. Choose a title similar to previous releases (e.g. "MacVim r179"), and paste in the commit message to the descriptions. Clean up the message and add screenshots / videos as needed to make it look good. Do the following additions to make the release notes look nice:

    • You can find past release notes by doing for i in {161..173}; do git log-message snapshot-$i > release-$i.md; done and for i in {174..180}; do git log-message release-$i > release-$i.md; done
    • For interesting changes in Vim to include in release notes, see Interesting changes to include for release notes.
    • Wrap the "Compatibility" section under a <details><summary>Compatibility</summary> ... </details> block so they don't waste space.
    • Put the following download badge near the top (replace "176" with the current release number):
      [![MacVim release-176 download](https://img.shields.io/github/downloads/macvim-dev/macvim/release-176/MacVim.dmg?label=macOS%2010.13%2B)](https://github.com/macvim-dev/macvim/releases/download/release-176/MacVim.dmg) [![MacVim release-176 download (10.9-10.12)](https://img.shields.io/github/downloads/macvim-dev/macvim/release-176/MacVim_10.9.dmg?label=macOS%2010.9-10.12)](https://github.com/macvim-dev/macvim/releases/download/release-176/MacVim_10.9.dmg)
      
  • GitHub Actions CI will create an artifact under the tag. Download it, sign / notarize the app, and upload the dmg to the release.

  • Once the release is in a good shape, do git push origin to push the commit to master itself. After doing this you should not change anything in the release anymore. If a regression happens, just push a new release to revert the change.

  • Update Sparkle's appcast xml file so updater will start pointing to the release.

Clone this wiki locally