Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
outlinetrue

1. Create a gpg KEY

For those who are RM for the first time, this step needs to be carried out.

...

Code Block
languagebash
title生成 Create gpg key
collapsetrue
$ 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
languagebash
title检查keyVerify key
$ 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 /

Image RemovedImage Added


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

Image RemovedImage Added


If the upload is not successful, you can manually submit the key on the web page

...

Code Block
languagexml
title~/.m2/settings.xml文件xml file
<?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.

Image RemovedImage Added

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

Image RemovedImage Added

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)

Image RemovedImage Added

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.

...

https://lists.apache.org/thread.html/89b0af63c0af7455641f738e2500a8a92a2cb4f9efca5456371bf06f%40%3Cdev.iotdb.apache.org%3E

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.


Image RemovedImage Added



Subscribe to the general mailing list

...

Panel

Theme:[VOTE] Release Apache IoTDB 0.9.0


Hello all,

This is a call for vote to release Apache IoTDB (Incubating) version 0.8.0, which is the first Apache Release for the IoTDB Project.

The Apache IoTDB community has voted on and approved a proposal to release
Apache IoTDB (Incubating) version 0.8.0.

We now kindly request the Incubator PMC members review and vote on this
incubator release.

Apache IoTDB (incubating) (Database for Internet of Things) is an integrated data management engine designed for timeseries data. It provides users with services for data collection, storage and analysis.

IoTDB community vote and result thread:
Result:https://lists.apache.org/thread.html/19c913987145a2dc0afced626131e084fc3b1ab7e1ca1dde07a5b977@%3Cdev.iotdb.apache.org%3E
Vote:https://lists.apache.org/thread.html/d1272646baf81a0d2d62308cfb7a6e4fc754e377a043068409b0b9ed@%3Cdev.iotdb.apache.org%3E

The release candidates (RC3):
https://dist.apache.org/repos/dist/dev/incubator/iotdb/0.8.0/rc3

Git tag for the release (RC3):
https://github.com/apache/incubator-iotdb/releases/tag/release%2F0.8.0

Hash for the release tag:
2f4da03b05d1c063eaaca622c68de86abe35de22

Release Notes:
https://github.com/apache/incubator-iotdb/blob/2f4da03b05d1c063eaaca622c68de86abe35de22/RELEASE_NOTES.md

The artifacts have been signed with Key : C336E0143A553B89, which can be
found in the keys file:
https://dist.apache.org/repos/dist/dev/incubator/iotdb/KEYS

Look at here for how to verify this release candidate:
https://cwiki.apache.org/confluence/display/IOTDB/Validating+a+staged+Release

The vote will be open for at least 72 hours.

From the PPMC Vote we carry over 3 binding IPMC Votes:

+1 from The name of the voter,
+1 from The name of the voter,
+1 from The name of the voter,

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:
[ ] +1 approve
[ ] +0 no opinion
[ ] -1 disapprove with the reason

Your name
Apache IoTDB


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

  1. Set the released version to "released" and set the "release-date"

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

Image RemovedImage Added

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.

...