release.en.md 18.6 KB
Newer Older
T
terrymanu 已提交
1
+++
2
title = "ShardingSphere Release Guide"
T
terrymanu 已提交
3
weight = 6
T
terrymanu 已提交
4 5
chapter = true
+++
T
terrymanu 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

## GPG Settings

### Install GPG

Download installation package on [official GnuPG website](https://www.gnupg.org/download/index.html). 
The command of GnuPG 1.x version can differ a little from that of 2.x version. 
The following instructions take `GnuPG-2.1.23` version for example.
After the installation, execute the following command to check the version number.

```shell
gpg --version
```

### Create Key

After the installation, execute the following command to create key.

This command indicates `GnuPG-2.x` can be used:

```shell
gpg --full-gen-key
```

This command indicates `GnuPG-1.x` can be used:

```shell
gpg --gen-key
```

Finish the key creation according to instructions:

P
panjuan 已提交
38 39
**Notice: Please use Apache mail for key creation.**

T
terrymanu 已提交
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
```shell
gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
  (1) RSA and RSA (default)
  (2) DSA and Elgamal
  (3) DSA (sign only)
  (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
        0 = key does not expire
     <n>  = key expires in n days
     <n>w = key expires in n weeks
     <n>m = key expires in n months
     <n>y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: ${Input username}
Email address: ${Input email}
Comment: ${Input comment}
You selected this USER-ID:
   "${Inputed username} (${Inputed comment}) <${Inputed email}>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key. # Input passwords
```

### Check Generated Key

```shell
gpg --list-keys
```

Execution Result:

```shell
pub   4096R/700E6065 2019-03-20
uid                  ${Username} (${Comment}) <{Email}>
sub   4096R/0B7EF5B2 2019-03-20
```

Among them, 700E6065 is public key ID.

### Upload the Public Key to Key Server

W
wubingting 已提交
94
The command is as follows:
T
terrymanu 已提交
95 96 97 98 99

```shell
gpg --keyserver hkp://pool.sks-keyservers.net --send-key 700E6065
```

T
tuohai666 已提交
100
`pool.sks-keyservers.net` is randomly chosen from [public key server](https://sks-keyservers.net/status/). 
T
terrymanu 已提交
101 102
Each server will automatically synchronize with one another, so it would be okay to choose any one.

T
tuohai666 已提交
103
## Apache Maven Central Repository Release
T
terrymanu 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

### 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](http://maven.apache.org/guides/mini/guide-encryption.html).

```xml
<settings>
    <servers>
      <server>
          <id>apache.snapshots.https</id>
          <username> <!-- APACHE LDAP username --> </username>
          <password> <!-- APACHE LDAP encrypted password --> </password>
      </server>
      <server>
          <id>apache.releases.https</id>
          <username> <!-- APACHE LDAP username --> </username>
          <password> <!-- APACHE LDAP encrypted password --> </password>
      </server>
    </servers>
</settings>
```

127 128
### Update Release Notes

kimmking's avatar
kimmking 已提交
129 130
Update the following file in master branch, and submit a PR to master branch:

131
```
kimmking's avatar
kimmking 已提交
132
https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md
133 134
```

T
terrymanu 已提交
135 136
### Create Release Branch

kimmking's avatar
kimmking 已提交
137
Suppose ShardingSphere source codes downloaded from github is under `~/shardingsphere/` directory and the version to be released is `4.0.0-RC`. 
T
terrymanu 已提交
138
Create `${RELEASE.VERSION}-release` branch, where all the following operations are performed.
T
terrymanu 已提交
139 140

```shell
141
## ${name} is the properly branch, e.g. master, dev-4.x
kimmking's avatar
kimmking 已提交
142 143
git clone --branch ${name} https://github.com/apache/shardingsphere.git ~/shardingsphere
cd ~/shardingsphere/
T
terrymanu 已提交
144
git pull
T
terrymanu 已提交
145
git checkout -b ${RELEASE.VERSION}-release
T
terrymanu 已提交
146
git push origin ${RELEASE.VERSION}-release
T
terrymanu 已提交
147 148 149 150 151 152 153 154
```

### Pre-Release Check

```shell
mvn release:prepare -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -DdryRun=true -Dusername=${Github username}
```

T
terrymanu 已提交
155
-Prelease: choose release profile, which will pack all the source codes, jar files and executable binary packages of ShardingSphere-Proxy.
T
terrymanu 已提交
156 157 158

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

T
tuohai666 已提交
159
-DdryRun=true: rehearsal, which means not to generate or submit new version number and new tag.
T
terrymanu 已提交
160 161 162 163 164 165 166 167 168

### Prepare for the Release

First, clean local pre-release check information.

```shell
mvn release:clean
```

T
tuohai666 已提交
169
Then, prepare to execute the release. Before releasing, update the POM of the two modules of examples and shardingsphere-ui, changing the version from ${CURRENT.VERSION} to ${RELEASE.VERSION}.
T
terrymanu 已提交
170 171 172 173 174

```shell
mvn release:prepare -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -DpushChanges=false -Dusername=${Github username}
```

T
tuohai666 已提交
175
It is basically the same as the previous rehearsal command, but deleting -DdryRun=true parameter.
T
terrymanu 已提交
176 177 178 179 180 181

-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.

```shell
Z
Zhang Yonglun 已提交
182
git push origin ${RELEASE.VERSION}-release
T
terrymanu 已提交
183 184 185 186 187 188 189 190 191 192
git push origin --tags
```

### Deploy the Release

```shell
mvn release:perform -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=${Github username}
```

After that command is executed, the version to be released will be uploaded to Apache staging repository automatically. 
T
tuohai666 已提交
193
Visit [https://repository.apache.org/#stagingRepositories](https://repository.apache.org/#stagingRepositories) and use Apache LDAP account to log in; then you can see the uploaded version, the content of `Repository` column is the ${STAGING.REPOSITORY}. 
T
terrymanu 已提交
194 195 196
Click `Close` to tell Nexus that the construction is finished, because only in this way, this version can be usable. 
If there is any problem in gpg signature, `Close` will fail, but you can see the failure information through `Activity`.

T
tuohai666 已提交
197
## Apache SVN Repository Release
T
terrymanu 已提交
198

T
tuohai666 已提交
199
### Checkout ShardingSphere Release Directory
T
terrymanu 已提交
200 201 202 203 204 205 206 207

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

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

T
tuohai666 已提交
208
After the creation, checkout ShardingSphere release directory from Apache SVN.
T
terrymanu 已提交
209 210

```shell
kimmking's avatar
kimmking 已提交
211
svn --username=${APACHE LDAP username} co https://dist.apache.org/repos/dist/dev/shardingsphere
T
terrymanu 已提交
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
cd ~/ss_svn/dev/shardingsphere
```

### 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.

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

### Add the Release Content to SVN Directory

Create folder by version number.

```shell
T
terrymanu 已提交
229 230
mkdir -p ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cd ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
T
terrymanu 已提交
231 232
```

T
terrymanu 已提交
233
Add source code packages, binary packages and executable binary packages of ShardingSphere-Proxy to SVN working directory.
T
terrymanu 已提交
234 235

```shell
T
terrymanu 已提交
236 237 238 239 240 241 242 243
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-src-distribution/target/*.zip ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-src-distribution/target/*.zip.asc ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-jdbc-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-jdbc-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-proxy-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-proxy-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-scaling-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-scaling-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
T
terrymanu 已提交
244 245
```

T
tuohai666 已提交
246
### Generate sign files
T
terrymanu 已提交
247 248

```shell
kimmking's avatar
kimmking 已提交
249
shasum -a 512 apache-shardingsphere-${RELEASE.VERSION}-src.zip >> apache-shardingsphere-${RELEASE.VERSION}-src.zip.sha512
T
terrymanu 已提交
250 251 252
shasum -b -a 512 apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-jdbc-bin.tar.gz >> apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-jdbc-bin.tar.gz.sha512
shasum -b -a 512 apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-proxy-bin.tar.gz >> apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-proxy-bin.tar.gz.sha512
shasum -b -a 512 apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-scaling-bin.tar.gz >> apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-scaling-bin.tar.gz.sha512
T
terrymanu 已提交
253 254 255 256 257 258
```

### Commit to Apache SVN

```shell
svn add *
T
terrymanu 已提交
259
svn --username=${APACHE LDAP username} commit -m "release ${RELEASE.VERSION}"
T
terrymanu 已提交
260 261 262 263
```

## Check Release

T
tuohai666 已提交
264
### Check sha512 hash
T
terrymanu 已提交
265 266

```shell
kimmking's avatar
kimmking 已提交
267
shasum -c apache-shardingsphere-${RELEASE.VERSION}-src.zip.sha512
T
terrymanu 已提交
268 269 270
shasum -c apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-jdbc-bin.tar.gz.sha512
shasum -c apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-proxy-bin.tar.gz.sha512
shasum -c apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-scaling-bin.tar.gz.sha512
T
terrymanu 已提交
271 272 273 274 275
```

### Check gpg Signature

First, import releaser's public key. 
T
tuohai666 已提交
276
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. )
T
terrymanu 已提交
277 278

```shell
kimmking's avatar
kimmking 已提交
279
curl https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS >> KEYS
T
terrymanu 已提交
280 281 282
gpg --import KEYS
gpg --edit-key "${GPG username of releaser}"
  > trust
Z
Zhang Yonglun 已提交
283 284 285 286 287 288 289 290 291 292 293 294 295

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

T
terrymanu 已提交
296 297 298 299 300 301
  > save
```

Then, check the gpg signature.

```shell
kimmking's avatar
kimmking 已提交
302
gpg --verify apache-shardingsphere-${RELEASE.VERSION}-src.zip.asc apache-shardingsphere-${RELEASE.VERSION}-src.zip
T
terrymanu 已提交
303 304 305
gpg --verify apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-jdbc-bin.tar.gz.asc apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-jdbc-bin.tar.gz
gpg --verify apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-proxy-bin.tar.gz.asc apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-proxy-bin.tar.gz
gpg --verify apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-scaling-bin.tar.gz.asc apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-scaling-bin.tar.gz
T
terrymanu 已提交
306 307 308 309
```

### Check Released Files

310
#### compare release source with github tag
T
terrymanu 已提交
311

312
```
Z
Zhang Yonglun 已提交
313 314
curl -Lo tag-${RELEASE.VERSION}.zip https://github.com/apache/shardingsphere/archive/${RELEASE.VERSION}.zip
unzip tag-${RELEASE.VERSION}.zip
kimmking's avatar
kimmking 已提交
315
unzip apache-shardingsphere-${RELEASE.VERSION}-src.zip
316
diff -r apache-shardingsphere-${RELEASE.VERSION}-src-release shardingsphere-${RELEASE.VERSION}
317 318 319
```

#### Check source package
T
terrymanu 已提交
320

Z
Zhang Yonglun 已提交
321
*   Check whether source tarball is oversized for including nonessential files
T
tuohai666 已提交
322
*   `LICENSE` and `NOTICE` files exist
Z
Zhang Yonglun 已提交
323
*   Correct year in `NOTICE` file
T
tuohai666 已提交
324
*   There is only text files but no binary files
T
tuohai666 已提交
325
*   All source files have ASF headers
P
PseudoBinary 已提交
326
*   Codes can be compiled and pass the unit tests (./mvnw install)
T
terrymanu 已提交
327 328 329 330
*   Check if there is any extra files or folders, empty folders for example

#### Check binary packages

T
terrymanu 已提交
331 332
Decompress `apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-jdbc-bin.tar.gz`, `apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-proxy-bin.tar.gz` and
`apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-scaling-bin.tar.gz`
P
panjuan 已提交
333
to check the following items:
T
terrymanu 已提交
334

T
tuohai666 已提交
335
*   `LICENSE` and `NOTICE` files exist
Z
Zhang Yonglun 已提交
336
*   Correct year in `NOTICE` file
T
tuohai666 已提交
337
*   All text files have ASF headers
T
terrymanu 已提交
338
*   Check the third party dependency license:
T
tuohai666 已提交
339 340
    *   The software have a compatible license
    *   All software licenses mentioned in `LICENSE`
T
terrymanu 已提交
341
    *   All the third party dependency licenses are under `licenses` folder
T
tuohai666 已提交
342
    *   If it depends on Apache license and has a `NOTICE` file, that `NOTICE` file need to be added to `NOTICE` file of the release
T
terrymanu 已提交
343 344 345

## Call for a Vote

T
tuohai666 已提交
346
### Vote procedure
T
terrymanu 已提交
347 348

1. ShardingSphere community vote: send the vote e-mail to `dev@shardingsphere.apache.org`. 
349 350
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.
T
terrymanu 已提交
351

352
2. Announce the vote result: send the result vote e-mail to `dev@shardingsphere.apache.org`.
T
terrymanu 已提交
353

T
tuohai666 已提交
354
### Vote Templates
T
terrymanu 已提交
355 356 357 358 359 360

1. ShardingSphere Community Vote Template

Title:

```
kimmking's avatar
kimmking 已提交
361
[VOTE] Release Apache ShardingSphere ${RELEASE.VERSION}
T
terrymanu 已提交
362 363 364 365 366 367 368 369

```

Body:

```
Hello ShardingSphere Community,

kimmking's avatar
kimmking 已提交
370
This is a call for vote to release Apache ShardingSphere version ${RELEASE.VERSION}
T
terrymanu 已提交
371 372

Release notes:
kimmking's avatar
kimmking 已提交
373
https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md
T
terrymanu 已提交
374 375

The release candidates:
kimmking's avatar
kimmking 已提交
376
https://dist.apache.org/repos/dist/dev/shardingsphere/${RELEASE.VERSION}/
T
terrymanu 已提交
377 378

Maven 2 staging repository:
T
tuohai666 已提交
379
https://repository.apache.org/content/repositories/${STAGING.REPOSITORY}/org/apache/shardingsphere/
T
terrymanu 已提交
380 381

Git tag for the release:
kimmking's avatar
kimmking 已提交
382
https://github.com/apache/shardingsphere/tree/${RELEASE.VERSION}
T
terrymanu 已提交
383 384

Release Commit ID:
kimmking's avatar
kimmking 已提交
385
https://github.com/apache/shardingsphere/commit/xxxxxxxxxxxxxxxxxxxxxxx
T
terrymanu 已提交
386 387

Keys to verify the Release Candidate:
kimmking's avatar
kimmking 已提交
388
https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS
T
terrymanu 已提交
389

T
terrymanu 已提交
390 391 392
Look at here for how to verify this release candidate:
https://shardingsphere.apache.org/community/en/contribute/release/

Z
Zhang Yonglun 已提交
393 394 395
GPG user ID:
${YOUR.GPG.USER.ID}

T
terrymanu 已提交
396 397 398 399 400
The vote will be open for at least 72 hours or until necessary number of votes are reached.

Please vote accordingly:

[ ] +1 approve 
T
terrymanu 已提交
401 402 403

[ ] +0 no opinion
 
T
terrymanu 已提交
404 405
[ ] -1 disapprove with the reason

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

T
terrymanu 已提交
408 409 410 411 412 413
Checklist for reference:

[ ] Download links are valid.

[ ] Checksums and PGP signatures are valid.

414
[ ] Source code distributions have correct names matching the current release.
T
terrymanu 已提交
415 416 417 418 419 420

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

[ ] All files have license headers if necessary.

[ ] No compiled archives bundled in source archive.
T
terrymanu 已提交
421 422
```

T
tuohai666 已提交
423 424
2. Announce the vote result:

425 426 427
Title:

```
kimmking's avatar
kimmking 已提交
428
[RESULT][VOTE] Release Apache ShardingSphere ${RELEASE.VERSION}
429 430
```

T
terrymanu 已提交
431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448
Body:

```
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

449
### Move source packages, binary packages and KEYS from the `dev` directory to `release` directory
T
terrymanu 已提交
450 451

```shell
kimmking's avatar
kimmking 已提交
452 453 454
svn mv https://dist.apache.org/repos/dist/dev/shardingsphere/${RELEASE.VERSION} https://dist.apache.org/repos/dist/release/shardingsphere/ -m "transfer packages for ${RELEASE.VERSION}"
svn delete https://dist.apache.org/repos/dist/release/shardingsphere/KEYS -m "delete KEYS"
svn cp https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS https://dist.apache.org/repos/dist/release/shardingsphere/ -m "transfer KEYS for ${RELEASE.VERSION}"
T
terrymanu 已提交
455 456
```

457
### Find ShardingSphere in staging repository and click `Release`
T
terrymanu 已提交
458

459
### Merge release branch to `master` and delete release branch on Github
T
terrymanu 已提交
460

T
terrymanu 已提交
461
```shell
462
git checkout master
T
terrymanu 已提交
463
git merge origin/${RELEASE.VERSION}-release
Z
Zhang Yonglun 已提交
464
git pull
Z
Zhang Yonglun 已提交
465
git push origin master
T
terrymanu 已提交
466
git push --delete origin ${RELEASE.VERSION}-release
Z
Zhang Yonglun 已提交
467
git branch -d ${RELEASE.VERSION}-release
T
terrymanu 已提交
468 469
```

Z
Zhang Yonglun 已提交
470
### Update README files
471

Z
Zhang Yonglun 已提交
472
Update `${PREVIOUS.RELEASE.VERSION}` to `${RELEASE.VERSION}` in README.md and README_ZH.md
473 474 475 476

Update `${RELEASE.VERSION}` to `${NEXT.RELEASE.VERSION}` for `SERVER_VERSION` in `MySQLServerInfo.java`

### Update the download page
477 478

https://shardingsphere.apache.org/document/current/en/downloads/
479

480 481
https://shardingsphere.apache.org/document/current/cn/downloads/

482 483 484
GPG signatures and hashes (SHA* etc) should use URL start with `https://downloads.apache.org/shardingsphere/`

Keep one latest versions in `Latest releases`. Incubating stage versions will be archived automatically in [Archive repository](https://archive.apache.org/dist/incubator/shardingsphere/)
Z
Zhang Yonglun 已提交
485

486
### Docker Release
487

488
#### Preparation
489

490
Install docker locally and start the docker service
491

492
#### Compile Docker Image
493

494
```shell
495
git checkout ${RELEASE.VERSION}
T
terrymanu 已提交
496
cd ~/shardingsphere/shardingsphere-distribution/shardingsphere-proxy-distribution/
497
mvn clean package -Prelease,docker
498 499
```

500
#### Tag the local Docker Image
501

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

504
```shell
kimmking's avatar
kimmking 已提交
505 506
docker tag e9ea51023687 apache/sharding-proxy:latest
docker tag e9ea51023687 apache/sharding-proxy:${RELEASE.VERSION}
507
```
508 509 510 511

#### Publish Docker Image

```shell
kimmking's avatar
kimmking 已提交
512 513
docker push apache/sharding-proxy:latest
docker push apache/sharding-proxy:${RELEASE_VERSION}
514 515
```

516 517 518 519 520 521
#### Confirm the successful release

Login [Docker Hub](https://hub.docker.com/r/apache/sharding-proxy/) to check whether there are published images

### Publish release in GitHub

kimmking's avatar
kimmking 已提交
522
Click `Edit` in [GitHub Releases](https://github.com/apache/shardingsphere/releases)'s `${RELEASE_VERSION}` version
523 524 525

Edit version number and release notes, click `Publish release`

526
### Send e-mail to `dev@shardingsphere.apache.org` and `announce@apache.org` to announce the release is finished
T
terrymanu 已提交
527 528 529 530 531 532

Announcement e-mail template:

Title:

```
T
terrymanu 已提交
533
[ANNOUNCE] Apache ShardingSphere ${RELEASE.VERSION} available
T
terrymanu 已提交
534 535 536 537 538 539 540
```

Body:

```
Hi all,

541
Apache ShardingSphere Team is glad to announce the new release of Apache ShardingSphere ${RELEASE.VERSION}.
T
terrymanu 已提交
542

543
ShardingSphere is an open-source ecosystem consisted of a set of distributed database middleware solutions, including 2 independent products, ShardingSphere-JDBC & ShardingSphere-Proxy. 
T
terrymanu 已提交
544
They both provide functions of data sharding, distributed transaction and database orchestration, applicable in a variety of situations such as Java isomorphism, heterogeneous language. 
545
Aiming at reasonably making full use of the computation and storage capacity of the database in a distributed system, ShardingSphere defines itself as a middleware, rather than a totally new type of database. 
T
terrymanu 已提交
546
As the cornerstone of many enterprises, relational database still takes a huge market share. 
547
Therefore, at the current stage, we prefer to focus on its increment instead of a total overturn.
T
terrymanu 已提交
548

T
tuohai666 已提交
549
Download Links: https://shardingsphere.apache.org/document/current/en/downloads/
T
terrymanu 已提交
550

kimmking's avatar
kimmking 已提交
551
Release Notes: https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md
T
terrymanu 已提交
552 553 554

Website: https://shardingsphere.apache.org/

T
terrymanu 已提交
555
ShardingSphere Resources:
kimmking's avatar
kimmking 已提交
556
- Issue: https://github.com/apache/shardingsphere/issues/
T
terrymanu 已提交
557
- Mailing list: dev@shardingsphere.apache.org
T
terrymanu 已提交
558
- Documents: https://shardingsphere.apache.org/document/current/
T
terrymanu 已提交
559 560 561



kimmking's avatar
kimmking 已提交
562
- Apache ShardingSphere Team
T
terrymanu 已提交
563

T
terrymanu 已提交
564
```