Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Go to JIRA's Releases page to view only the unreleased versions (need to be a PMC member - ask a PMC member if you are not one).
  2. If you see only one unreleased version in the list, fill out the Version name text box of the next unreleased version above the list and click Add to add a new unreleased version to the list. 
  3. If the release candidate version has a green bar that is not completely filled in, you need to move some issues to the next unreleased version.  Click on the release candidate's version to view its issues.
  4. Click on the number of "Issues to do" above the list of issues (the number will be non-zero if the green bar was not completely filled in).
  5. Click on "View in Issue Navigator" above the list of issues.
  6. Do a Bulk Change to move these issues to the next unreleased version (Top Right: Tools > Bulk Change, select all issues, click Next, select Edit Issues, click Next, select Change Fix Version/s, select Replace all, pick the next unreleased version, and so on).
  7. Go back to JIRA's Releases page and click on the release candidate's version again. If the number of "Issues in progress" is not zero, you also need to click on it and move its issues to the next unreleased version too (repeat steps 5-6 and come back to this step.
  8. Click on "Release Notes" near the top of the page.
  9. Click on "Configure Release Notes", change "Please Select Style" to Text, and press Create.
  10. Scroll down to the bottom where you will find a text area with the project release notes ready to be copied to another document.
  11. Copy the release notes to the new release file in the site/_releases/ directory, change all "[DAFFODIL-XXX]" to "{% jira XXXX %}", change all indentation and category lines to markdown format, and save your changes.
  12. For changes that need more description (e.g. big features), create sections on the release page and add those descriptions.  
  13. For the section on Dependency updates, the following command shows the changes or new dependencies that should be mentioned. 

    Code Block
    languagebash
    $ git diff v3v1.30.0 -- project/Dependencies.scala

    You will of course change "v3v1.30.0" in that command to the tag of the prior release to the one you are preparing. 

...

Note that these links refer to https://dist.apache.org instead instead of https://downloads.apache.org because this is a pre-release.

Additionally, update the Unsupported Features page if any features/errata are now supported in this release.

...

(info) Note that the link to daffodil-issues-2.0.0  should be created at https://s.apache.org,  linking linking to the unreleased version in JIRA issues that match the releases Fix Version's Releases page showing the list of issues fixed by this release.

(info) Note the https://dist.apache.org  link instead https://downloads.apache.org because this is a pre-release. 

...


After at least 72 hours, if the VOTE passes (at least 3 binding +1 votes and more positive than negative votes), create a RESULT thread announcing the passage and listing the binding and non-binding vote totals (you may omit those with zero totals) and vote breakdown. Binding votes are votes from PMC members and non-binding votes are votes from committers who are not PMC members. For example:

Code Block
languagetext
title\[RESULT\]\[VOTE\] Release Apache Daffodil 2.0.0-rc1
The VOTE to release Apache Daffodil 2.0.0-rc1 is now closed.

The vote passes with:

3 binding +1
1 non-binding +1

The VOTE thread:

https://lists.apache.org/thread.html/c8df54668fbcb7b8285f3e2cc524eac7cb82a721fa823ea5ae7edbe3%40%3Cdev.daffodil.apache.org%3E

The vote breakdown is:

+1 First Last (binding)
+1 First Last (binding)
+1 First Last (binding)
+1 First Last

Thanks to everyone who voted!

...

If the VOTE does not pass, fix the issues, "Drop" the release at https://repository.apache.org (for Daffodil only), and repeat the "Create Release Candidate" process from the beginning with a new rc rcX number. Note that creating a new release candidate will automatically delete the files from the previous release candidate.

...

  1. Move the release candidate files to the release directory. (This prompts for your apache account password. It may prompt you about plaintext password storage. If so, it works even if you answer "no".)

    For Daffodil:

    Code Block
    languagebash
    $ svn mv -m "Release Apache Daffodil 2.0.0" \
        https://dist.apache.org/repos/dist/dev/daffodil/2.0.0-rc1/ \
        https://dist.apache.org/repos/dist/release/daffodil/2.0.0/

    For Daffodil VS Code Extension:

    Code Block
    $ svn mv -m "Release Apache Daffodil VSCode Extension 2.0.0" \
        https://dist.apache.org/repos/dist/dev/daffodil/daffodil-vscode/2.0.0-rc1/ \
        https://dist.apache.org/repos/dist/release/daffodil/daffodil-vscode/2.0.0/


  2. Make a new clean clone (for good measure) , and create a signed git tag based on the release candidate tag. You need your KEYID (See step 3b above) for your apache Apache signing key, and you will be prompted for the pass-phrase for your apache Apache signing key.

    (info) Make sure to use daffodil-vscode.git when releasing Daffodil VS Code Extension.

    Code Block
    languagebash
    $ cd /tmp
    $ git clone git@github.com:apache/daffodil.git daffodil-2.0.0-rc1
    $ cd daffodil-2.0.0-rc1
    $ git tag -as -u KEYID -m "Release v2.0.0" v2.0.0 v2.0.0-rc1^{}
    $ git push origin v2.0.0

    You can delete the /tmp clone directory  directory at this point.
     

  3. For Daffodil only, "Release" the staged files at https://repository.apache.org - - log into that URL with id.apache.org credentials, check the box for the Daffodil staging repository, and click "Release" at the top.
     
  4. For Daffodil only, deploy the RPM to the to Apache Artifactory repository:
     
    1. Download the RPM convenience binary for this release (from e.g., https://dist.apache.org/repos/dist/release/daffodil/2.0.0/)
       
    2. Visit https://apache.jfrog.io/ and login using Apache credentials
       
    3. Click "Artifacts"
       
    4. Click "daffodil-rpm"
       
    5. Click "Deploy"
       
    6. Click "select file" and select the previously downloaded RPM
       
    7. Click "Deploy"
        
  5. For Daffodil only, update the JIRA versions's Releases page to mark the version as released (need to be a PMC member - ask a PMC member if you are not one).
      
  6. Give Wait approximately 24 hours for the release files to sync to mirrors and Maven Central (for Daffodil only). To verify, check here
      

    1. https://search.maven.org/ (ensure you can see daffodil libraries with libraries with versions matching all supported scala Scala versions; select one and verify the release versions exist in at least the sbt version)
        

    2. https://www.apache.org/dyn/closer.lua/daffodil/2.60.0 ( (change 2.0.0 to the new version, pick a mirror, and ensure the files exist)
       

  7. For Daffodil only, once the mirrors have synced, make the following changes to the daffodil site repository and publish them:

      

    1. Modify the release page to have the following parameters:

      Code Block
      released: true
      date: <date of release>
      artifact-root: "https://www.apache.org/dyn/closer.lua/daffodil/2.0.0/"
      checksum-root: "https://downloads.apache.org/daffodil/2.0.0/"


    2. Modify the release page of the previous release to use archived root URLs, for example:

      Code Block
      artifact-root: "https://archive.apache.org/dist/daffodil/1.0.0/"
      checksum-root: "https://archive.apache.org/dist/daffodil/1.0.0/"


    3. Modify the site/doap.rdf file to include the release date and version, for example:

      Code Block
      languagexml
      <release>
          <Version>
              <name>Apache Daffodil</name>
              <created>2018-02-18</created>
              <revision>2.0.0</revision>
          </Version>
      </release>


    4. Update the symlink  symlink to the latest Javadoc and Scaladocs in Scaladoc docs in the site/docs directory (note that there is no forward slash at the end of of latest).

      Code Block
      languagebash
      $ cd site/docs/
      $ ln -sfn 2.0.0 latest


    5. Follow the steps in the README in that repository to test and publish the new release page.
        
  8. Now that the download URLS of the previous release point to the archive, remove that release from Apache dist to free up space on mirrors:

    For Daffodil:

    Code Block
    $ svn delete -m "Archive Apache Daffodil 1.0.0" \
        https://dist.apache.org/repos/dist/release/daffodil/1.0.0/

     
    For Daffodil VS Code Extension:

    Code Block
    $ svn delete -m "Archive Apache Daffodil VS Code Extension 1.0.0" \
        https://dist.apache.org/repos/dist/release/daffodil/daffodil-vscode/1.0.0/


...

  1. Send an announcement email from your apache.org email address 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 below template.

    (info)  To send to announce@apache.org, your email app needs to be configured. Settings can be found on Apache's Committer Email page. For Gmail, you can request to "Send Email as" and with Thunderbird, you can add a new Outgoing SMTP Server and create a new Identity (Manage Identities) to send from the relay.

    (info) Make sure to update links and use "plain text" editing for the email. HTML editing often leads to broken links or incorrect formatting.

    (info) Make sure to update the project name and description when releasing the Daffodil VS Code Extension

    Code Block
    languagetext
    title\[ANNOUNCE\] Apache Daffodil 2.0.0 Released
    The Apache Daffodil 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/
    
    Apache Daffodil is an open-source implementation of the DFDL
    specification that uses DFDL data descriptions to parse fixed format
    data into an infoset. This infoset is commonly converted into XML or
    JSON to enable 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 serializing or
    "unparsing" data back to the original data format. The DFDL infoset
    can also be converted directly to/from the  data structures carried by
    data processing frameworks so as to bypass any XML/JSON overheads.
    
    For more information about Daffodil visit:
    
    https://daffodil.apache.org/
    
    Regards,
    The Apache Daffodil Team


  2. The same or a similar announcement can also be posted to the DFDL Workgroup News page here: https://github.com/OpenGridForum/DFDL/wiki/DFDL-Workgroup-News  (Done by a DFDL Workgroup member, like Mike B).
      
  3. Send a tweet from the @ApacheDaffodil twitter account, mentioning the release version, highlights of changes, and a link to the release page. You will need to be invited/accept, via tweedeckTweetdeck,   permission to tweet from the account. At which point you may compose the below style of message from Tweetdeck.

    Code Block
    The @ApacheDaffodil team is excited to announce the release of version 32.10.0!
    
    Notable changes include <short summary of changes>.
    
    Details and downloads at https://daffodil.apache.org/releases/32.10.0/


  4. 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 main branch.

(info)  For some Daffodil releases DFDL schemas must also have updated library versions. (E.g., for release 3.23.0, in the build.sbt the scalaVersion must be "2.12.15" to enable Java 17 to work.) This is generally a good time to update other library versions used by the DFDL schema to newer versions consistent with those used by Daffodil, which are in daffodil/project/Dependencies.scala. (E.g., junit and junit-interface).