This is an automated email from the ASF dual-hosted git repository.

pingsutw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new 80c53a0  SUBMARINE-1088. Page of How to Release
80c53a0 is described below

commit 80c53a0e686090f5415a47d0f8166fe1fb60d3c7
Author: featherchen <garychen0975321...@gmail.com>
AuthorDate: Tue Nov 23 14:16:07 2021 +0800

    SUBMARINE-1088. Page of How to Release
    
    ### What is this PR for?
    <!-- A few sentences describing the overall goals of the pull request's 
commits.
    First time? Check out the contributing guide - 
https://submarine.apache.org/contribution/contributions.html
    -->
    Refer to https://inlong.apache.org/development/how-to-release
    Create a new page describe how to release a new version of Submarine
    ### What type of PR is it?
    Documentation
    
    ### Todos
    * [x] - Change inLong to Submarine
    
    ### What is the Jira issue?
    <!-- * Open an issue on Jira 
https://issues.apache.org/jira/browse/SUBMARINE/
    * Put link here, and add [SUBMARINE-*Jira number*] in PR title, eg. 
`SUBMARINE-23. PR title`
    -->
    https://issues.apache.org/jira/browse/SUBMARINE-1088
    ### How should this be tested?
    <!--
    * First time? Setup Travis CI as described on 
https://submarine.apache.org/contribution/contributions.html#continuous-integration
    * Strongly recommended: add automated unit tests for any new or changed 
