Skip to content

Release Checklist

Lincoln Stein edited this page Jan 2, 2023 · 19 revisions

Steps for making a release

Initial Steps

  1. (optional) Create a release branch and create a pull request for it against main.
    • This is not strictly necessary, but I have found that during the pre-release testing process multiple small bugs are uncovered. Having an unprotected branch available to push changes to allows you to iterate more rapidly. Otherwise all individual changes will need to go through the PR review and testing process.
  2. Edit the file ldm/invoke/_version.py to bring the InvokeAI version up to the desired release number.
  3. Edit the file installer/create_installer.sh to update the PATCH variable. During the pre-release process this variable will contain the release candidate number in the form "rcX", for example "rc1". When the script generates the installer files, it concatenates the version number from _version.py to the patch number, yielding a tag of the form vX.X.X-rcX.
  4. Run create_installer.sh from within its directory. It does four things:
    • It prompts you to commit any uncommitted changes on the branch.
    • It tags the tip of the current branch with the pre-release tag, vX.X.X-rcX
    • It moves the tag latest to the tip of the current branch. latest is used by update.sh to upgrade the user's install to the latest version of InvokeAI. So during the pre-release process, users who run update.sh will get the pre-release (unless they explicitly specify a different tag to fetch). This was designed to make it easy for users to test the pre-release, but on reflection I think it might be better to have two tags, one named latest attached to the most recent release, and the other latest-prerelease for the pre-release.
    • It creates four zip files. Three for the Windows, Linux and Mac installers, and one for the update script. The installers also install the exact same update script, so if users have installed 2.2.5 or later, they already have the script in their invokeai directory.
  5. If you are happy with what create_installer.sh did, do push origin and push origin --tags. The script does not push for you.
  6. Go to the InvokeAI Releases Page and push the Draft New Release button.
  7. You will be prompted to select or create a tag for the release. Select the one chosen in step (2).
  8. Write the release notes. There is a GitHub button labeled Generate release notes that will automatically insert the changelog and new contributors. I use this to generate the bottom half of the release notes, and the tried and true method of cutting and pasting from the previous release notes to write the intro.
  9. Upload the four zip files created in step 4 into the Assets section of the release notes. I also like to upload them into the body of the release notes, since it can be hard for users to find the Assets section.
  10. Check the Set as a pre-release and _Create discussion item` checkboxes at the bottom of the release page, and Save.
  11. Announce the pre-release in Discussion and Discord.

Revisions

When a change has been made to the release branch, bump up the PATCH value in create_installer.sh and repeat steps 4-9. Generally you only need to upload the new versions of the zip files and let the users know that a change has been made. Use the popup menu on the upper left of the release page to update the pre-release to the new version-patchlevel tag.

Iterate this process until you are ready to finalize the release.

Final Release

Approve the release branch's PR and merge into main. Now, working in the main branch:

  1. Set the PATCH variable to an empty string in create_installer.sh. This will create a tag named vX.X.X without the candidate patch level.
  2. Run create_installer.sh to do the final tagging and zip file generation.
  3. Open the pre-release page in edit mode and upload the final zip files.
  4. Uncheck _Set as pre-releaseand checkSet as the latest release`.
  5. Save, and the release is done!

Publicity

  1. Create a Discussion announcement
  2. Announce on Discord and Reddit
  3. Produce and release a YouTube video, if appropriate.
Clone this wiki locally