Retro Eye care Haitian Deep Dark Default

GPG Settings

Please refer to Release Guide.

Apache Maven Central Repository Release

1. Set settings.xml

Add the following template to ~/.m2/settings.xml, all the passwords need to be filled in after encryption. For encryption settings, please see here.

          <username> <!-- APACHE LDAP username --> </username>
          <password> <!-- APACHE LDAP encrypted password --> </password>
          <username> <!-- APACHE LDAP username --> </username>
          <password> <!-- APACHE LDAP encrypted password --> </password>

2. Update Release Notes

3. Create Release Branch

Suppose ElasticJob-UI source codes downloaded from github is under ~/elasticjob-ui/ directory and the version to be released is ${RELEASE.VERSION}. Create ${RELEASE.VERSION}-release branch, where all the following operations are performed.

## ${name} is the properly branch, e.g. master, dev-4.x
git clone --branch ${name} ~/elasticjob-ui
cd ~/elasticjob-ui/
git pull
git checkout -b ${RELEASE.VERSION}-release
git push origin ${RELEASE.VERSION}-release

4. Pre-Release Check

cd ~/elasticjob-ui
mvn release:prepare -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -DdryRun=true -Dusername=${Github username}

-Prelease: choose release profile, which will pack all the source codes, jar files and executable binary packages of ElasticJob-UI.

-DautoVersionSubmodules=true: it can make the version number is inputted only once and not for each sub-module.

-DdryRun=true: rehearsal, which means not to generate or submit new version number and new tag.

5. Prepare for the Release

First, clean local pre-release check information.

cd ~/elasticjob-ui
mvn release:clean

Then, prepare to execute the release.

cd ~/elasticjob-ui
mvn release:prepare -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -DpushChanges=false -Dusername=${Github username}

It is basically the same as the previous rehearsal command, but deleting -DdryRun=true parameter.

-DpushChanges=false: do not submit the edited version number and tag to Github automatically.

After making sure there is no mistake in local files, submit them to GitHub.

git push origin ${RELEASE.VERSION}-release
git push origin --tags

6. Deploy the Release

cd ~/elasticjob-ui
mvn release:perform -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=${Github username}

Apache SVN Repository Release

1. Checkout ShardingSphere Release Directory

If there is no local work directory, create one at first.

mkdir -p ~/ss_svn/dev/
cd ~/ss_svn/dev/

After the creation, checkout ShardingSphere release directory from Apache SVN.

svn --username=${APACHE LDAP username} co
cd ~/ss_svn/dev/shardingsphere

2. Add gpg Public Key

Only the account in its first deployment needs to add that. It is alright for KEYS to only include the public key of the deployed account.

gpg -a --export ${GPG username} >> KEYS

3. Add the Release Content to SVN Directory

Create folder by version number.

mkdir -p ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}
cd ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}

Add source code packages, binary packages and executable binary packages of ShardingSphere-Proxy to SVN working directory.

