Checklist of tasks to perform for each release. For general information about Apache releases you may also consult .

- You need to add your GPG keys in and the before a release. The SVN is read-only in general but the KEYS file can be committed. Change the file as it will be copied to the Apache site.
- Ensure that all open bugs and issues in have been either fixed or moved to an other release version.
- Ensure that all examples are working with the release candidate.
- Since Tobago 5: Ensure that the Skript ./test-scenarios-locally.sh runs sucessfully.
- Check the scheduled version number against "semantic versioning".
- and ask for problems with the release candidate. Replace the variable part <sender-name>. Subject: ${subject} ${content}
- for Tobago 2.x and higher use jdk 1.8 or higher.
- Perform basic checks on an unmodified checkout for all modules: # for Tobago 2.x, 4.x and higher $ mvn clean install && mvn checkstyle:check apache-rat:check animal-sniffer:check dependency-check:check

- Do not use your forked repository for the following steps to keep the history of the release process.
- Commit: "chore(release): prepare"
  - Check version info in these files manually (set to release version without SNAPSHOT suffix): package.json package-lock.json package-info.java Release.java ApiController.java
- Prepare the release with: $ mvn release:prepare The release-plugin make use of the .
- Make sure "apache.snapshots.https" and "apache.releases.https" servers are configured in settings.xml. Have a look at for more information. Then perform the release with: $ mvn release:perform
- Set next SNAPSHOT version in: package.json package-lock.json package-info.java and commit: "chore(release): set next SNAPSHOT version"

- Close the repository on the instance for staging (you will receive a mail with the staging location).

- Propose a with the staging location. Replace the variable part <sender-name>, <insert-list>, <use-one-of>, <a>, <b>or, <c>, <id-from-nexus>. Subject: ${subject} ${content}
- For a positive result wait at least 72 hours.
- Once a vote is successful, post the result to the dev list.

- Release the version in and close all resolved issues for the release.
- Release and drop the staging repository on the instance.
- Copy the download artifacts from the repository to the site (see script ).
- Add the release version and date to the . Full version name is "tobago-{VERSION}".
- Update the next SNAPSHOT version on tobago-demo.apache.org
  - Checkout: https://github.com/apache/myfaces-homepage.git
  - Edit versions in tobago/tobago-vm/apache-proxy/index.html and tobago/tobago-vm/docker-compose.yml
- Update the site
  - Updating the release and version information in other branches, e. g.: tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Release.java
  - Updating Tag Library Documentation (TLD)
    - generate in myfaces-tobago folder with: mvn clean package -Pgenerate-assembly
    - Copy from 'myfaces-tobago/tobago-core/target/tlddoc' to 'myfaces-homepage/tobago/doc/{tobago-version}/tld'
    - Commit and push ("docs: TLD docs for Tobago release {tobago-version}")
  - Updating 'tobago.md' and 'tobago-download.md' in the MyFaces homepage project 'myfaces-homepage'.: myfaces-homepage/tobago.md myfaces-homepage/tobago-download.md
- Remove old download artifacts from the site (see script ). Older releases are automatic available in the .
- Remove old snapshots in the maven snapshot repository. This is done automatically, it is only needed, when there are dead development ends, e. g. last alpha or beta version like 3.0.0-beta-2-SNAPSHOT which will no longer developed.
- . Replace the variable parts <edit-me>. Subject: ${subject} ${content}

  For all versions send to MyFaces Discussion list. Only for major versions send to Apache Announces list.