Copilot commented on code in PR #1066: URL: https://github.com/apache/incubator-seata-website/pull/1066#discussion_r2729938796
########## i18n/en/docusaurus-plugin-content-docs/version-v2.3/developers/ppmc-guide/release-guide_dev.md: ########## @@ -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 <[email protected]> -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 <[email protected]> +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 +### 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.4 Publishing Release Notes Review Comment: Inconsistent heading level between language versions: The Chinese version uses "### 1.4" while the English version uses "#### 1.4". The heading levels should be consistent across both language versions. Based on the pattern where sections 1.1, 1.2, and 1.3 all use "###", this should be "### 1.4" to maintain consistency. ```suggestion ### 1.4 Publishing Release Notes ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.5/developers/release-guide/release-guide_dev.md: ########## @@ -179,21 +179,21 @@ Configure the POM file to deploy versions to the ASF Nexus repository. **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 Publishing Release Notes +#### 1.4 Publishing Release Notes Review Comment: Inconsistent heading level between language versions: The Chinese version uses "### 1.4" (three hash marks) while the English version at line 182 uses "#### 1.4" (four hash marks). The heading levels should be consistent across both language versions. Based on the pattern where sections 1.1, 1.2, and 1.3 all use "###", this should be "### 1.4" to maintain consistency, meaning the English version needs to be corrected as well. ```suggestion ### 1.4 Publishing Release Notes ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.4/developers/ppmc-guide/release-guide_dev.md: ########## @@ -579,3 +648,11 @@ Resources: - Issue: https://github.com/apache/incubator-seata/issues - Mailing list: [email protected] ``` + +#### 3) Archiving Old Versions +After releasing a new version, the previous version must be archived to ensure that only the latest version of the same maintenance branch is retained in the [download](https://downloads.apache.org/incubator/seata/) directory. Archived versions are automatically synchronized to the [archive](https://archive.apache.org/dist/incubator/seata/) when a new release is published. Therefore, it is sufficient to delete older versions from the [download](https://downloads.apache.org/incubator/seata/) directory. Example commands are provided below: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.2/developers/ppmc-guide/release-guide_dev.md: ########## @@ -602,3 +648,11 @@ Resources: - Issue: https://github.com/apache/incubator-seata/issues - Mailing list: [email protected] ``` + +#### 3) Archiving Old Versions +After releasing a new version, the previous version must be archived to ensure that only the latest version of the same maintenance branch is retained in the [download](https://downloads.apache.org/incubator/seata/) directory. Archived versions are automatically synchronized to the [archive](https://archive.apache.org/dist/incubator/seata/) when a new release is published. Therefore, it is sufficient to delete older versions from the [download](https://downloads.apache.org/incubator/seata/) directory. Example commands are provided below: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.4/developers/ppmc-guide/release-guide_dev.md: ########## @@ -179,21 +179,21 @@ Configure the POM file to deploy versions to the ASF Nexus repository. **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 Publishing Release Notes +#### 1.4 Publishing Release Notes Review Comment: Inconsistent heading level between language versions: The Chinese version uses "### 1.4" while the English version uses "#### 1.4". The heading levels should be consistent across both language versions. Based on the pattern where sections 1.1, 1.2, and 1.3 all use "###", this should be "### 1.4" to maintain consistency. ```suggestion ### 1.4 Publishing Release Notes ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.2/developers/ppmc-guide/release-guide_dev.md: ########## @@ -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 <[email protected]> -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 <[email protected]> +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 +### 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.4 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. +### 2.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.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]. +#### 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) Submit Source & Binary to SVN Repository -##### 2.2.1 Install SVN +##### a. 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 +##### b. Compile seata-server and seata-namingserver -Run the following command: + `mvn -Prelease-seata -Dmaven.test.skip=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 -``` +##### c. 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: +##### d. 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` Review Comment: Inconsistent directory naming in command example: Line 250 creates a directory named "x.x.xRCN" but line 252 moves files to "x.x.x" without the RC suffix. The command at line 252 should likely be `mv ….. x.x.xRCN` to match the directory created in line 250. ```suggestion `mv ….. x.x.xRCN` ``` ########## i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.3/developers/ppmc-guide/release-guide_dev.md: ########## @@ -237,17 +237,17 @@ asc验证 `gpg --verify apache-seata-x.x.x-incubating-src.zip.asc apache-seata-x.x.x-incubating-src.zip` -##### 2.2.4 拉取svn至本地,并构建发布版本路径,并将签名文件及Source和Binary移入其中 +##### d. 拉取svn至本地,并构建发布版本路径,并将签名文件及Source和Binary移入其中 拉取svn目录 `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` Review Comment: Inconsistent directory naming in command example: Line 250 creates a directory named "x.x.xRCN" but line 252 moves files to "x.x.x" without the RC suffix. The command at line 252 should likely be `mv ….. x.x.xRCN` to match the directory created in line 250. This inconsistency appears in multiple version files. ```suggestion `mv ….. x.x.xRCN` ``` ########## i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.2/developers/ppmc-guide/release-guide_dev.md: ########## @@ -567,3 +650,10 @@ Resources: - Mailing list: [email protected] ``` +#### 3) 归档老版本 +发布新版本后,需要将上一个版本归档,确保在[download](https://downloads.apache.org/incubator/seata/) 只保留同一维护分支的最新版本。Archive 版本在发布新版本时会自动同步到[归档](https://archive.apache.org/dist/incubator/seata/)。因此,只需要删除[download](https://downloads.apache.org/incubator/seata/) 中老的版本即可,参考命令如下: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` ########## i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.5/developers/release-guide/release-guide_dev.md: ########## @@ -582,3 +650,10 @@ Resources: - Mailing list: [email protected] ``` +#### 3) 归档老版本 +发布新版本后,需要将上一个版本归档,确保在[download](https://downloads.apache.org/incubator/seata/) 只保留同一维护分支的最新版本。Archive 版本在发布新版本时会自动同步到[归档](https://archive.apache.org/dist/incubator/seata/)。因此,只需要删除[download](https://downloads.apache.org/incubator/seata/) 中老的版本即可,参考命令如下: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` ########## i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.3/developers/ppmc-guide/release-guide_dev.md: ########## @@ -567,3 +650,10 @@ Resources: - Mailing list: [email protected] ``` +#### 3) 归档老版本 +发布新版本后,需要将上一个版本归档,确保在[download](https://downloads.apache.org/incubator/seata/) 只保留同一维护分支的最新版本。Archive 版本在发布新版本时会自动同步到[归档](https://archive.apache.org/dist/incubator/seata/)。因此,只需要删除[download](https://downloads.apache.org/incubator/seata/) 中老的版本即可,参考命令如下: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` ########## i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.2/developers/ppmc-guide/release-guide_dev.md: ########## @@ -237,17 +237,17 @@ asc验证 `gpg --verify apache-seata-x.x.x-incubating-src.zip.asc apache-seata-x.x.x-incubating-src.zip` -##### 2.2.4 拉取svn至本地,并构建发布版本路径,并将签名文件及Source和Binary移入其中 +##### d. 拉取svn至本地,并构建发布版本路径,并将签名文件及Source和Binary移入其中 拉取svn目录 `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` Review Comment: Inconsistent directory naming in command example: Line 250 creates a directory named "x.x.xRCN" but line 252 moves files to "x.x.x" without the RC suffix. The command at line 252 should likely be `mv ….. x.x.xRCN` to match the directory created in line 250. ```suggestion `mv ….. x.x.xRCN` ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.3/developers/ppmc-guide/release-guide_dev.md: ########## @@ -602,3 +648,11 @@ Resources: - Issue: https://github.com/apache/incubator-seata/issues - Mailing list: [email protected] ``` + +#### 3) Archiving Old Versions +After releasing a new version, the previous version must be archived to ensure that only the latest version of the same maintenance branch is retained in the [download](https://downloads.apache.org/incubator/seata/) directory. Archived versions are automatically synchronized to the [archive](https://archive.apache.org/dist/incubator/seata/) when a new release is published. Therefore, it is sufficient to delete older versions from the [download](https://downloads.apache.org/incubator/seata/) directory. Example commands are provided below: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.5/developers/release-guide/release-guide_dev.md: ########## @@ -579,3 +648,11 @@ Resources: - Issue: https://github.com/apache/incubator-seata/issues - Mailing list: [email protected] ``` + +#### 3) Archiving Old Versions +After releasing a new version, the previous version must be archived to ensure that only the latest version of the same maintenance branch is retained in the [download](https://downloads.apache.org/incubator/seata/) directory. Archived versions are automatically synchronized to the [archive](https://archive.apache.org/dist/incubator/seata/) when a new release is published. Therefore, it is sufficient to delete older versions from the [download](https://downloads.apache.org/incubator/seata/) directory. Example commands are provided below: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.3/developers/ppmc-guide/release-guide_dev.md: ########## @@ -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 <[email protected]> -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 <[email protected]> +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 +### 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.4 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. +### 2.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.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]. +#### 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) Submit Source & Binary to SVN Repository -##### 2.2.1 Install SVN +##### a. 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 +##### b. Compile seata-server and seata-namingserver -Run the following command: + `mvn -Prelease-seata -Dmaven.test.skip=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 -``` +##### c. 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: +##### d. 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` Review Comment: Inconsistent directory naming in command example: Line 250 creates a directory named "x.x.xRCN" but line 252 moves files to "x.x.x" without the RC suffix. The command at line 252 should likely be `mv ….. x.x.xRCN` to match the directory created in line 250. ```suggestion `mv ….. x.x.xRCN` ``` ########## i18n/en/docusaurus-plugin-content-docs/version-v2.2/developers/ppmc-guide/release-guide_dev.md: ########## @@ -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 <[email protected]> -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 <[email protected]> +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 +### 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.4 Publishing Release Notes Review Comment: Inconsistent heading level between language versions: The Chinese version uses "### 1.4" while the English version uses "#### 1.4". The heading levels should be consistent across both language versions. Based on the pattern where sections 1.1, 1.2, and 1.3 all use "###", this should be "### 1.4" to maintain consistency. ```suggestion ### 1.4 Publishing Release Notes ``` ########## i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.4/developers/ppmc-guide/release-guide_dev.md: ########## @@ -582,3 +650,10 @@ Resources: - Mailing list: [email protected] ``` +#### 3) 归档老版本 +发布新版本后,需要将上一个版本归档,确保在[download](https://downloads.apache.org/incubator/seata/) 只保留同一维护分支的最新版本。Archive 版本在发布新版本时会自动同步到[归档](https://archive.apache.org/dist/incubator/seata/)。因此,只需要删除[download](https://downloads.apache.org/incubator/seata/) 中老的版本即可,参考命令如下: + +```yaml Review Comment: Incorrect code block language identifier: The code block is marked as 'yaml' but contains shell commands (svn commands). This should be marked as 'sh' or 'bash' instead of 'yaml' for proper syntax highlighting. ```suggestion ```sh ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