cp -f ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-ui-src-distribution/target/*.zip ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}
cp -f ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-ui-src-distribution/target/*.zip.asc ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}
cp -f ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-lite-ui-bin-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}
cp -f ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-lite-ui-bin-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}
cp -f ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-cloud-ui-bin-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}
cp -f ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-cloud-ui-bin-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/elasticjob-ui-${RELEASE.VERSION}

4. Generate sign files

shasum -a 512 apache-shardingsphere-elasticjob-${RELEASE.VERSION} > apache-shardingsphere-elasticjob-${RELEASE.VERSION}
shasum -b -a 512 apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz > apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz.sha512
shasum -b -a 512 apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-ui-bin.tar.gz > apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-ui-bin.tar.gz.sha512

5. Commit to Apache SVN

cd ~/ss_svn/dev/shardingsphere/
svn add elasticjob-ui-${RELEASE.VERSION}
svn --username=${APACHE LDAP 用户名} commit -m "release elasticjob-ui-${RELEASE.VERSION}"

Check Release

Check sha512 hash

shasum -c apache-shardingsphere-elasticjob-${RELEASE.VERSION}
shasum -c apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz.sha512
shasum -c apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-ui-bin.tar.gz.sha512

Check gpg Signature

First, import releaser’s public key. Import KEYS from SVN repository to local. (The releaser does not need to import again; the checking assistant needs to import it, with the user name filled as the releaser’s. )

curl >> KEYS
gpg --import KEYS
gpg --edit-key "${GPG username of releaser}"
  > trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5

  > save

Then, check the gpg signature.

gpg --verify apache-shardingsphere-elasticjob-${RELEASE.VERSION} apache-shardingsphere-elasticjob-${RELEASE.VERSION}
gpg --verify apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz.asc apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz
gpg --verify apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-ui-bin.tar.gz.asc apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-ui-bin.tar.gz

Check Released Files

Compare release source with github tag

unzip tag-${RELEASE.VERSION}.zip
unzip apache-shardingsphere-elasticjob-${RELEASE.VERSION}
diff -r apache-shardingsphere-elasticjob-${RELEASE.VERSION}-ui-src shardingsphere-elasticjob-ui-${RELEASE.VERSION}

Check source package

  • Check whether source tarball is oversized for including nonessential files
  • LICENSE and NOTICE files exist
  • Correct year in NOTICE file
  • There is only text files but no binary files
  • All source files have ASF headers
  • Codes can be compiled and pass the unit tests (./mvnw -T 1C install)
  • Check if there is any extra files or folders, empty folders for example

Check binary packages

Decompress apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-ui-bin.tar.gz and apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-ui-bin.tar.gz to check the following items:

  • LICENSE and NOTICE files exist
  • Correct year in NOTICE file
  • All text files have ASF headers
  • Check the third party dependency license:
    • The software has a compatible license
    • All software licenses mentioned in LICENSE
    • All the third party dependency licenses are under licenses folder
    • If it depends on Apache license and has a NOTICE file, that NOTICE file need to be added to NOTICE file of the release

Call for a Vote

Vote procedure

  1. ShardingSphere community vote: send the vote e-mail to PMC needs to check the rightness of the version according to the document before they vote. After at least 72 hours and with at least 3 +1 PMC member votes, it can come to the next stage of the vote.

  2. Announce the vote result: send the result vote e-mail to

Vote Templates

  1. ShardingSphere Community Vote Template


[VOTE] Release Apache ShardingSphere ElasticJob UI ${RELEASE.VERSION}


Hello ShardingSphere Community,

This is a call for vote to release Apache ShardingSphere ElasticJob UI version ${RELEASE.VERSION}

Release notes:

The release candidates:${RELEASE.VERSION}/

Git tag for the release:${RELEASE.VERSION}/

Release Commit ID:

Keys to verify the Release Candidate:

Look at here for how to verify this release candidate:

GPG user ID:

The vote will be open for at least 72 hours or until necessary number of votes are reached.

Please vote accordingly:

[ ] +1 approve 

[ ] +0 no opinion
[ ] -1 disapprove with the reason

PMC vote is +1 binding, all others is +1 non-binding.

Checklist for reference:

[ ] Download links are valid.

[ ] Checksums and PGP signatures are valid.

[ ] Source code distributions have correct names matching the current release.

[ ] LICENSE and NOTICE files are correct for each ShardingSphere repo.

[ ] All files have license headers if necessary.

[ ] No compiled archives bundled in source archive.
  1. Announce the vote result:


[RESULT][VOTE] Release Apache ShardingSphere ElasticJob UI ${RELEASE.VERSION}


We’ve received 3 +1 binding votes and one +1 non-binding vote:

+1 binding, xxx
+1 binding, xxx
+1 binding, xxx

+1 non-binding, xxx

Thank you everyone for taking the time to review the release and help us. 
I will process to publish the release and send ANNOUNCE.

Finish the Release

1. Move source packages, binary packages and KEYS from the dev directory to release directory

svn mv${RELEASE.VERSION} -m "transfer packages for elasticjob-ui-${RELEASE.VERSION}"
svn delete -m "delete KEYS"
svn cp -m "transfer KEYS for elasticjob-ui-${RELEASE.VERSION}"

2. Merge release branch to master and delete release branch on Github

git checkout master
git merge origin/${RELEASE.VERSION}-release
git pull
git push origin master
git push --delete origin ${RELEASE.VERSION}-release
git branch -d ${RELEASE.VERSION}-release

3. Docker Release (cloud-ui)

3.1 Preparation

Install and start docker service

3.2 Compile Docker Image

git checkout ${RELEASE.VERSION}
cd ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-cloud-ui-bin-distribution/
mvn clean package -Prelease,docker

3.3 Tag the local Docker Image

Check the image ID through docker images, for example: e9ea51023687

docker tag e9ea51023687 apache/shardingsphere-elasticjob-cloud-ui:latest
docker tag e9ea51023687 apache/shardingsphere-elasticjob-cloud-ui:${RELEASE.VERSION}

3.4 Publish Docker Image

docker push apache/shardingsphere-elasticjob-cloud-ui:latest
docker push apache/shardingsphere-elasticjob-cloud-ui:${RELEASE_VERSION}

3.5 Confirm the successful release

Login Docker Hub to check whether there are published images

4. Docker Release (lite-ui)

4.1 Preparation

Install and start docker service

4.2 Compile Docker Image

cd ~/elasticjob-ui/shardingsphere-elasticjob-ui-distribution/shardingsphere-elasticjob-lite-ui-bin-distribution/
mvn clean package -Prelease,docker

4.3 Tag the local Docker Image

Check the image ID through docker images, for example: e9ea51023687

docker tag e9ea51023687 apache/shardingsphere-elasticjob-lite-ui:latest
docker tag e9ea51023687 apache/shardingsphere-elasticjob-lite-ui:${RELEASE.VERSION}

4.4 Publish Docker Image

docker login
docker push apache/shardingsphere-elasticjob-lite-ui:latest
docker push apache/shardingsphere-elasticjob-lite-ui:${RELEASE_VERSION}

4.5 Confirm the successful release

Login Docker Hub to check whether there are published images

5. Publish release in GitHub

Click Edit in GitHub Releases’s shardingsphere-elasticjob-ui-${RELEASE_VERSION} version

Edit version number and release notes, click Publish release

6. Update the download page

GPG signatures and hashes (SHA* etc) should use URL start with

Keep one latest versions in Latest releases.

7. Announce release completed by email

Send e-mail to and to announce the release is finished

Announcement e-mail template:


[ANNOUNCE] Apache ShardingSphere ElasticJob UI ${RELEASE.VERSION} available


Hi all,

Apache ShardingSphere Team is glad to announce the new release of Apache ShardingSphere ElasticJob UI ${RELEASE.VERSION}.

ElasticJob is a distributed scheduling solution consisting of two separate projects, ElasticJob-Lite and ElasticJob-Cloud.
Through the functions of flexible scheduling, resource management and job management, it creates a distributed scheduling solution suitable for Internet scenarios, and provides diversified job ecosystem through open architecture design. It uses a unified job API for each project. Developers only need code one time and can deploy at will.
ElasticJob became an Apache ShardingSphere Sub project on May 28 2020.

Download Links:

Release Notes:


ShardingSphere-ElasticJob Resources:
- Issue:
- Mailing list:
- Documents:

- Apache ShardingSphere Team