-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Release Checklist
Lincoln Stein edited this page Jan 2, 2023
·
19 revisions
- (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.
- Edit the file
ldm/invoke/_version.py
to bring the InvokeAI version up to the desired release number. - 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 formvX.X.X-rcX
. - 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 byupdate.sh
to upgrade the user's install to the latest version of InvokeAI. So during the pre-release process, users who runupdate.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 namedlatest
attached to the most recent release, and the otherlatest-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.
- If you are happy with what
create_installer.sh
did, dopush origin
andpush origin --tags
. The script does not push for you. - Go to the InvokeAI Releases Page and push the Draft New Release button.
- You will be prompted to select or create a tag for the release. Select the one chosen in step (2).
- 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.
- 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.
- Check the Set as a pre-release and _Create discussion item` checkboxes at the bottom of the release page, and Save.
- Announce the pre-release in Discussion and Discord.
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.
Approve the release branch's PR and merge into main
. Now, working in the main
branch:
- Set the PATCH variable to an empty string in
create_installer.sh
. This will create a tag namedvX.X.X
without the candidate patch level. - Run
create_installer.sh
to do the final tagging and zip file generation. - Open the pre-release page in edit mode and upload the final zip files.
- Uncheck _Set as pre-release
and check
Set as the latest release`. - Save, and the release is done!
- Create a Discussion announcement
- Announce on Discord and Reddit
- Produce and release a YouTube video, if appropriate.