[BREAKING CHANGE] Simplified the release process (#12903)

This commit is contained in:
吴晟 Wu Sheng 2024-12-27 14:30:42 +08:00 committed by GitHub
parent 559f770ee9
commit d39a00331c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 38 additions and 84 deletions

View File

@ -7,6 +7,10 @@
* **Warning** If there are custom query plugins for our Elasticsearch indices, this change could break them as * **Warning** If there are custom query plugins for our Elasticsearch indices, this change could break them as
sort queries and aggregation queries which used the unexpected fields are being blocked. sort queries and aggregation queries which used the unexpected fields are being blocked.
* [Breaking Change] Rename `debugging-query` module to `status-query` module. Relative exposed APIs are **UNCHANGED**. * [Breaking Change] Rename `debugging-query` module to `status-query` module. Relative exposed APIs are **UNCHANGED**.
* [Breaking Change] All jars of the `skywalking-oap-server` are no longer published through maven central. We will only
publish the source tar and binary tar to the website download page, and docker images to docker hub.
* **Warning** If you are using the `skywalking-oap-server` as a dependency in your project, you need to download the
source tar from the website and publish them to your private maven repository.
#### OAP Server #### OAP Server
@ -69,5 +73,6 @@
* Improve configuration-vocabulary documentation. * Improve configuration-vocabulary documentation.
* Add `Get Effective TTL Configurations` API documentation. * Add `Get Effective TTL Configurations` API documentation.
* Add Status APIs docs. * Add Status APIs docs.
* Simplified the release process with removing maven central publish relative processes.
All issues and pull requests are [here](https://github.com/apache/skywalking/milestone/224?closed=1) All issues and pull requests are [here](https://github.com/apache/skywalking/milestone/224?closed=1)

View File

@ -3,52 +3,21 @@ Apache SkyWalking release guide
If you're a committer, you can learn how to release SkyWalking in The Apache Way and start the voting process by reading this document. If you're a committer, you can learn how to release SkyWalking in The Apache Way and start the voting process by reading this document.
## Set up your development environment ## Prerequisites
Follow the steps in the [Apache maven deployment environment document](http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env) Add your GPG public key into the [SkyWalking GPG KEYS](https://dist.apache.org/repos/dist/release/skywalking/KEYS) file.
to set gpg tool and encrypt passwords. - If you are a PMC member, use your Apache ID and password to log in this svn, and update the file. **Don't override the existing file.**
- If you are a committer, please ask a PMC member to help you.
Use the following block as a template and place it in `~/.m2/settings.xml`. ## Tag for the release
```
<settings>
...
<servers>
<!-- To publish a snapshot of some part of Maven -->
<server>
<id>apache.snapshots.https</id>
<username> <!-- YOUR APACHE LDAP USERNAME --> </username>
<password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>
</server>
<!-- To stage a release of some part of Maven -->
<server>
<id>apache.releases.https</id>
<username> <!-- YOUR APACHE LDAP USERNAME --> </username>
<password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>
</server>
...
</servers>
</settings>
```
## Add your GPG public key
1. Add your GPG public key into the [SkyWalking GPG KEYS](https://dist.apache.org/repos/dist/release/skywalking/KEYS) file.
If you are a committer, use your Apache ID and password to log in this svn, and update the file. **Don't override the existing file.**
1. Upload your GPG public key to the public GPG site, such as [MIT's site](http://pgp.mit.edu:11371/). This site should be in the
Apache maven staging repository checklist.
## Test your settings
This step is only for testing purpose. If your env is correctly set, you don't need to check every time.
```
./mvnw clean install -Pall (this will build artifacts, sources and sign)
```
## Prepare for the release
- Set the version number that you are about to release. - Set the version number that you are about to release.
```bash ```bash
export RELEASE_VERSION=x.y.z # (example: RELEASE_VERSION=10.1.0) export RELEASE_VERSION=x.y.z # (example: RELEASE_VERSION=10.1.0)
export NEXT_RELEASE_VERSION=x.y.z # (example: NEXT_RELEASE_VERSION=10.2.0) export NEXT_RELEASE_VERSION=x.y.z # (example: NEXT_RELEASE_VERSION=10.2.0)
export PRODUCT_NAME="apache-skywalking-apm"
export SOURCE_FILE="dist/${PRODUCT_NAME}-${RELEASE_VERSION}.tar.gz"
export TARGET_DIR="tools/releasing"
``` ```
- Create a new folder for the new release. - Create a new folder for the new release.
@ -76,42 +45,34 @@ git tag v${RELEASE_VERSION}
git push origin v${RELEASE_VERSION} git push origin v${RELEASE_VERSION}
``` ```
## Stage the release ## Build the binary package
```bash ```bash
./mvnw flatten:flatten install deploy -DskipTests ./mvnw install package -DskipTests
mv "$SOURCE_FILE" "$TARGET_DIR/"
``` ```
This command will build, sign, and deploy the release to the Apache staging repository. The release will be packaged first as `apache-skywalking-apm-x.y.z.tar.gz` in the `{PROJECT_ROOT}/dist` directory, and
You should be prompted for your GPG passphrase during the deployment process. then moved to the `tools/releasing` directory.
If no prompt is present, you can set the passphrase in the environment variable `MAVEN_GPG_PASSPHRASE`:
```bash
MAVEN_GPG_PASSPHRASE=<your-gpg-passphrase> ./mvnw flatten:flatten install deploy -DskipTests
```
- The release will be automatically inserted into a temporary staging repository. ## Build the source code package, sign the source code package and binary package
`apache-skywalking-apm-x.y.z.tar.gz` with its `.asc` size could be found in https://repository.apache.org/ staging repo.
Create shasum through `shasum -a 512 apache-skywalking-apm-x.y.z.tar.gz > apache-skywalking-apm-x.y.z.tar.gz.sha512`
## Build and sign the source code package
```bash ```bash
cd tools/releasing cd tools/releasing
bash create_source_release.sh bash create_release_tars.sh
``` ```
This script takes care of the following things: This script takes care of the following things:
1. Use `v` + `RELEASE_VERSION` as tag to clone the codes. 1. Use `v` + `RELEASE_VERSION` as tag to clone the codes.
1. Complete `git submodule init/update`. 1. Complete `git submodule init/update`.
1. Exclude all unnecessary files in the target source tar, such as `.git`, `.github`, and `.gitmodules`. See the script for more details. 1. Exclude all unnecessary files in the target source tar, such as `.git`, `.github`, and `.gitmodules`. See the script for more details.
1. Execute `gpg` and `shasum 512`. 1. Execute `gpg` and `shasum 512` for source tar and binary tar.
`apache-skywalking-apm-x.y.z-src.tgz` and files ending with `.asc` and `.sha512` may be found in the `tools/releasing` folder. `apache-skywalking-apm-x.y.z-src.tgz` and files ending with `.asc` and `.sha512` may be found in the `tools/releasing` folder.
## Start the next iteration ## Start the next iteration
Once the release is deployed to the staging repositories, you can start updating the version to the next number and open a pull request. Once the binary and source packages are created, you can start updating the version to the next number and open a pull request.
```bash ```bash
# Update the version to the next snapshot version still in the same branch, such as 10.1.0-release # Update the version to the next snapshot version still in the same branch, such as 10.1.0-release
@ -130,15 +91,6 @@ git push
gh pr create --fill # If you have gh cli installed and configured, or open the pull request in https://github.com/apache/skywalking/pulls gh pr create --fill # If you have gh cli installed and configured, or open the pull request in https://github.com/apache/skywalking/pulls
``` ```
## Locate and download the distribution package in Apache Nexus Staging repositories
1. Use your Apache ID to log in to `https://repository.apache.org/`.
1. Go to `https://repository.apache.org/#stagingRepositories`.
1. Search `skywalking` and find your staging repository.
1. Close the repository and wait for all checks to pass. In this step, your GPG KEYS will be checked. See the [set PGP document](#add-your-gpg-public-key),
if you haven't done it before.
1. Go to `{REPO_URL}/org/apache/skywalking/apache-skywalking-apm/x.y.z`.
1. Download `.tar.gz` and `.zip` and files ending with `.asc` and `.sha1`.
## Upload to Apache svn ## Upload to Apache svn
1. Use your Apache ID to log in to `https://dist.apache.org/repos/dist/dev/skywalking/`. 1. Use your Apache ID to log in to `https://dist.apache.org/repos/dist/dev/skywalking/`.
@ -148,7 +100,6 @@ if you haven't done it before.
* See Section "Build and sign the source code package" for more details * See Section "Build and sign the source code package" for more details
1. Upload the distribution package to the folder with files ending with `.asc` and `.sha512`. 1. Upload the distribution package to the folder with files ending with `.asc` and `.sha512`.
* Package name: `apache-skywalking-bin-x.y.z.tar.gz`. * Package name: `apache-skywalking-bin-x.y.z.tar.gz`.
* See Section "Locate and download the distribution package in Apache Nexus Staging repositories" for more details.
* Create a `.sha512` package: `shasum -a 512 file > file.sha512` * Create a `.sha512` package: `shasum -a 512 file > file.sha512`
## Call a vote in dev ## Call a vote in dev
@ -172,10 +123,6 @@ Release Candidate:
- sha512xxxxyyyzzz apache-skywalking-apm-x.x.x-src.tgz - sha512xxxxyyyzzz apache-skywalking-apm-x.x.x-src.tgz
- sha512xxxxyyyzzz apache-skywalking-apm-bin-x.x.x.tar.gz - sha512xxxxyyyzzz apache-skywalking-apm-bin-x.x.x.tar.gz
Maven 2 staging repository:
* https://repository.apache.org/content/repositories/xxxx/org/apache/skywalking/
Release Tag : Release Tag :
* (Git Tag) vx.y.z * (Git Tag) vx.y.z
@ -206,7 +153,6 @@ Voting will start now (xxxx date) and will remain open for at least 72 hours, Re
All PMC members and committers should check these before casting +1 votes. All PMC members and committers should check these before casting +1 votes.
1. Features test. 1. Features test.
1. All artifacts in staging repository are published with `.asc`, `.md5`, and `*sha1` files.
1. Source code and distribution package (`apache-skywalking-x.y.z-src.tar.gz`, `apache-skywalking-bin-x.y.z.tar.gz`, `apache-skywalking-bin-x.y.z.zip`) 1. Source code and distribution package (`apache-skywalking-x.y.z-src.tar.gz`, `apache-skywalking-bin-x.y.z.tar.gz`, `apache-skywalking-bin-x.y.z.zip`)
are found in `https://dist.apache.org/repos/dist/dev/skywalking/x.y.z` with `.asc` and `.sha512`. are found in `https://dist.apache.org/repos/dist/dev/skywalking/x.y.z` with `.asc` and `.sha512`.
1. `LICENSE` and `NOTICE` are in the source code and distribution package. 1. `LICENSE` and `NOTICE` are in the source code and distribution package.
@ -231,15 +177,12 @@ enter your apache password
.... ....
``` ```
2. Release in the nexus staging repo. 2. Public download source and distribution tar/zip with asc and sha512 are located in `http://www.apache.org/dyn/closer.cgi/skywalking/x.y.z/xxx`.
3. Public download source and distribution tar/zip are located in `http://www.apache.org/dyn/closer.cgi/skywalking/x.y.z/xxx`.
The Apache mirror path is the only release information that we publish. The Apache mirror path is the only release information that we publish.
4. Public asc and sha512 are located in `https://www.apache.org/dist/skywalking/x.y.z/xxx`. 3. Update the website download page. http://skywalking.apache.org/downloads/ . Add a new download source, distribution, sha512, asc, and document
5. Public KEYS point to `https://www.apache.org/dist/skywalking/KEYS`.
6. Update the website download page. http://skywalking.apache.org/downloads/ . Add a new download source, distribution, sha512, asc, and document
links. The links can be found following rules (3) to (6) above. links. The links can be found following rules (3) to (6) above.
7. Add a release event on the website homepage and event page. Announce the public release with changelog or key features. 4. Add a release event on the website homepage and event page. Announce the public release with changelog or key features.
8. Send ANNOUNCE email to `dev@skywalking.apache.org`, `announce@apache.org`. The sender should use the Apache email account. 5. Send ANNOUNCE email to `dev@skywalking.apache.org`, `announce@apache.org`. The sender should use the Apache email account.
``` ```
Mail title: [ANNOUNCE] Apache SkyWalking x.y.z released Mail title: [ANNOUNCE] Apache SkyWalking x.y.z released

View File

@ -3,6 +3,7 @@
## Start the storage, OAP and Booster UI with docker-compose ## Start the storage, OAP and Booster UI with docker-compose
As a quick start, you can use our one-liner script to start ElasticSearch or [BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/) as the storage, OAP server and Booster UI, please make sure you have installed Docker. As a quick start, you can use our one-liner script to start ElasticSearch or [BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/) as the storage, OAP server and Booster UI, please make sure you have installed Docker.
The versions of the OAP and BanyanDB images are the latest release versions.
**Linux, macOS, Windows (WSL)** **Linux, macOS, Windows (WSL)**
```shell ```shell
@ -24,24 +25,27 @@ docker compose --project-name=skywalking-quickstart down
## Start a `standalone` container with `H2` storage ## Start a `standalone` container with `H2` storage
```shell ```shell
docker run --name oap --restart always -d apache/skywalking-oap-server:9.7.0 export RELEASE_VERSION=x.y.z
docker run --name oap --restart always -d apache/skywalking-oap-server:${RELEASE_VERSION}
``` ```
## Start a `standalone` container with BanyanDB as storage, whose address is `banyandb:17912` ## Start a `standalone` container with BanyanDB as storage, whose address is `banyandb:17912`
```shell ```shell
docker run --name oap --restart always -d -e SW_STORAGE=banyandb -e SW_STORAGE_BANYANDB_TARGETS=banyandb:17912 apache/skywalking-oap-server:9.7.0 export RELEASE_VERSION=x.y.z
docker run --name oap --restart always -d -e SW_STORAGE=banyandb -e SW_STORAGE_BANYANDB_TARGETS=banyandb:17912 apache/skywalking-oap-server:${RELEASE_VERSION}
``` ```
## Start a `standalone` container with ElasticSearch 7 as storage, whose address is `elasticsearch:9200` ## Start a `standalone` container with ElasticSearch 7 as storage, whose address is `elasticsearch:9200`
```shell ```shell
docker run --name oap --restart always -d -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server:9.7.0 export RELEASE_VERSION=x.y.z
docker run --name oap --restart always -d -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server:${RELEASE_VERSION}
``` ```
# Configuration # Configuration
We could set up environment variables to configure this image. They are defined in [backend-setup](https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-setup/). We could set up environment variables to configure this image. They are defined in [backend-setup](backend-setup.md).
# Extend image # Extend image

View File

@ -20,7 +20,7 @@
# This script relies on few environment variables to determine source code package # This script relies on few environment variables to determine source code package
# behavior, those variables are: # behavior, those variables are:
# RELEASE_VERSION -- The version of this source package. # RELEASE_VERSION -- The version of this source package.
# For example: RELEASE_VERSION=5.0.0-alpha # For example: RELEASE_VERSION=10.0.0
RELEASE_VERSION=${RELEASE_VERSION} RELEASE_VERSION=${RELEASE_VERSION}
@ -32,7 +32,7 @@ echo "Source tag "${TAG_NAME}
if [ "$RELEASE_VERSION" == "" ]; then if [ "$RELEASE_VERSION" == "" ]; then
echo "RELEASE_VERSION environment variable not found, Please setting the RELEASE_VERSION." echo "RELEASE_VERSION environment variable not found, Please setting the RELEASE_VERSION."
echo "For example: export RELEASE_VERSION=5.0.0-alpha" echo "For example: export RELEASE_VERSION=10.0.0"
exit 1 exit 1
fi fi
@ -75,5 +75,7 @@ tar czf ${PRODUCT_NAME}-src.tgz \
${PRODUCT_NAME} ${PRODUCT_NAME}
gpg --armor --detach-sig ${PRODUCT_NAME}-src.tgz gpg --armor --detach-sig ${PRODUCT_NAME}-src.tgz
gpg --armor --detach-sig ${PRODUCT_NAME}.tar.gz
shasum -a 512 ${PRODUCT_NAME}-src.tgz > ${PRODUCT_NAME}-src.tgz.sha512 shasum -a 512 ${PRODUCT_NAME}-src.tgz > ${PRODUCT_NAME}-src.tgz.sha512
shasum -a 512 ${PRODUCT_NAME}.tar.gz > ${PRODUCT_NAME}.tar.gz.sha512