...
Table of Contents | ||
---|---|---|
|
1. Create a gpg KEY
For those who are RM for the first time, this step needs to be carried out.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$ gpg2 --full-gen-key gpg (GnuPG) 2.2.4; Copyright (C) 2017 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 Note: Enter 1 here RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Note: Enter 4096 here 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) 0 Note: Enter 0 here Key does not expire at all Is this correct? (y/N) y Note: Enter y here GnuPG needs to construct a user ID to identify your key. Real name: your name Note: Enter your name here Email address: someone@apache.org Note: Enter your email here Comment: Apache IoTDB release signing key Note: enter some comments here You selected this USER-ID: "your name (Apache IoTDB release signing key) <someone@apache.org>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O Note: Enter O here We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. |
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ gpg2 --edit-key A string of numbers just now gpg (GnuPG) 2.2.4; Copyright (C) 2017 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. Secret key is available. gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u gpg: next trustdb check due at 2020-01-30 sec rsa4096/2206EF8F64C35889 created: 2019-09-25 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/2C8DBF57147E3901 created: 2019-09-25 expires: never usage: E [ultimate] (1). your name (Apache IoTDB release signing key) <someone@apache.org> gpg> showpref Enter showpref here [ultimate] (1). your name (Apache IoTDB release signing key) <someone@apache.org> Cipher: AES256, AES192, AES, 3DES Digest: SHA512, SHA384, SHA256, SHA224, SHA1 Compression: ZLIB, BZIP2, ZIP, Uncompressed Features: MDC, Keyserver no-modify If the order is different, you can adjust gpg> setpref SHA512 SHA384 SHA256 SHA224 SHA1 AES256 AES192 AES 3DES ZLIB BZIP2 ZIP Uncompressed Here, enter the three values of Digest Cipher Compression in order |
...
This <key id> is the file name of a .rev file under ~ / .gnupg / openpgp-revocs.d /
Next, check the link below to check if the upload was successful. It takes about a minute to find
...
Check the show full-key hashes under advance when checking
If the upload is not successful, you can manually submit the key on the web page
...
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <servers> <!-- Apache Repo Settings --> <server> <id>apache.snapshots.https</id> <username>{user-id}</username> <password>{user-pass}</password> </server> <server> <id>apache.releases.https</id> <username>{user-id}</username> <password>{user-pass}</password> </server> </servers> </settings> <profiles> <profile> <id>apache-release</id> <properties> <gpg.keyname>你的KEYID<keyname>Your KEYID</gpg.keyname><!-- Your GPG Keyname here --> <!-- Use an agent: Prevents being asked for the password during the build --> <gpg.useagent>true</gpg.useagent> <gpg.passphrase>你的私钥的密码<passphrase>The password of your private key</gpg.passphrase> </properties> </profile> </profiles> |
...
If you find that after the key is added "unverified" , remember to bind the email used in the GPG key to your github account (https://github.com/settings/emails )。
2. Ready to release version
(Note: Different projects may adopt different branch management methods, which are for reference only)
...
This is the current branch graph. The last updated position after the creation of rel / 0.8 is shown in yellow, and the master is still moving forward.
First of all, we need to determine what content needs to enter the new release, for example, we want to put 1, 2 into 0.8.1, then add the two PR submissions to the rel one by one by the method of `git cherry-pick` /0.8 branch (you may have to resolve a lot of conflicts ...).
...
Then start the official release.
3.release version
3.1 Automatically tag on github and generate various signature files
...
After the login is successful, Repositories in your left column will appear Staging Repositories, click on him, you can see the list below, find the line with the project name "orgapacheiotdb-number", select it and click the close button above
Then start waiting to complete the close, during which you can click refresh to update the page. You can also select iotdb and click the activity below to view the specific close progress and problems.
...
Let's temporarily use iotdb-dist-dev as the root directory, you will see the current directory as shown below (there should be no 0.8.1 folder)
Then create the 0.8.1 folder as shown in the figure above, and then create the 0.8.1 / rc1 folder.
...
[5] https://dist.apache.org/repos/dist/dev/incubator/iotdb/0.8.1/rc2/RELEASE_NOTES.md
[6] https://dist.apache.org/repos/dist/dev/incubator/iotdb/KEYS
The red words above need to be changed.
...
$ git show release/0.8.1 --name-only
4 What if the vote fails
When the vote fails, the battlefield needs to be cleared first, and then reposted.
...
5. What to do after the vote is passed
After 72 hours of voting, a summary email should be made:
...
Log in with an apache account, find the voting thread, and then the permalink on the right is a permanent link. Just click and copy the URL.
Subscribe to the general mailing list
...
Panel |
---|
Theme:[VOTE] Release Apache IoTDB 0.9.0 Hello all, The vote will be passed if there is no -1 vote ( as there are 3 IPMC +1 votes already), but we still hope all other IPMCs vote for it. Please vote accordingly: |
6. What to do after the general list vote
First send a summary email to the general mailing list
...
Note: All apache mirrors will start synchronizing these files, which will usually be synchronized within 24 hours. After that, you can send a statement email.
7. Delete the old version of the release file
Apache seems to require that when the new versions are synchronized, delete the files of the old version (for example, 0.8.0-incubating in this example), but I checked several projects, this is not absolutely required. . It is recommended to keep some versions.
...
svn commit -m "Write commit log"
8. Officially release Maven files
Go to https://repository.apache.org/#welcome, log in to your account, then go to Staging Repositories to select the version you closed before and select release. Finished.
9. github publish release
Go to https://github.com/apache/incubator-iotdb/releases and change the previous this is a pre-release & save draft to publish release.
10. Update the code of the release branch to the latest
In our project, the release branch always points to the latest release version.
...
git merge -X theirs release/0.8.1
11. Update JIRA
Set the released version to "released" and set the "release-date"
Add the next version to the versions.
I do n’t have permission so I have n’t tested it yet
12. Update the download link on the official website
Website Directory:
https://github.com/apache/incubator-iotdb-website
...
For how to modify and add new versions on the official website, you can refer How to update IoTDB website for a new release如何更新 IoTDB 官网
In fact, it is mainly to add one item, and the version number should be changed.
...
Change the above version to your final version.
13. Tell the world!
After you confirm that most of the mirrors are synchronized, you can tell the world to release a new version of the information:
...
More reference examples:https://lists.apache.org/list.html?dev@iotdb.apache.org:gte=1d:announce
Publish Python package to Pypi
First, you must have an account, register here:https://pypi.org/account/register/
...
python3 -m pip install --user --upgrade twine
When I execute the above command, I get an error: creating build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.6m -c build/temp.linux-x86_64-3.6/_openssl.c -o build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6/_openssl.o -Wconversion -Wno-error=sign-conversion
build/temp.linux-x86_64-3.6/_openssl.c:22:24: fatal error: pyconfig.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
解决办法:sudoSolution:sudo apt install python3.6-dev (My python is version 3.6)
...
https://packaging.python.org/tutorials/packaging-projects/
Publish Docker image package to DockerHub
First, you need to have a username under the dockerhub website.
...
Use docker images to confirm the container and the tag of the container again:
Taking the above picture as an example, the reason why apache / iotdb 0.9.0 and 0.9.1 have the same Image ID is that when I built 0.9.1, I mistakenly specified the version number as 0.9.0.
...