release.en.md 18.5 KB
Newer Older
T
terrymanu 已提交
1 2
+++
title = "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

T
tuohai666 已提交
94
The command is as follow:
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 129
### Update Release Notes

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

T
terrymanu 已提交
133 134
### Create Release Branch

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

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

### Pre-Release Check

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

T
tuohai666 已提交
153
-Prelease: choose release profile, which will pack all the source codes, jar files and executable binary packages of sharding-proxy.
T
terrymanu 已提交
154 155 156

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

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

### Prepare for the Release

First, clean local pre-release check information.

```shell
mvn release:clean
```

Then, prepare to execute the release.

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

T
tuohai666 已提交
173
It is basically the same as the previous rehearsal command, but deleting -DdryRun=true parameter.
T
terrymanu 已提交
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190

-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
git push
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 已提交
191
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 已提交
192 193 194
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 已提交
195
## Apache SVN Repository Release
T
terrymanu 已提交
196

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

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

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

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

```shell
kimmking's avatar
kimmking 已提交
209
svn --username=${APACHE LDAP username} co https://dist.apache.org/repos/dist/dev/shardingsphere
T
terrymanu 已提交
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
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 已提交
227 228
mkdir -p ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
cd ~/ss_svn/dev/shardingsphere/${RELEASE.VERSION}
T
terrymanu 已提交
229 230
```

T
tuohai666 已提交
231
Add source code packages, binary packages and executable binary packages of sharding-proxy to SVN working directory.
T
terrymanu 已提交
232 233

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

T
tuohai666 已提交
244
### Generate sign files
T
terrymanu 已提交
245 246

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

### Commit to Apache SVN

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

## Check Release

T
tuohai666 已提交
262
### Check sha512 hash
T
terrymanu 已提交
263 264

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

### Check gpg Signature

First, import releaser's public key. 
T
tuohai666 已提交
274
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 已提交
275 276

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

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 已提交
294 295 296 297 298 299
  > save
```

Then, check the gpg signature.

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

### Check Released Files

308
#### compare release source with github tag
T
terrymanu 已提交
309

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

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

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

#### Check binary packages

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

T
tuohai666 已提交
333
*   `LICENSE` and `NOTICE` files exist
Z
Zhang Yonglun 已提交
334
*   Correct year in `NOTICE` file
T
tuohai666 已提交
335
*   All text files have ASF headers
T
terrymanu 已提交
336
*   Check the third party dependency license:
T
tuohai666 已提交
337 338
    *   The software have a compatible license
    *   All software licenses mentioned in `LICENSE`
T
terrymanu 已提交
339
    *   All the third party dependency licenses are under `licenses` folder
T
tuohai666 已提交
340
    *   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 已提交
341 342 343

## Call for a Vote

T
tuohai666 已提交
344
### Vote procedure
T
terrymanu 已提交
345 346

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

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

T
tuohai666 已提交
352
### Vote Templates
T
terrymanu 已提交
353 354 355 356 357 358

1. ShardingSphere Community Vote Template

Title:

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

```

Body:

```
Hello ShardingSphere Community,

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

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

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

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

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

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

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

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

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

T
terrymanu 已提交
394 395 396 397 398
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 已提交
399 400 401

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

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

T
terrymanu 已提交
406 407 408 409 410 411
Checklist for reference:

[ ] Download links are valid.

[ ] Checksums and PGP signatures are valid.

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

[ ] 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 已提交
419 420
```

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

Body:

```
kimmking's avatar
kimmking 已提交
426
The vote to release Apache ShardingSphere ${RELEASE.VERSION} has passed.
T
tuohai666 已提交
427

428
7 PMC member +1 binding votes:
T
tuohai666 已提交
429 430 431 432

xxx
xxx
xxx
433 434 435
xxx
xxx
xxx
T
tuohai666 已提交
436 437
xxx

438
1 community +1 non-binding vote:
T
tuohai666 已提交
439 440 441 442 443
xxx

Thank you everyone for taking the time to review the release and help us. 
```

444
3. Announce the vote result:
T
terrymanu 已提交
445

J
Juan Pan(Trista) 已提交
446 447
**Notice: Please include the votes from ShardingSphere community above.**

448 449 450
Title:

```
kimmking's avatar
kimmking 已提交
451
[RESULT][VOTE] Release Apache ShardingSphere ${RELEASE.VERSION}
452 453
```

T
terrymanu 已提交
454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471
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

472
### Move source packages, binary packages and KEYS from the `dev` directory to `release` directory
T
terrymanu 已提交
473 474

```shell
kimmking's avatar
kimmking 已提交
475 476 477
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 已提交
478 479
```

480
### Find ShardingSphere in staging repository and click `Release`
T
terrymanu 已提交
481

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

T
terrymanu 已提交
484
```shell
485
git checkout master
T
terrymanu 已提交
486 487 488 489 490
git merge origin/${RELEASE.VERSION}-release
git push
git push --delete origin ${RELEASE.VERSION}-release
```

Z
Zhang Yonglun 已提交
491
### Update README files
492

Z
Zhang Yonglun 已提交
493
Update `${PREVIOUS.RELEASE.VERSION}` to `${RELEASE.VERSION}` in README.md and README_ZH.md
494 495 496 497 498 499 500 501

Update `${RELEASE.VERSION}` to `${NEXT.RELEASE.VERSION}` for `CURRENT_VERSION` in `Dockerfile`

Update `${RELEASE.VERSION}` to `${NEXT.RELEASE.VERSION}` for `imageName` in Maven `Docker` plugin

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

### Update the download page
502 503

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

505 506
https://shardingsphere.apache.org/document/current/cn/downloads/

507
Keep two 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 已提交
508

509
### Docker Release
510

511
#### Preparation
512

513
Install docker locally and start the docker service
514

515
#### Compile Docker Image
516

517
```shell
Z
Zhang Yonglun 已提交
518
cd ~/shardingsphere/sharding-distribution/sharding-proxy-distribution/
519
mvn clean package -Prelease,docker
520 521
```

522
#### Tag the local Docker Image
523

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

526 527 528
```shell
docker tag e9ea51023687 apache/sharding-proxy:latest
docker tag e9ea51023687 apache/sharding-proxy:${RELEASE.VERSION}
529
```
530 531 532 533 534 535

#### Publish Docker Image

```shell
docker push apache/sharding-proxy:latest
docker push apache/sharding-proxy:${RELEASE_VERSION}
536 537
```

538 539 540 541 542 543
#### 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 已提交
544
Click `Edit` in [GitHub Releases](https://github.com/apache/shardingsphere/releases)'s `${RELEASE_VERSION}` version
545 546 547

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

548
### Send e-mail to `dev@shardingsphere.apache.org` and `announce@apache.org` to announce the release is finished
T
terrymanu 已提交
549 550 551 552 553 554

Announcement e-mail template:

Title:

```
T
terrymanu 已提交
555
[ANNOUNCE] Apache ShardingSphere ${RELEASE.VERSION} available
T
terrymanu 已提交
556 557 558 559 560 561 562
```

Body:

```
Hi all,

563
Apache ShardingSphere Team is glad to announce the new release of Apache ShardingSphere ${RELEASE.VERSION}.
T
terrymanu 已提交
564 565 566

ShardingSphere is an open-source ecosystem consisted of a set of distributed database middleware solutions, including 2 independent products, Sharding-JDBC & Sharding-Proxy. 
They both provide functions of data sharding, distributed transaction and database orchestration, applicable in a variety of situations such as Java isomorphism, heterogeneous language. 
567
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 已提交
568
As the cornerstone of many enterprises, relational database still takes a huge market share. 
569
Therefore, at the current stage, we prefer to focus on its increment instead of a total overturn.
T
terrymanu 已提交
570

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

kimmking's avatar
kimmking 已提交
573
Release Notes: https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md
T
terrymanu 已提交
574 575 576

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

T
terrymanu 已提交
577
ShardingSphere Resources:
kimmking's avatar
kimmking 已提交
578
- Issue: https://github.com/apache/shardingsphere/issues/
T
terrymanu 已提交
579
- Mailing list: dev@shardingsphere.apache.org
T
terrymanu 已提交
580
- Documents: https://shardingsphere.apache.org/document/current/
T
terrymanu 已提交
581 582 583



kimmking's avatar
kimmking 已提交
584
- Apache ShardingSphere Team
T
terrymanu 已提交
585

T
terrymanu 已提交
586
```