behavior
    * Outline any manual steps to test the PR here.
    -->
    Please help me double-check if there's something wrong.
    ### Screenshots (if appropriate)
    ![Screenshot from 2021-11-20 
15-48-56](https://user-images.githubusercontent.com/57944334/142718903-6a577ccb-6223-452a-a144-dd6306831ab3.png)
    
    ### Questions:
    * Do the license files need updating? No
    * Are there breaking changes for older versions? No
    * Does this need new documentation? No
    
    Author: featherchen <garychen0975321...@gmail.com>
    Author: Kevin Su <pings...@apache.org>
    
    Signed-off-by: Kevin <pings...@apache.org>
    
    Closes #807 from featherchen/SUBMARINE-1088 and squashes the following 
commits:
    
    49ba568c [Kevin Su] Merge branch 'master' into SUBMARINE-1088
    a3c7ae55 [featherchen] change the content to submarine version
    1b943933 [featherchen] change inLong to Submarine
    ec98a5fd [featherchen] translate from inLong
---
 website/docs/devDocs/HowToRelease.md | 456 +++++++++++++++++++++++++++++++++++
 website/sidebars.js                  |   1 +
 2 files changed, 457 insertions(+)

diff --git a/website/docs/devDocs/HowToRelease.md 
b/website/docs/devDocs/HowToRelease.md
new file mode 100644
index 0000000..f78e242
--- /dev/null
+++ b/website/docs/devDocs/HowToRelease.md
@@ -0,0 +1,456 @@
+---
+title: How to Release
+---
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   http://www.apache.org/licenses/LICENSE-2.0
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+> This article mainly introduces how the Release Manager releases a specific 
version of the project according to the Apache process.
+
+## 0. Preface
+
+Source Release is the focus of Apache’s attention and it is also a required 
content for release. Binary Release is optional, Submarine can choose whether 
to release the binary package to the Apache warehouse or to the Maven central 
warehouse.
+
+Please refer to the following link to find more details about release 
guidelines:
+
+[How to 
Release](https://cwiki.apache.org/confluence/display/SUBMARINE/How+to+release)  
+[Submarine Release 
Guidelines](https://cwiki.apache.org/confluence/display/SUBMARINE/Submarine+Release+Guidelines)
+
+## 1. Add GPG KEY
+
+> Main references in this chapter:https://infra.apache.org/openpgp.html > 
**This chapter is only needed for the first release manager of the project.**
+
+### 1.1 Install gpg
+
+Detailed installation documents can refer to 
[tutorial](https://www.gnupg.org/download/index.html), The environment 
configuration of Mac OS is as follows:
+
+```shell
+$ brew install gpg
+$ gpg --version #Check the version,should be 2.x
+```
+
+### 1.2 generate gpg Key
+
+#### Need to pay attention to the following points:
+
+- When entering the name, it is better to be consistent with the Full name 
registered in Apache
+- The mailbox used should be apache mailbox
+- It’s better to use pinyin or English for the name, otherwise there will be 
garbled characters
+
+#### Follow the hint,generate a key
+
+```shell
+➜  ~ gpg --full-gen-key
+gpg (GnuPG) 2.2.20; Copyright (C) 2020 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)
+  (14) Existing key from card
+Your selection? 1 # enter 1 here
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096 # 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 # enter 0 here
+Key does not expire at all
+Is this correct? (y/N) y # enter y here
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: Guangxu Cheng # enter your name here
+Email address: gxch...@apache.org # enter your mailbox here
+Comment:                          # enter some comment here (Optional)
+You selected this USER-ID:
+    "Guangxu Cheng <gxch...@apache.org>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O #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.
+
+# A dialog box will pop up, asking you to enter the key for this gpg.
+┌──────────────────────────────────────────────────────┐
+│ Please enter this passphrase                         │
+│                                                      │
+│ Passphrase: _______________________________          │
+│                                                      │
+│       <OK>                              <Cancel>     │
+└──────────────────────────────────────────────────────┘
+# After entering the secret key, it will be created. And it will output the 
following information.
+gpg: key 2DD587E7B10F3B1F marked as ultimately trusted
+gpg: revocation certificate stored as 
'/Users/cheng/.gnupg/openpgp-revocs.d/41936314E25F402D5F7D73152DD587E7B10F3B1F.rev'
+public and secret key created and signed.
+
+pub   rsa4096 2020-05-19 [SC]
+      41936314E25F402D5F7D73152DD587E7B10F3B1F
+uid                      Guangxu Cheng <gxch...@apache.org>
+sub   rsa4096 2020-05-19 [E]
+```
+
+### 1.3 Upload the generated key to the public server
+
+```shell
+➜  ~ gpg --list-keys
+-------------------------------
+pub   rsa4096 2020-05-18 [SC]
+      5931F8CFD04B37A325E4465D8C0D31C4149B3A87
+uid           [ultimate] Guangxu Cheng <gxch...@apache.org>
+sub   rsa4096 2020-05-18 [E]
+
+# Send public key to keyserver via key id
+$ gpg --keyserver pgpkeys.mit.edu --send-key <key id>
+# Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the 
keyserver list is: https://sks-keyservers.net/status/, which is automatically 
synchronized with each other, you can choose any one.
+```
+
+### 1.4 Check whether the key is created successfully
+
+Through the following URL, use the email to check whether the upload is 
successful or not. It will take about a minute to find out. When searching, 
check the show full-key hashes under advance on http://keys.gnupg.net.
+
+The query results are as follows:
+
+### 1.5 Add your gpg public key to the KEYS file
+
+> SVN is required for this step
+
+The svn library of the DEV branch is 
https://dist.apache.org/repos/dist/dev/submarine
+
+The SVN library of the Release branch is 
https://dist.apache.org/repos/dist/release/submarine
+
+#### 1.5.1 Add the public key to KEYS in the dev branch to release the RC 
version
+
+```shell
+➜  ~ svn co https://dist.apache.org/repos/dist/dev/submarine 
/tmp/submarine-dist-dev
+# This step is relatively slow, and all versions will be copied. If the 
network is disconnected, use svn cleanup to delete the lock and re-execute it, 
and the transfer will be resumed.
+➜  ~ cd submarine-dist-dev
+➜  submarine-dist-dev ~ (gpg --list-sigs your_n...@apache.org && gpg --export 
--armor your_n...@apache.org) >> KEYS # Append the KEY you generated to the 
file KEYS, it is best to check if it is correct after appending.
+➜  submarine-dist-dev ~ svn add .      # If there is a KEYS file before, it is 
not needed.
+➜  submarine-dist-dev ~ svn ci -m "add gpg key for YOUR_NAME" # Next, you will 
be asked to enter a username and password, just use your apache username and 
password.
+```
+
+#### 1.5.2 Add the public key to KEYS in the release branch to release the 
official version
+
+```shell
+➜  ~ svn co https://dist.apache.org/repos/dist/release/submarine 
/tmp/submarine-dist-release
+➜  ~ cd submarine-dist-release
+➜  submarine-dist-release ~ (gpg --list-sigs your_n...@apache.org && gpg 
--export --armor your_n...@apache.org) >> KEYS        # Append the KEY you 
generated to the file KEYS, it is best to check if it is correct after 
appending.
+➜  submarine-dist-release ~ svn add .  # If there is a KEYS file before, it is 
not needed.
+➜  submarine-dist-release ~ svn ci -m "add gpg key for YOUR_NAME" # Next, you 
will be asked to enter a username and password, just use your apache username 
and password.
+```
+
+### 1.6 Upload GPG public key to Github account
+
+1. Go to https://github.com/settings/keys and add GPG KEYS.
+2. If you find "unverified" is written after the key after adding it, remember 
to bind the mailbox used in the GPG key to your github account 
(https://github.com/settings/emails).
+
+## 2. Set maven settings
+
+**Skip if it has already been set**
+
+In the maven configuration file ~/.m2/settings.xml, add the following 
`<server>` item
+
+```xml
+<?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>
+<profiles>
+    <profile>
+      <id>apache-release</id>
+      <properties>
+        <gpg.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>Your password of the private key</gpg.passphrase>
+      </properties>
+    </profile>
+</profiles>
+</settings>
+```
+
+## 3. Compile and package
+
+### 3.1 Prepare a branch
+
+- Pull the new branch from the main branch as a release branch, 
release-${release_version}
+
+- Update `CHANGES.md`
+
+- Check whether the code is normal, including successful compilation, all unit 
tests, successful RAT check, etc.
+
+  ```shell
+  # build check
+  $ mvn clean package -Dmaven.javadoc.skip=true
+  # RAT check
+  $ mvn apache-rat:check
+  ```
+
+- Change the version number
+
+### 3.2 Create the tag
+
+> Before creating the tag, make sure that the code has been checked for 
errors, including: successful compilation, all unit tests, and successful RAT 
checks, etc.
+
+**Create a tag with signature**
+
+```shell
+$ git_tag=${release_version}-${rc_version}
+$ git tag -s $git_tag -m "Tagging the ${release_version} first Releae 
Candidate (Candidates start at zero)"
+# If a error happened like gpg: signing failed: secret key not available, set 
the private key first.
+$ git config user.signingkey ${KEY_ID}
+```
+
+### 3.3 Package the source code
+
+> After the tag is successfully created, the tag source code should be 
packaged into a tar package.
+
+```shell
+mkdir /tmp/apache-submarine-${release_version}-${rc_version}
+git archive --format=tar.gz 
--output="/tmp/apache-submarine-${release_version}-${rc_version}/apache-submarine-${release_version}-src.tar.gz"
 --prefix="apache-submarine-${release_version}/" $git_tag
+```
+
+### 3.4 Packaged binary package
+
+> Compile the source code packaged in the previous step
+
+```shell
+cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source 
package directory.
+tar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source 
package.
+cd apache-submarine-${release_version} # Enter the source directory.
+mvn compile clean install package -DskipTests # Compile.
+cp 
./submarine-distribution/target/apache-submarine-${release_version}-bin.tar.gz 
/tmp/apache-submarine-${release_version}-${rc_version}/  # Copy the binary 
package to the source package directory to facilitate signing the package in 
the next step.
+```
+
+### 3.5 Sign the source package/binary package/sha512
+
+```shell
+for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done # 
Calculate SHA512
+for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; 
done # Calculate the signature
+```
+
+### 3.6 Check whether the generated signature/sha512 is correct
+
+<!-- For details, please refer to:[Verify](how-to-verify.md) -->
+
+For example, verify that the signature is correct as follows:
+
+```shell
+for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done
+```
+
+## 4. Prepare for Apache release
+
+### 4.1 Publish the jar package to the Apache Nexus repository
+
+```shell
+cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source 
package directory
+tar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source 
package
+cd apache-submarine-${release_version}
+mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true  # Start 
upload
+```
+
+### 4.2 Upload the tag to git repository
+
+```shell
+git push origin ${release_version}-${rc_version}
+```
+
+### 4.3 Upload the compiled file to dist
+
+> This step requires the use of SVN, the svn library of the DEV branch is 
https://dist.apache.org/repos/dist/dev/submarine
+
+### 4.3.1 Checkout Submarine to a local directory
+
+```shell
+# This step may be slow, and all versions will be tested. If the network is 
broken, use svn cleanup to delete the lock and re-execute it, and the upload 
will be resumed.
+svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev
+```
+
+### 4.3.2 Add the public key to the KEYS file and submit it to the SVN 
repository
+
+```shell
+cd /tmp/submarine-dist-dev
+mkdir ${release_version}-${rc_version} # Create version directory
+# Copy the source code package and signed package here.
+cp /tmp/apache-submarine-${release_version}-${rc_version}/*tar.gz* 
${release_version}-${rc_version}/
+svn status # Check svn status.
+svn add ${release_version}-${rc_version} # Add to svn version.
+svn status # Check svn status.
+svn commit -m "prepare for ${release_version} ${rc_version}"     # Submit to 
svn remote server.
+```
+
+### 4.4 Shut down the Apache Staging repository
+
+> Please make sure all artifacts are fine.
+
+1. **Log in** http://repository.apache.org , with Apache account
+2. Click on Staging repositories on the left.
+3. Search for Submarine keywords and select the repository you uploaded 
recently.
+4. Click the Close button above, and a series of checks will be performed 
during this process.
+5. After the check is passed, a link will appear on the Summary tab below. 
Please save this link and put it in the next voting email.
+   The link should look like: 
`https://repository.apache.org/content/repositories/orgapachesubmarine-xxxx`
+
+WARN: Please note that clicking Close may fail, please check the reason for 
the failure and deal with it.
+
+## 5. Enter voting
+
+> To vote in the Submarine community, send an email 
to:`dev@submarine.apache.org`
+
+### Vote in the Submarine community
+
+#### Voting template
+
+```
+Title:[VOTE] Submarine-${release_version}-${rc_version} is ready for a vote!
+
+Content:
+
+Hi folks,
+
+Thanks to everyone's help on this release.
+
+I've created a release candidate (${rc_version}) for submarine 
${release_version}. The
+highlighted features are as follows:
+
+1. AAA
+2. BBB
+3. CCC
+
+The mini-submarine image is here:
+
+docker pull apache/submarine:mini-${release_version}-${rc_version}
+
+
+The RC tag in git is here:
+
+https://github.com/apache/submarine/releases/tag/release-${release_version}-${rc_version}
+
+The RC release artifacts are available at:
+
+http://home.apache.org/~pingsutw/submarine-${release_version}-${rc_version}
+
+
+The Maven staging repository is here:
+
+https://repository.apache.org/content/repositories/orgapachesubmarine-1030
+
+My public key is here:
+
+https://dist.apache.org/repos/dist/release/submarine/KEYS
+
+
+*This vote will run for 7 days, ending on DDDD/EE/FF at 11:59 pm PST.*
+
+
+For the testing, I have verified the
+
+1. Build from source, Install Submarine on minikube
+
+2. Workbench UI (Experiment / Notebook / Template / Environment)
+
+3. Experiment / Notebook / Template / Environment REST API
+
+
+My +1 to start. Thanks!
+
+BR,
+XXX
+
+```
+
+#### Announce voting results template
+
+```
+Title:[RESULT][VOTE] Release Apache Submarine ${release_version} ${rc_version}
+
+Content:
+
+Hello Apache Submarine PMC and Community,
+  The vote closes now as 72hr have passed. The vote PASSES with
+  xx (+1 non-binding) votes from the PMC,
+  xx (+1 non-binding) vote from the rest of the developer community,
+  and no further 0 or -1 votes.
+
+  The vote thread:{vote_mail_address}
+
+Thank you for your support.
+Your Submarine Release Manager
+```
+
+## 6. Officially released
+
+### 6.1 Merge the changes from the release-${release_version} branch to the 
master branch
+
+### 6.2 Release the version in the Apache Staging repository
+
+> Please make sure all artifacts are fine.
+
+1. Log in to http://repository.apache.org with your Apache account.
+2. Click on Staging repositories on the left.
+3. Search for Submarine keywords, select your recently uploaded repository, 
the repository specified in the voting email.
+4. Click the `Release` button above, and a series of checks will be carried 
out during this process.
+   **It usually takes 24 hours to wait for the repository to synchronize to 
other data sources**
+
+### 6.3 Update official website link
+
+### 6.4. Send an email to`dev@submarine.apache.org`
+
+**Please make sure that the repository in 6.4 has been successfully released, 
generally the email is sent 24 hours after 6.4**
+
+Announce release email template:
+
+```
+Title: [ANNOUNCE] Apache Submarine ${release_version} release!
+Content:
+Hi folks, It's a great honor for me to announce that the Apache Submarine 
Community
+has released Apache Submarine ${release_version}!
+The highlighted features are:
+1. AAA
+2. BBB
+3. CCC
+
+Tons of thanks to our contributors and community!
+Let's keep fighting! *Apache Submarine ${release_version} released*:
+https://submarine.apache.org/docs/next/releases/submarine-release-${release_version}
+
+BR,
+XXXX
+```
diff --git a/website/sidebars.js b/website/sidebars.js
index 3edeb46..2d893e7 100644
--- a/website/sidebars.js
+++ b/website/sidebars.js
@@ -62,6 +62,7 @@ module.exports = {
                 "devDocs/Development",
                 "devDocs/IntegrationTestK8s",
                 "devDocs/IntegrationTestE2E",
+                "devDocs/HowToRelease",
                 "devDocs/HowToVerify",
             ],
             Community: [

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@submarine.apache.org
For additional commands, e-mail: dev-h...@submarine.apache.org

Reply via email to