This is an automated email from the ASF dual-hosted git repository. jimin pushed a commit to branch docusaurus in repository https://gitbox.apache.org/repos/asf/incubator-seata-website.git
The following commit(s) were added to refs/heads/docusaurus by this push: new 18357bd01cb update release-guide_dev.md (#970) 18357bd01cb is described below commit 18357bd01cb9869eb33a4d6410999b022e035369 Author: funkye <jian...@apache.org> AuthorDate: Mon May 19 00:05:03 2025 +0800 update release-guide_dev.md (#970) --- .../developers/ppmc-guide/release-guide_dev.md | 413 ++++++++++----------- .../developers/ppmc-guide/release-guide_dev.md | 31 +- 2 files changed, 218 insertions(+), 226 deletions(-) diff --git a/i18n/en/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md b/i18n/en/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md index 2b69e20f103..23e47688812 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md +++ b/i18n/en/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md @@ -8,52 +8,52 @@ description: Release Guide. ## 1. Introduction -#### 1.1 Apache Version Release Documentation +#### 1.1 Apache Release Documentation -Refer to the following link to understand the ASF release process: +Refer to the following links to understand the ASF release process: - [Apache Release Guide](http://www.apache.org/dev/release-publishing) - [Apache Release Policy](http://www.apache.org/dev/release.html) - [Maven Release Info](http://www.apache.org/dev/publishing-maven-artifacts.html) -#### 1.2 PGP Signature +#### 1.2 PGP Signatures -Follow the Apache release guidelines to sign the release version, allowing users to verify whether the downloaded version has been tampered with. +Following the Apache Release Guidelines, release versions must be signed, allowing users to verify if downloaded versions have been tampered with. -Create a `pgp` key for version signing, using **\<your Apache ID>@apache.org** as the key USER-ID. +Create a `pgp` key for signing releases, using **\<your Apache ID>@apache.org** as the key USER-ID. -For more details, refer to the [Apache Releases Signing documentation](https://infra.apache.org/release-signing) and [Cryptography with OpenPGP](http://www.apache.org/dev/openpgp.html). +For details, refer to [Apache Releases Signing documentation](https://infra.apache.org/release-signing) and [Cryptography with OpenPGP](http://www.apache.org/dev/openpgp.html). -Here is a brief process for generating the key:http://www.apache.org/dev/openpgp.html) +Brief process for generating keys: -Here is a brief process for generating the key: +- Generate a new `gpg` key using `gpg --full-gen-key`, setting the key length to 4096 bits -- Generate a new `gpg` key using `gpg --full-gen-key`, setting the key length to 4096. + Note: You can set the key to never expire or set a specific expiration time. If you set an expiration time, you'll need to update your public key in the [DEV KEYS file](https://dist.apache.org/repos/dist/dev/incubator/seata/KEYS) and [RELEASE KEYS file](https://dist.apache.org/repos/dist/release/incubator/seata/KEYS) after renewal. - Note: You can set the key to never expire or choose a specific expiration time based on your needs. However, you will need to update the public key after it expires in the [DEV KEYS file](https://dist.apache.org/repos/dist/dev/incubator/seata/KEYS) and the [RELEASE KEYS file](https://dist.apache.org/repos/dist/release/incubator/seata/KEYS). +- Upload the key to the public key server using `gpg --keyserver keys.openpgp.org --send-key <your key id>` -- Upload the key to a public key server using `gpg --keyserver keys.openpgp.org --send-key <your key id>`. + Note: If you can't access this server, you can upload your public key online via [OpenPGP Keyserver (ubuntu.com)](https://keyserver.ubuntu.com/) - Note: If the access fails, you can upload the public key online via the [OpenPGP Keyserver (ubuntu.com)](https://keyserver.ubuntu.com/). + ``` + Use this command to find your keyid: gpg --list-signatures --keyid-format LONG + pub rsa4096/XXXXXXXX 2024-09-19 [SC] [expires: 2027-09-19] + F2D3A28A392129B927C7FB42XXXXXXXX + uid [ultimate] xxxx <x...@apache.org> + sig 3 XXXXXXXX 2024-09-19 [self-signature] + sub rsa4096/XXXXX 2024-09-19 [E] [expires: 2027-09-19] + sig XXXXXXXX 2024-09-19 [self-signature] + The keyid is XXXXXXXX + ``` -``` -You can find the key ID using the command: gpg --list-signatures --keyid-format LONG -pub rsa4096/XXXX 2024-09-19 [SC] [expires: 2027-09-19] - F2D3A28A392129B927C7FB42XXXX -uid [ultimate] XXXX <x...@apache.org> -sig 3 XXXX 2024-09-19 [self-signed] -sub rsa4096/XXXXXXX 2024-09-19 [E] [expires: 2027-09-19] -sig XXXX 2024-09-19 [self-signed] -The key ID is XXXX. -``` +- Export your public key to a text file using `gpg --armor --output ./public-key.txt --export XXXXXXXX` + +- Append your generated key to the [DEV KEYS file](https://dist.apache.org/repos/dist/dev/incubator/seata/KEYS) and [RELEASE KEYS file](https://dist.apache.org/repos/dist/release/incubator/seata/KEYS) -- Export the public key to a text file using the command: `gpg --armor --output ./public-key.txt --export XXXX`. -- Append the generated key to the [DEV KEYS file](https://dist.apache.org/repos/dist/dev/incubator/seata/KEYS) and the [RELEASE KEYS file](https://dist.apache.org/repos/dist/release/incubator/seata/KEYS). Note: -The DEV SVN repository can be added by the Release Manager, while the RELEASE SVN repository requires PMC permissions and can be assisted by the PMC to upload the KEY. +The Release Manager can add keys to the DEV SVN repository themselves, but adding to the Release SVN repository requires PMC permissions. PMC members can help upload the keys. -**Tips:** You need to set the default public key. If you have multiple public keys, please modify `~/.gnupg/gpg.conf`. +**Tips:** You should set a default public key. If you have multiple keys, modify `~/.gnupg/gpg.conf`. Reference example: @@ -63,47 +63,42 @@ 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) + (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 + 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: (Set username) (use Apache ID) - -Email address: (Set email address) (use Apache email) - -Comment: (Fill in comment) - +Real name: (Set user name) (Use Apache ID) +Email address: (Set email address) (Use Apache email) +Comment: (Add comments) You selected this USER-ID: - -"Username (comment) <email address>" + "User Name (Comment) <Email Address>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O - You need a Passphrase to protect your secret key. (Set password) ``` -Convert the generated public key and private key to ASCII format: +Convert the generated public and private keys to ASCII format: ``` -gpg --armor --output ./public-key.txt --export XXXX -gpg --armor --output ./private-key.txt --export-secret-keys XXXX +gpg --armor --output ./public-key.txt --export XXXXXXXX +gpg --armor --output ./private-key.txt --export-secret-keys XXXXXXXX ``` @@ -113,176 +108,150 @@ View the key list: [root@localhost ~]# gpg --list-signatures --keyid-format LONG [keyboxd] --------- -pub rsa4096/XXXX 2024-09-19 [SC] [有效至:2027-09-19] - F2D3A28A392129B927C7FB42XXXX -uid [ 绝对 ] XXXX <x...@apache.org> -sig 3 XXXX 2024-09-19 [自签名] -sub rsa4096/XXXXXXX 2024-09-19 [E] [有效至:2027-09-19] -sig XXXX 2024-09-19 [自签名] +pub rsa4096/XXXXXXXX 2024-09-19 [SC] [expires: 2027-09-19] + F2D3A28A392129B927C7FB42XXXXXXXX +uid [ultimate] xxxx <x...@apache.org> +sig 3 XXXXXXXX 2024-09-19 [self-signature] +sub rsa4096/XXXXX 2024-09-19 [E] [expires: 2027-09-19] +sig XXXXXXXX 2024-09-19 [self-signature] ``` -Upload the public key to the key server +Upload the public key to the key server: ``` -[root@localhost gpgtest]# gpg --keyserver keys.openpgp.org --send-key XXXX -gpg: sending key XXXX to hkp server keys.openpgp.org +[root@localhost gpgtest]# gpg --keyserver keys.openpgp.org --send-key XXXXXXXX +gpg: sending key XXXXXXXX to hkp server keys.openpgp.org ``` #### 1.3 POM Configuration -Configure the POM file to deploy the version to the ASF Nexus repository. +Configure the POM file to deploy versions to the ASF Nexus repository. -① Add Apache POM inheritance for default settings. +① Add Apache POM inheritance for default settings: ``` <parent> - <groupId>org.apache</groupId> - <artifactId>apache</artifactId> - <version>XX</version> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>XX</version> </parent> ``` -② Add key information to the Maven configuration file `settings.xml`. +② Add key information in Maven configuration file `settings.xml`: ``` <settings> - <profiles> - <profile> - <id>signed_release</id> - <properties> - <mavenExecutorId>forked-path</mavenExecutorId> - <gpg.keyname>yourKeyName</gpg.keyname> - <deploy.url>https://dist.apache.org/repos/dist/dev/incubator/seata/</deploy.url> - </properties> - </profile> - </profiles> - <servers> - <!-- To publish a snapshot of some part of Maven --> - <server> - <id>apache.snapshots.https</id> - <username>yourApacheID</username> - <!-- Use the password encryption by maven --> - <password>yourApachePassword</password> - </server> - <!-- To stage a release of some part of Maven --> - <server> - <id>apache.releases.https</id> - <username>yourApacheID</username> - <password>yourApachePassword</password> - </server> - <server> - <id>gpg.passphrase</id> - <passphrase>yourKeyPassword</passphrase> - </server> - </servers> + <profiles> + <profile> + <id>signed_release</id> + <properties> + <mavenExecutorId>forked-path</mavenExecutorId> + <gpg.keyname>yourKeyName</gpg.keyname> + <deploy.url>https://dist.apache.org/repos/dist/dev/incubator/seata/</deploy.url> + </properties> + </profile> + </profiles> + <servers> + <!-- To publish a snapshot of some part of Maven --> + <server> + <id>apache.snapshots.https</id> + <username>yourApacheID</username> + <!-- Use the password encryption by maven --> + <password>yourApachePassword</password> + </server> + <!-- To stage a release of some part of Maven --> + <server> + <id>apache.releases.https</id> + <username>yourApacheID</username> + <password>yourApachePassword</password> + </server> + <server> + <id>gpg.passphrase</id> + <passphrase>yourKeyPassword</passphrase> + </server> + </servers> </settings> ``` -**Tips:** It is recommended to use [Maven's password encryption capabilities](http://maven.apache.org/guides/mini/guide-encryption.html) to encrypt `gpg.passphrase`. +**Tips:** It's recommended to use [Maven's password encryption capabilities](http://maven.apache.org/guides/mini/guide-encryption.html) to encrypt `gpg.passphrase` -#### 1.5 Release Notes +#### 1.5 Publishing Release Notes -Build the corresponding version's Release Notes from the [changelog](https://github.com/apache/incubator-seata/blob/2.x/changes/zh-cn/2.x.md). +Build Release Notes for the respective version through the [changelog](https://github.com/apache/incubator-seata/blob/2.x/changes/zh-cn/2.x.md). ## 2. Release Process -### 1. Prepare Branch - -Create a new branch from the main branch as the release branch. For example, if you are going to release version `${release_version}`, create a new branch `${release_version}` from the development branch. All modifications and tagging related to `${release_version}` Release Candidates will be done in the `${release_version}` branch, ensuring that all GitHub Actions CI checks pass. After the release is completed, merge this branch back into the main branch. +### 1. Preparing the Branch -Example: If the Java SDK needs to release version `2.2.0`, create a new branch `2.2.0` from the `2.x` branch, and commit changes in this branch to replace the Snapshot version number with `2.2.0`. +Create a new branch from the main branch as the release branch. For instance, if you're releasing version `${release_version}`, create a new branch `${release_version}` from the development branch. All changes, tags, and fixes related to the `${release_version}` Release Candidates should be made on this branch. Ensure all GitHub Actions CI tests pass on this branch. After the release is completed, merge it back into the main branch. -### 2. Pre-release Binary Package +Example: To release Java SDK version `2.2.0`, create a new branch `2.2.0` from the `2.x` branch, and commit changes to replace the Snapshot version number with the `2.2.0` version number on this branch. -#### 2.1 SDK Preparation for Release +### 2. Pre-Release Binary Packages -Prepare the release according to the instructions in [publishing maven artifacts](https://infra.apache.org/publishing-maven-artifacts.html) [4]. +#### 2.1 Prepare the SDK release according to [publishing maven artifacts](https://infra.apache.org/publishing-maven-artifacts.html) [4] guidelines. ``` mvn clean deploy -Prelease -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn ``` -At this point, the Seata SDK is published to the [staging repository](https://repository.apache.org/#stagingRepositories) (you need to log in with your Apache account credentials). Find the released version, `${STAGING.RELEASE}`, and click Close. +At this point, the Seata SDK is published to the [staging repository](https://repository.apache.org/#stagingRepositories) (requires Apache account login). Find the released version, `${STAGING.RELEASE}`, and click Close. -Note: If closing fails, it may be because the public key corresponding to the signing key cannot be retrieved from [keys.openpgp.org](http://keys.openpgp.org/). Please check yourself using the [OpenPGP Keyserver (ubuntu.com)](https://keyserver.ubuntu.com/). +Note: If closing fails, it's likely because the public key corresponding to your signing key is not available on keys.openpgp.org. Please verify through [OpenPGP Keyserver (ubuntu.com)](https://keyserver.ubuntu.com/) #### 2.2 Submit Source & Binary to SVN Repository ##### 2.2.1 Install SVN -Download and install from [Download Apache Subversion Sources](https://subversion.apache.org/download.cgi#recommended-release) +Download and install [Apache Subversion Sources](https://subversion.apache.org/download.cgi#recommended-release) -Alternatively, you can quickly install it using `brew install subversion`. +Or install via `brew install subversion` ##### 2.2.2 Compile seata-server and seata-namingserver -Run the following command: + `mvn -Prelease-seata -Dmaven.test.skip=true -Dskip.npm=true -T4C -Dpmd.skip=true clean install -U` -``` -mvn -Prelease-seata -Dmaven.test.skip=true -Dskip.npm=true -T4C -Dpmd.skip=true clean install -U -``` +##### 2.2.3 Sign Source and Binary packages -##### 2.2.3 Sign the Source and Binary +For the Source package, it's recommended to download the zip directly from the corresponding version branch on GitHub (e.g., 2.2.0) to avoid local environment contamination, then rename it to apache-seata-x.x.x-incubating-src.zip -For the Source, it is recommended to download the zip package directly from the corresponding version branch on GitHub, such as 2.2.0, to avoid polluting the Source package content in your local environment. Then rename it to `apache-seata-x.x.x-incubating-src.zip`. +`shasum -b -a 512 apache-seata-x.x.x-incubating-src.zip >> apache-seata-x.x.x-incubating-src.zip.sha512 ` -Run the following command to generate a SHA-512 checksum: +`gpg --armor --output apache-seata-x.x.x-incubating-bin.zip.asc apache-seata-x.x.x-incubating-bin.zip` -``` -shasum -b -a 512 apache-seata-x.x.x-incubating-src.zip >> apache-seata-x.x.x-incubating-src.zip.sha512 -``` +For the Binary package: -Sign the Binary: +`shasum -b -a 512 apache-seata-x.x.x-incubating-bin.tar.gz >> apache-seata-x.x.x-incubating-bin.tar.gz.sha512` -``` -gpg --armor --output apache-seata-x.x.x-incubating-bin.zip.asc apache-seata-x.x.x-incubating-bin.zip -``` +`gpg --armor --output apache-seata-x.x.x-incubating-bin.tar.gz.asc apache-seata-x.x.x-incubating-bin.tar.gz` -For the Binary, generate a SHA-512 checksum: +Verify SHA512: -``` -shasum -b -a 512 apache-seata-x.x.x-incubating-bin.tar.gz >> apache-seata-x.x.x-incubating-bin.tar.gz.sha512 -``` +`shasum -c apache-seata-x.x.x-incubating-bin.tar.gz.sha512` -Sign the Binary: +Verify ASC: -``` -gpg --armor --output apache-seata-x.x.x-incubating-bin.tar.gz.asc apache-seata-x.x.x-incubating-bin.tar.gz -``` +`gpg --verify apache-seata-x.x.x-incubating-src.zip.asc apache-seata-x.x.x-incubating-src.zip` -Verify the SHA-512 checksum: +##### 2.2.4 Pull SVN locally, create release version path, and move the signed files and Source/Binary packages into it -``` -shasum -c apache-seata-x.x.x-incubating-bin.tar.gz.sha512 -``` +Pull SVN directory: -Verify the signature: +`svn co --depth=empty https://dist.apache.org/repos/dist/dev/incubator/seata/` -``` -gpg --verify apache-seata-x.x.x-incubating-src.zip.asc apache-seata-x.x.x-incubating-src.zip -``` +Create release version path (in the dev path, folders must include "RC" to indicate they are in a preparatory state), and move files into it: -##### 2.2.4 Check Out SVN Locally, Create Release Version Path, and Move Signature Files, Source, and Binary into It +`cd seata` -Check out the SVN directory: +`mkdir x.x.xRCN` -``` -svn co --depth=empty https://dist.apache.org/repos/dist/dev/incubator/seata/ -``` +`mv ….. x.x.x` -Create the release version path and move the files into it: - -``` -cd seata -mkdir incubator-seata/x.x.x-RCn/ -mv ../x.x.x incubator-seata/x.x.x-RCn/ -``` - -After executing the above commands, the structure should look approximately like this: +After moving files in, it should look like this: ``` -rw-r--r--@ 1 fe-work staff 180M 9 20 10:16 apache-seata-2.2.0-incubating-bin.tar.gz @@ -293,60 +262,53 @@ After executing the above commands, the structure should look approximately like -rw-r--r-- 1 fe-work staff 300B 9 20 10:16 apache-seata-2.2.0-incubating-src.zip.sha512 ``` -The KEYS file in the parent `seata` directory needs to ensure that the public key generated in the first step is appended. +Ensure the KEYS file in the parent seata directory has been updated with your public key as mentioned in step 1. -Run the following commands: +Execute: -``` -svn add x.x.x -svn commit -m "submit x.x.x version" -``` +`svn add x.x.x` -If you updated the KEYS file, you need to run `svn update KEYS` before committing. +`svn commit -m "submit x.x.x version" ` -After executing the commit, you will be prompted to enter your Apache LDAP username and password. Enter them to successfully submit the changes. +If you've updated the KEYS file, execute `svn update KEYS` before committing. + +After the commit command, you'll be prompted to enter your Apache LDAP username and password. Once entered, the submission will be successful: ``` ➜ seata svn commit -m 'submit 2.2.0 version' Adding 2.2.0 -Adding (binary) 2.2.0/apache-seata-2.2.0-incubating-bin.tar.gz -Adding (binary) 2.2.0/apache-seata-2.2.0-incubating-bin.tar.gz.asc +Adding (bin) 2.2.0/apache-seata-2.2.0-incubating-bin.tar.gz +Adding (bin) 2.2.0/apache-seata-2.2.0-incubating-bin.tar.gz.asc Adding 2.2.0/apache-seata-2.2.0-incubating-bin.tar.gz.sha512 -Adding (binary) 2.2.0/apache-seata-2.2.0-incubating-src.zip -Adding (binary) 2.2.0/apache-seata-2.2.0-incubating-src.zip.asc +Adding (bin) 2.2.0/apache-seata-2.2.0-incubating-src.zip +Adding (bin) 2.2.0/apache-seata-2.2.0-incubating-src.zip.asc Adding 2.2.0/apache-seata-2.2.0-incubating-src.zip.sha512 -Transmitting file data...done -Committing transaction... +Transmitting file data......done +Reading transaction Committed revision 71769. ``` -#### 2.3 Creating Tag and Release Note +#### 2.3 Create tag and release note -##### 2.3.1 Creating a Tag +##### 2.3.1 Create tag -Execute the following command in the x.x.x branch: +In the x.x.x branch, execute: -``` -Copy Codegit tag vx.x.x -m 'release: release for x.x.x' -``` +`git tag vx.x.x -m 'release: release for x.x.x'` -Then push the tag to the upstream (seata repository): +`git push upstream(seata repository repo) vx.x.x` -``` -Copy Codegit push upstream vx.x.x -``` - -##### 2.3.2 Creating a Release Note +##### 2.3.2 Create release note -Create a release note using the following link: [New release · apache/incubator-seata (github.com)](https://github.com/apache/incubator-seata/releases/new) and set "Choose a tag" to the corresponding tag. +Create a release note through [New release · apache/incubator-seata (github.com)](https://github.com/apache/incubator-seata/releases/new) and set "Choose a tag" to the corresponding tag. -Set it as "Set as a pre-release." After the overall vote passes, change it to "Set as the latest release." +Mark it as "Set as a pre-release". After the overall vote passes, set it as "Set as the latest release". -# 3. Voting Phase +### 3. Voting Stage -## 3.1 Internal Community Voting +#### 3.1 Community Internal Voting -**Voting lasts at least 72 hours and requires 3 +1 binding votes.** +**The vote must last at least 72 hours and receive at least 3 +1 binding votes** Send to: @@ -354,18 +316,18 @@ Send to: d...@seata.apache.org ``` -Title: +Subject: -``` -[VOTE] Release Apache Seata (Incubating) x.x.x-RCN (RoundN) -``` +`[VOTE]Release Apache Seata (Incubating) x.x.x(RoundN)` -In this context, "N" in RC N and Round N represents the number of times the voting has occurred for that version. +Where N in RoundN represents the number of attempts. If a vote doesn't pass and the version is modified for a new vote, N should be incremented (e.g., if Round1 doesn't pass, the next vote would be Round2). + +Body: ``` Hi Seata Community, -This is a call for vote to release Apache Seata(incubating) v2.2.0-rc1. +This is a call for vote to release Apache Seata(incubating) vx.x.x. The release candidates: https://dist.apache.org/repos/dist/dev/incubator/seata/x.x.x/ @@ -377,14 +339,14 @@ Git tag for the release: https://github.com/apache/incubator-seata/releases/tag/vx.x.x Hash for the release tag: -lasr commit id +ID of the last commit on the tag branch Release Notes: https://github.com/apache/incubator-seata/releases/tag/vx.x.x The artifacts have been signed with Key [ key-id ], corresponding to -[ x...@apache.org ] +[ email like x...@apache.org ] which can be found in the keys file: https://downloads.apache.org/incubator/seata/KEYS @@ -392,7 +354,7 @@ Build Environment: JDK 8+, Apache Maven 3.6.0+. /mvnw clean package -DskipTests=true CI Test Workflow: -last commit ci: +CI pipeline links for the last commit of this version, such as: https://github.com/apache/incubator-seata/actions/runs/10938949607/job/30411922716 https://github.com/apache/incubator-seata/actions/runs/10938949623/job/30410204492 https://github.com/apache/incubator-seata/actions/runs/10938949605/job/30411747821 @@ -418,15 +380,15 @@ To learn more about Apache Seata , please see https://seata.apache.org/ ``` -### 3.1.2 Completing the Vote +#### 3.1.2 Complete the vote -Send the release vote approval via email. +Send a vote passed email: ``` Hi Community, -The vote to release Apache Seata (Incubating) vx.x.x-RCN has passed +The vote to release Apache Seata (Incubating) vx.x.x has passed with 3 +1 binding votes, and no +0 or -1 votes. 3 (+1 binding) @@ -441,6 +403,7 @@ no further 0 or -1 votes. The vote thread: +The link to the corresponding vote email thread, e.g.: https://lists.apache.org/thread/rwco6lms9qo10whjj8gg1dr8j7drl2gf Thank you for reviewing and voting for our release candidate. @@ -448,33 +411,34 @@ Thank you for reviewing and voting for our release candidate. We will soon launch the second stage of voting. ``` - - #### 3.2.1 Voting in the Incubator -Similar to community voting, but it is necessary to include the relevant thread links from the community vote to demonstrate that consensus has been reached within the community. +Similar to community voting, but you need to add links to the community vote thread to prove consensus was reached within the community. Send an email to `gene...@incubator.apache.org` Subject: -`[VOTE] Release Apache Seata (Incubating) x.x.x-RCN` +`[VOTE]Release Apache Seata (Incubating) x.x.x(RoundN)` -The vote will last for at least 72 hours and must receive 3 +1 binding votes. +**The vote must last at least 72 hours and receive at least 3 +1 binding votes** ``` Hello everyone, -This is a call for vote to release Apache Seata(incubating) +This is a call for vote to release Apache Seata(incubating) vx.x.x The Apache Seata community has voted and approved the release of Apache -Seata(incubating) v2.2.0. We now kindly request the IPMC members +Seata(incubating) vx.x.x. We now kindly request the IPMC members review and vote for this release. + The vote thread: +Community vote thread link, e.g.: https://lists.apache.org/thread/rwco6lms9qo10whjj8gg1dr8j7drl2gf Vote Result: +Community vote result thread link, e.g.: https://lists.apache.org/thread/ybo9c5hrx2h2glg2bdgs3t22xg734y7r The release candidates: @@ -487,14 +451,14 @@ Git tag for the release: https://github.com/apache/incubator-seata/releases/tag/vx.x.x Hash for the release tag: -last commit id +ID of the last commit on the tag branch Release Notes: https://github.com/apache/incubator-seata/releases/tag/vx.x.x The artifacts have been signed with Key [ key-id ], corresponding to -[ x...@apache.org ] +[ email like x...@apache.org ] which can be found in the keys file: https://downloads.apache.org/incubator/seata/KEYS @@ -502,7 +466,7 @@ Build Environment: JDK 8+, Apache Maven 3.6.0+. /mvnw clean package -DskipTests=true CI Test Workflow: -last commit ci: +CI pipeline links for the last commit of this version, such as: https://github.com/apache/incubator-seata/actions/runs/10938949607/job/30411922716 https://github.com/apache/incubator-seata/actions/runs/10938949623/job/30410204492 https://github.com/apache/incubator-seata/actions/runs/10938949605/job/30411747821 @@ -527,18 +491,18 @@ Checklist for reference: To learn more about Apache Seata , please see https://seata.apache.org/ ``` -### 3.2.2 Announcement of Incubator Vote Results +#### 3.2.2 Announce the Incubator vote result -After 72 hours, if there are at least 3 votes in favor and no opposing votes, send the results following the email template below. +After 72 hours, if there are at least 3 passing votes and no opposing votes, send an email as follows: Send an email to `gene...@incubator.apache.org` -Subject: `[RESULT][VOTE] Release Apache Seata (Incubating) x.x.x-RCN` +Subject: `[RESULT][VOTE] Release Apache Seata (incubating) x.x.x(RoundN)` ``` Hi Incubator PMC, -The vote to release Apache Seata(incubating) X.X.X-RCN has passed with +The vote to release Apache Seata(incubating) X.X.X has passed with 3 +1 binding and 1 +1 non-binding votes, no +0 or -1 votes. Binding votes: @@ -560,29 +524,42 @@ announcement soon. ``` +### 3.2.3 Vote Interruption +If issues are found during the voting process, such as license problems or bugs that need to be fixed before release, the vote must be interrupted. -# 4. Completing the Release +Subject: `[CANCEL][VOTE] Release Apache Seata (incubating) x.x.x(RoundN)` -### 4.1 Release Version +``` +Hi Incubator PMC, +I'm cancelling this vote: +Link to the previous vote -1. From the Apache Nexus repository, select the previously closed orgapache-seata-XXX and click the Release icon to publish. +Describe the reason for cancellation: such as missing licenses, or bugs in the version -2. Move the signature files, src, and bin from the dev directory to the release path using the following command: +``` - ``` - svn mv https://dist.apache.org/repos/dist/dev/incubator/seata/incubator-seata/x.x.x-RCN https://dist.apache.org/repos/dist/release/incubator/seata/x.x.x -m "Release Seata X.X.X" - ``` +Note: After cancelling a vote in the Incubator, a new vote must start again from within the community. -3. Set the previous release note as "Set as the latest release" and submit it. +# 4. Complete the Release -4. Update the documentation for x.x.x on the Seata official website, including the download links for the corresponding binary and source. +### 4.1 Release the Version -### 4.2 Version Announcement +1. From Apache Nexus repository, select the previously closed **orgapacheseata-XXX** and click the `Release` icon to publish. -Send an email to` gene...@incubator.apache.org` +2. Move the signature files, src, and bin from the dev path to the release path using the following command: + + `svn mv https://dist.apache.org/repos/dist/dev/incubator/seata/incubator-seata/x.x.x-RCN https://dist.apache.org/repos/dist/release/incubator/seata/x.x.x -m "Release Seata X.X.X"` + +3. Set the previous release note to "Set as the latest release" and submit. + +4. Update the documentation for version x.x.x on the Seata official website, and add download links for the binary and source packages. + +### 4.2 Announce the Release + +Send an email to `gene...@incubator.apache.org` -Subject: `[ANNOUNCE] Apache Seata (Incubating) vx.x.x available` +Subject: `[ANNOUNCE] Apache Seata(Incubating) vx.x.x available` ``` Hi All, diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md index 98d7138b5cd..5835162b607 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/developers/ppmc-guide/release-guide_dev.md @@ -243,11 +243,11 @@ asc验证 `svn co --depth=empty https://dist.apache.org/repos/dist/dev/incubator/seata/` -创建发布版本路径,并将文件移入其中 +创建发布版本路径(dev路径中的文件夹必须携带RC代表其实一个预备状态),并将文件移入其中 `cd seata` -`mkdir x.x.x` +`mkdir x.x.xRCN` `mv ….. x.x.x` @@ -318,9 +318,10 @@ d...@seata.apache.org 标题: -`[VOTE]Release Apache Seata (Incubating) x.x.x-RCN (RoundN) ` +`[VOTE]Release Apache Seata (Incubating) x.x.x(RoundN) ` -RC N和Round N的N代表次数,该版本的第几次投票 +Round N的N代表次数,该版本的该阶段的第几次投票 +如: 投票不通过该版本经修改后重新投票时需要N+1,如Round1投票不通过,下次投票就为Round2. 正文: @@ -388,7 +389,7 @@ To learn more about Apache Seata , please see https://seata.apache.org/ Hi Community, -The vote to release Apache Seata (Incubating) vx.x.x-RCN has passed +The vote to release Apache Seata (Incubating) vx.x.x has passed with 3 +1 binding votes, and no +0 or -1 votes. 3 (+1 binding) @@ -421,7 +422,7 @@ We will soon launch the second stage of voting. 标题: -`[VOTE]Release Apache Seata (Incubating) x.x.x-RCN ` +`[VOTE]Release Apache Seata (Incubating) x.x.x(RoundN) ` **投票持续至少 72 小时并获得 3 个+1 binding票** @@ -499,12 +500,12 @@ To learn more about Apache Seata , please see https://seata.apache.org/ 发送邮件至 `gene...@incubator.apache.org` -标题:`[RESULT][VOTE] Release Apache Seata (incubating) x.x.x-RCN` +标题:`[RESULT][VOTE] Release Apache Seata (incubating) x.x.x(RoundN)` ``` Hi Incubator PMC, -The vote to release Apache Seata(incubating) X.X.X-RCN has passed with +The vote to release Apache Seata(incubating) X.X.X has passed with 3 +1 binding and 1 +1 non-binding votes, no +0 or -1 votes. Binding votes: @@ -526,7 +527,21 @@ announcement soon. ``` +### 3.2.3 投票中断 +如出现在投票过程中验证不通过,如license,或者版本存在bug等,经评估需要修复后才能发版,那么需要中断本次投票 +标题:`[CANCEL][VOTE] Release Apache Seata (incubating) x.x.x(RoundN)` + +``` +Hi Incubator PMC, +I'm cancelling this vote: +之前投票的链接 + +描述为何中断的原因: 如license缺漏,或者版本存在bug等 + +``` + +注: 孵化器中投票终止后,新的投票需要从社区内部重新开始 # 4.完成发布 --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org For additional commands, e-mail: notifications-h...@seata.apache.org