This Guide helps you to do the release in Apache for ServiceComb projects.
To prepare or perform a released you MUST BE at least an Apache ServiceComb committer.
- The CI for the project should be green.
- Should have the version number for the project.
- Should have Sign Key for signing the release, the keys should be published to public key server.
- Get familiar with the release settings in the parent Apache POM
Maven 2 Setup
As ServiceComb Java Chassis and Saga are using maven for the release, you should do some maven 2 setup before releasing these two projects. Before you deploy anything to the maven repository using Maven 2, you should configure your ~/.m2/settings.xml file so that the file permissions of the deployed artifacts are group writable. If you do not do this, other developers will not able to overwrite your SNAPSHOT releases with newer versions. The settings follow the guidelines used by the Maven project. Please pay particular attention to the password encryption recommendations.
<settings> ... <servers> <!-- Per http://maven.apache.org/developers/committer-settings.html --> <!-- To publish a snapshot of some part of Maven --> <server> <id>apache.snapshots.https</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <password> <!-- YOUR APACHE LDAP PASSWORD --> </password> </server> <!-- To publish a website of some part of Maven --> <server> <id>apache.website</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> </server> <!-- To stage a release of some part of Maven --> <server> <id>apache.releases.https</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <password> <!-- YOUR APACHE LDAP PASSWORD --> </password> </server> <!-- To stage a website of some part of Maven --> <server> <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy --> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> </server> </servers> ... <profiles> <profile> <id>apache-release</id> <properties> <gpg.useagent>false</gpg.useagent> <gpg.passphrase><!-- YOUR GPG PASSPHRASE --></gpg.passphrase> <test>false</test> </properties> </profile> </profiles> ... </settings>
Major Steps for doing Service-Center Release
Make and Verify the Release
- Clone the service-center code.
git clone https://github.com/apache/servicecomb-service-center.git cd servicecomb-service-center gvt restore
Create a Tag from the master branch based on the version number which needs to be released.
Run RAT tool to ensure no license issues are there, follow the guide over here
Run the make_release.sh to make the release for windows and linux following the guide over here.
Last Step will make the releases in root folder.
Run the releases of frontend and service-center in both linux and windows.
Run the integration test on the release.
If all the test passes then send the release candidate to peers to test in different machines.
- Push the tag to master.
Sign the Release
Once the tag is pushed then using the tag download the source code from git tag.
Sign the 4 releases(linux, windows, darwin, src) and checksum.
Create a new directory Apache dev Release SVN with release package name and release candidate number. (for example : if you want to release 1.0.0-m2 and this is the second attempt of the release then the folder structure will be
Upload the release to the directory created in last step.
Download all the releases from SVN and verify the signature and checksum.
Send the voting mail in email@example.com for 1PMC approval.
Wait for 72 hours or unless you get 3 +1 binding vote with no -1 vote. If you get even one -1 binding vote then fix the issue and start again from Step 1.
Publish the result of the vote in firstname.lastname@example.org.
Upload the releases to Apache release repository.
Wait for 24 hours to replicate the release in all the mirrors.
Delete old releases from dev and [release] (https://dist.apache.org/repos/dist/release) and check for the old release in archive, update the same links in the website for old releases.
Upload the release page of ServiceComb Website.
Send the announcement mails to email@example.com, firstname.lastname@example.org
Major Steps for doing Java-Chassis Release
Before release, make sure all apache issues are closed. Log in
apache issue website, click
release and generate release notes.
Prepare the release code
clone java-chassis code to your development environment, change version to release version and push to github.
Assume code version is
2.0.0-SNAPSHOT and release version is
```shell script mvn versions:set -DgenerateBackupPoms=false -DnewVersion=2.0.0
Then: ```shell script mvn clean install -Pit
If the build is successful, submit a PR and merge code after review.
Release maven artifacts
Prepare Linux environment, and make sure can upload artifacts to maven central.
Copy GPG keys to
``` gpg.conf pubring.gpg random_seed secring.gpg trustdb.gpg ```
Update PGR password in
Update apache maven server user name and password in
``` git clone https://github.com/apache/servicecomb-java-chassis.git ```
``` mvn clean deploy -DskipTests -Prelease -Pdistribution -Ppassphrase ```
If failed in step 5,
dropthe temporary repository in apache Nexus and start from step 5 again.
If step 5 is successful, all artifacts are uploaded to a temporary repository. Using your apache account and log in to Apache Nexus. Click
Staging Repositories, search
servicecomb, find the latest repository, click “close”, and get the staging repository link like
In servicecomb-java-chassis release page，click release， do a
Sign the distributions
Download binary distributions from the temporary repository. e.g.
``` https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip.asc ```
Download source distributions from the temporary repository. e.g.
``` https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-src.zip https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-src.zip.asc ```
generate checksum. e.g.
``` sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip > apache-servicecomb-java-chassis-distribution-1.2.0-bin.zi.sha512 sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-src.zip > apache-servicecomb-java-chassis-distribution-1.2.0-src.zip.sha512 ```
upload all file to Apache development svn. Run
``` svn co https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-java-chassis cd serviecomb-java-chassis mkdir -p 1.2.0/rc01 cp xxx/* 1.2.0/rc01 svn add 1.2.0 svn ci 1.2.0 ```
download the files and verify the sign.
Sending mail for permission
Send mail to
email@example.com waiting for voting result.
Waiting 72 hours and if got three + 1 and no -1, the voting is successful. If there are some problems, start a new round of release. (According to the problem, please notice to clean up release notes, temporary svn files, and temporary stating repositories. )
Send the voting result to
Update documents and announcements
In servicecomb-java-chassis github release page，set
formal releaseand write release notes.
``` cp dev/servicecomb/servicecomb-java-chassis/2.0.0/* release/servicecomb/servicecomb-java-chassis/2.0.0/ cd release/servicecomb/servicecomb-java-chassis/ svn add 2.0.0 svn ci 2.0.0 ```
And delete dev
``` svn rm 1.2.0 svn ci . ```
Log in to Apache Nexus, find
Staging Repositoriesand search
servicecomb，find the last
closedrepository, and click
release. If there are any temporary
Waiting for 24 hour for all mirror in sync.
Send announcements to
Major Steps for doing Pack Release
Please refer to ServiceComb Pack Release Guide
- The whole process generally takes 1 weeks to complete assuming you don’t get any -1 from PMC, so please plan the release activity before hand.