...
Build the Daffodil release candidate image:
Code Block language bash $ podman build -t daffodil-release-candidate /path/to/daffodil.git/containers/release-candidate/
This may take 20-30 minutes the first time, but should be significantly faster in subsequent runs unless something changes in the image where a full rebuild is needed.
Run the daffodil release candidate container:
Code Block language bash $ podman run -it \ -v ~/.gitconfig:/root/.gitconfig \ -v ~/.gnupg/:/root/.gnupg/ \ -v ~/.ssh/:/root/.ssh/ \ daffodil-release-candidate
Note that the
-v
option is used to bind mount files/directories from the host system in the container so the container has access to git configurations and gpg/ssh keys.The container will periodically ask for user input (e.g. usenames, passwords) to sign and publish release files. This includes:
- Release candidate label. For example:
rc1
if this is the first release candidate for a version
- Long format of your signing key ID. This can be found by running
gpg --list-secret-keys --keyid-format long
- Git commit name and email. This is the name and email you want to show up as the "Comitter" when creating a git tag or commit. This is not your github or Apache credentials.
- Apache user name username and password. This is the username and password credentials used to log in at https://id.apache.org.
- GitHub SSH key password. The Daffodil repository will be cloned using SSH authentication. If your SSH key is password protected, you may be prompted for that password.
- Private GPG password. The release process will sign artifacts with your GPG key–you will be prompted for a password to sign these artifacts.
- Release candidate label. For example:
After entering the necessary information, this script will perform the following actions:
- Create a zip of the source
- Create tgz, zip, msi, and rpm of the helper binary
- Create sha256 and sha512 checksum and ASCII armored detached signatures of the above files
- Move Place the above files to the Apache dist dev directory
. This svn files are not comitted until further action is taken. - Create javadoc Create javadoc and scaladoc and move to the daffodil site repository docs directory for this release
, and create a commit. This commit is not pushed until further action is taken. - Create a signed git tag. This tag is not pushed until further action is taken.
- Stage Stages jars/poms to https://repository.apache.org
Create a signed git tag
- Create a zip of the source
- Once the script completes, you should verify all the files. The script will list the files and locations to verify. This includes:
- Verify the checksums and signatures created in the Apache dist directories are correct
- Verify the staged jars/poms at https://repository.apache.org/ are correct. To do so, visit that url, login in the top right using id.apache.org credentials, select "Staging Repositories" on the left, and find the
orgapachedaffodil-XXXX
repository. Inspect the "Content"
tab to make sure the appropriate jars are uploaded and appear valid. - Verify the git tag is correct
- Verify the javadoc and scala docs in the daffodil site repository are correct
- Verify the checksums and signatures created in the Apache dist directories are correct
- If any of the above do not look correct perform the following steps:
- Drop the published jars/poms (at https://repository.apache.org - check the box for the staging repository just created and choose "Drop" at the top)
- Type
exit
to close the container. All files created in the container will be deleted.
- Fix the issue and repeat the "Create Release Candidate" process from the beginning.
- Drop the published jars/poms (at https://repository.apache.org - check the box for the staging repository just created and choose "Drop" at the top)
- After verifying all is correct, run the commands provided at the end of the script to perform the followingfollow the instructions to complete the release candidate. The steps include:
- Commit the release artifacts
- Push the new tag
- Update the daffodil site repository
- Run the command:
/root/complete-release
- Close the staged file at https://repository.apache.org
Close the staged files in the Apache repsitory
- Type
exit
to close the container.
- Commit the release artifacts
...
If the VOTE does not pass, fix the issues, "Drop" the release at https://repository.apache.org, and delete the dist files, e.g.:
Code Block | ||
---|---|---|
| ||
$ svn delete -m "Drop Apache Daffodil (incubating) 2.0.0-rc1" \
https://dist.apache.org/repos/dist/dev/incubator/daffodil/2.0.0-rc1/ |
Once the issues are resolved, start again at Creating a Release Candidate to create a new release candidate with a bumped rc number (e.g. rc2). repeat the "Create Release Candidate" process from the beginning with a new rc number. Note that creating a new release candidate will automatically delete the previous one.
Incubator Release Vote
You must now create a VOTE thread on general@incubator.apache.org to get approval from the Apache Incubator Project Management Committee for release. This email should be the same as the above, but with the following at the beginning of the email, again making sure to update the links to the vote and result thread.
...
After at least 72 hours, if the VOTE passes with at least 3 binding +1's, create a RESULT thread announcing the passage.the passage.
As before, if the VOTE does not pass, fix the issues, "Drop" the release at https://repository.apache.org, repeat the "Create Release Candidate" process from the beginning with a new rc number. Note that creating a new release candidate will automatically delete the previous oneIf it does not pass, follow the same steps as if the Daffodil Release Vote fails and create a new release as before.
Promoting to Final Release
The following steps should be taken once the incubator vote passes.
In the Apache dist directory, move the Move the release candidate files to the release directory:
Code Block language bash $ svn mv -m "Release Apache Daffodil (incubating) 2.0.0" \ https://dist.apache.org/repos/dist/dev/incubator/daffodil/2.0.0-rc1/ \ https://dist.apache.org/repos/dist/release/incubator/daffodil/2.0.0/
In the Daffodil git repository, create a signed git tag based on the release candidate tag:
Code Block language bash $ git tag -as -u KEYID -m "Release v2.0.0" rel/v2.0.0 v2.0.0-rc1 $ git push asf rel/v2.0.0
- Release the published Nexus files by visiting https://repository.apache.org, log in, find the release in "Staging Repositories" and selecting "Release".
Give approximately 24 hours for the release files to sync to mirrors and maven centralMaven Central.
Once the mirrors have synced, make the following changes to the daffodil site repository to make the release availableand publish them:
Modify the release page to have the following parameters:
Code Block released: true date: date<date of releaserelease> artifact-root: "https://www.apache.org/dyn/closer.lua/incubator/daffodil/2.0.0/" checksum-root: "https://www.apache.org/dist/incubator/daffodil/2.0.0/"
Modify the release page of the previous release to use archived root URLs, for example:
Code Block artifact-root: "https://archive.apache.org/dist/incubator/daffodil/1.0.0/" checksum-root: "https://archive.apache.org/dist/incubator/daffodil/1.0.0/"
Modify the doap.rdf file to include the release date and version, for example:
Code Block language xml <release> <Version> <name>Apache Daffodil</name> <created>2018-02-18</created> <revision>2.0.0</revision> </Version> </release>
Update the symlink to the latest Javadoc and Scaladocs (note that there is no forward slash at the end of
latest
.
RemoveCode Block language bash $ ln -sfn 2.0.0 site/docs/latest
Now that the download URLS of the previous release point to the archive, remove that release from
theApache dist
repository now that the download URLs point to the archivesto free up space on mirrors:
Code Block language bash $ svn delete -m "Archive Apache Daffodil (incubating) 1.0.0" \ https://dist.apache.org/repos/dist/release/incubator/daffodil/1.0.0/
- Update the JIRA versions to mark the version as released.
Announce the release
Send an announcement email to announce@apache.org, dev@daffodil.apache.org, and users@daffodil.apache.org, (note: send three separate emails instead of one email with multiple TO/CC's), with the following template:
Code Block language text Subject: [ANNOUNCE] Apache Daffodil (incubating) 2.0.0 Released The Apache Daffodil (incubating) community is pleased to announce the release of version 2.0.0. Notable changes in this release include <short summary of changes>. Detailed release notes and downloads are available at: https://daffodil.apache.org/releases/2.0.0/ Daffodil is an open source implementation of the Data Format Description Language (DFDL) specification that uses DFDL schemas to parse fixed format data into an infoset, which is most commonly represented as either XML or JSON. This allows the use of well-established XML or JSON technologies and libraries to consume, inspect, and manipulate fixed format data in existing solutions. Daffodil is also capable of the reverse by serializing or "unparsing" an XML or JSON infoset back to the original data format. For more information about Daffodil visit: https://daffodil.apache.org/ Regards, The Apache Daffodil Team ===== *Disclaimer* Apache Daffodil is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
- The same or a similar announcement can also be posted to the DFDL Workgroup News page here: https://redmine.ogf.org/projects/dfdl-wg/news
- Send a tweet from the @ApacheDaffodil the @ApacheDaffodil twitter account, mentioning the release version, highlights of changes, and a link to the release page.
- Various published DFDL schemas and examples will, most-likely, want to be updated so that they automatically reference the latest release of Daffodil from their master branch.
...