Follow the instructions below when carrying out a Apache Stratos release:

  1. Email the dev list to let them know that the release process is beginning.

  2. Complete JIRA issues reported for this release version.

  3. Update Notice and License files. For more information, see Licensing.

  4. Update the license text in the source files and scripts.

  5. Have a GPG signing key configured.
  6. Clone the repository to be released.
  7. Verify the source for the required license headers using Apache Rat tool: 

    mvn -P pedantic verify -Dmaven.test.skip=true

  8. Create a new branch for the release.
  9. Update the README files, Puppet scripts, installer, and any other non-Maven managed files that contain a SNAPSHOT version with the release version. Once completed, commit and push the changes to the remote repository. The Maven release plugin does not update these files during the release build. As a result, when the tag is created by the release plugin, these files may have SNAPSHOT versions.

    Important

    The SNAPSHOT version in pom.xml files will be automatically changed to the release version by the Maven release plugin once the mvn release:perform command is executed in step 12.
  10. Create a Maven settings.xml file and place it in the ~/.m2/ folder:
    1. Add your Apache username, Apache password, GPG key name, and GPG pass-phrase:

      <settings>
        <servers>
          <!-- Snapshots repository -->
          <server>
            <id>apache.snapshots.https</id>
            <username></username>
            <password></password>
          </server>
          <!-- Staging repository --> 
          <server>
            <id>apache.releases.https</id>
            <username></username>
            <password></password>
          </server>
        </servers>
        <profiles>
           <profile>
              <id>apache-release</id>
              <properties>
                 <gpg.keyname></gpg.keyname>
                 <gpg.useagent>true</gpg.useagent>
                 <gpg.passphrase></gpg.passphrase>
              </properties>
           </profile>
         </profiles>
         <activeProfiles>
            <activeProfile>apache-release</activeProfile>
         </activeProfiles>
      </settings>
  11. Publish a snapshot:
    Execute the following command to publish Maven artifacts to the snapshots repository:
    mvn deploy
  12. Publish Maven artifacts to the staging repository. For more information, see Publishing Maven Artifacts.
    1. Release preparation:
      1. Execute the following command to prepare the Maven artifacts for the release. The given release tag will be created as the last step.

        mvn release:clean release:prepare -DreleaseVersion=<release-version> -Dtag=<release-tag> -DdevelopmentVersion=<development-version> -DpushChanges=false;

    2. Release perform:
      1. Execute the following command to publish Maven artifacts to the staging repository.

        mvn clean release:perform -DconnectionUrl=scm:git:file://`pwd`/.git -Dtag=<release-tag> -Darguments="-DskipTests";
  13. Verify that the artifacts are uploaded to the staging repository by logging into the following URL: https://repository.apache.org/index.html#stagingRepositories
  14. Close the Nexus staging repository. 

  15. Push the release commits and RC tags to the remote repos. 

  16. Generate the source release by executing the following command in the root source folder:

    git archive --format zip --output apache-stratos-<version>-source-release.zip  <version>
    For example: 

    git archive --format zip --output apache-stratos-4.0.0-source-release.zip 4.0.0

    The source package generated by Maven release plugin contains the .git folder. Therefore, we need to create the source package using the above git command.

  17. Sign all the release artifacts by executing the following script:

    #!/bin/sh
    
    rm *.asc
    rm *.md5
    rm *.sha1
    rm KEYS
    for f0 in  *.zip
     do
      echo $f0
      asc=".asc"
      md5=".md5"
      sha1=".sha1"
      f1=$f0$asc
      gpg --armor --output $f1 --detach-sig $f0
      f2=$f0$md5
      md5sum $f0  > $f2
      f3=$f0$sha1
      sha1sum $f0  > $f3
     done
    gpg --armor --export $1 > KEYS
  18. Download the signed binary packages from Apache staging repository using the following commands:

    repo_id= #staging repository id, ex: orgapachestratos-1004
     
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/load/balancer/apache-stratos-load-balancer/<version>/apache-stratos-load-balancer-<version>.zip
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/load/balancer/apache-stratos-load-balancer/<version>/apache-stratos-load-balancer-<version>.zip.asc
     
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos-cartridge-agent/<version>/apache-stratos-cartridge-agent-<version>-bin.zip
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos-cartridge-agent/<version>/apache-stratos-cartridge-agent-<version>-bin.zip.asc
     
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos-cli/<version>/apache-stratos-cli-<version>.zip
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos-cli/<version>/apache-stratos-cli-<version>.zip.asc
     
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos-haproxy-extension/<version>/apache-stratos-haproxy-extension-<version>-bin.zip
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos-haproxy-extension/<version>/apache-stratos-haproxy-extension-<version>-bin.zip.asc
     
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos/<version>/apache-stratos-<version>.zip
    wget https://repository.apache.org/service/local/repositories/${repo_id}/content/org/apache/stratos/apache-stratos/<version>/apache-stratos-<version>.zip.asc
    
    
  19. Check in the source release, binary files, and their signatures to Apache dist:

    https://dist.apache.org/repos/dist/dev/stratos/releases/<release-candidate>
  20. Verify the release. For more information, see Release Verification Guide.
  21. Send a release discussion email to the dev list. A sample email format is shown below:

    [Discuss] Release Apache Stratos <version>
    
    Hi All,
    
    This thread is for discussion of the first release candidate for Apache Stratos <version>. Please use this thread for discussion of
    issues uncovered in the RC, questions you may have about the RC, etc.
    
    The RC release packs could be found here [1]. A git tag (<version>) [2] has been created for this release and its tree view could be seen here [3].
    
    [1] https://dist.apache.org/repos/dist/dev/stratos/releases/<version>/
    [2] https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=tag;h=cd5f427d4c77380ae24c85971c3d7a1a1c4497b3
    [3] https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=tree;h=refs/tags/<version>;hb=refs/tags/<version>
    
    Thanks 
  22. Send a release voting email to the dev list. A sample email format is shown below:

    [Vote] Release Apache Stratos <version>
    
    Hi All,
    
    This is the first release candidate of Apache Stratos <version>.
    
    This is a PPMC vote - if this passes, we'll move it onward to an IPMC vote. Please use the [DISCUSS] thread for anything but votes.
    
    This release fixes the following issues:
    
    https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12326291&styleName=Html&projectId=12314521
    
    *** Please download, test and vote. The vote runs for 72 hours, until Sunday, April 27, 2014, 11:00:00 AM PST, Sunday, April 27, 2014, 11:30:00 PM IST.
    
    Note that we are voting upon the source (tag), binaries are provided for convenience.
    
    Binary files:
    https://dist.apache.org/repos/dist/dev/incubator/stratos/releases/<version>/
    
    Maven staging repo:
    https://repository.apache.org/content/repositories/orgapachestratos-1004/
    
    The tag to be voted upon:
    https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=tag;h=cd5f427d4c77380ae24c85971c3d7a1a1c4497b3
    
    Tree view of the tag:
    https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=tree;h=refs/tags/<version>;hb=refs/tags/<version>
    
    Stratos KEYS file containing PGP keys we use to sign the release:
    https://dist.apache.org/repos/dist/dev/incubator/stratos/releases/<version>/KEYS
    
    Testing procedure:
    https://cwiki.apache.org/confluence/display/STRATOS/<version>+Testing+Procedure
    
    
    [ ] +1
    [ ] 0
    [ ] -1 (explain why)
    
    
    Thanks

For more information, go to Release Management.

  • No labels