From 2ad54cf6b8fe91f8745c817b1cf5e002a7a2bca4 Mon Sep 17 00:00:00 2001 From: Wu Sheng Date: Sat, 7 Nov 2026 08:08:16 +0800 Subject: [PATCH 1/2] Fix the Go version in actions/setup and stale build/release docs before 0.16.0 actions/setup installed Go 1.24, while go.mod requires go 1.26.0 since #227. setup-go exports GOTOOLCHAIN=local, so the build either fails or, where sudo drops that variable, downloads the go1.26.0 toolchain instead of using the latest 1.26 patch. It now installs "1.26", like CI. README: - Build from source: needs Go 1.26+; `make build` only builds, a plain `make` also runs license/lint/test (license-eye, golangci-lint); the binaries are swctl--- for the seven platforms, not swctl-latest--amd64. - The GitHub Actions example used `apache/skywalking-cli@main`; the default branch is `master`, there is no `main`. CONTRIBUTING: - Compiling: Go 1.26+, seven binaries, not three. - How to release: the tag has no `v` prefix and is pushed only after `make release` succeeds; three links pointed at How-to-release.md anchors that do not exist; mention pre-release.sh and release.sh. How-to-release.md: fix the unclosed BuildKit link. --- CHANGES.md | 1 + CONTRIBUTING.md | 25 ++++++++++++++----------- README.md | 19 ++++++++++--------- actions/setup/action.yaml | 2 +- docs/How-to-release.md | 2 +- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 7788bfe4..1508bfe1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,6 +8,7 @@ Release Notes. ### Bug Fixes * Upgrade `golang.org/x/net` to v0.62.0 (with `golang.org/x/crypto` v0.58.0, `golang.org/x/text` v0.43.0 and `golang.org/x/sys` v0.49.0) to fix GO-2026-6860 and GO-2026-6866. +* Fix the `actions/setup` GitHub Action installing Go 1.24, older than the Go 1.26 that `go.mod` requires. 0.15.0 ------------------ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9d99268..4fbc7a83 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,8 +41,10 @@ request. Your PR is most likely to be accepted if it: ## Compiling and building -Clone the source code and simply run `make` in the source directory, this will download all necessary dependencies and -run tests, lint, and build three binary files in `./bin/`, for Windows, Linux, MacOS respectively. +Building needs Go 1.26 or later, and `make` also needs `license-eye` and `golangci-lint`. Clone the source code and +simply run `make` in the source directory, this will download all necessary dependencies, check the license headers, +lint, run tests, and build the binaries in `./bin/`, one per platform: `darwin` (`amd64`, `arm64`), `linux` (`386`, +`amd64`, `arm64`) and `windows` (`386`, `amd64`). `make build` only builds them. ```shell make @@ -103,17 +105,18 @@ This section guides committers and PMC members to release SkyWalking CLI in Apac - [x] [GNU Make](https://www.gnu.org/software/make/manual/make.html) is installed - [x] [GPG tool](https://gpgtools.org) is installed -- [x] [Add your GPG key](docs/How-to-release.md#add-your-gpg-public-key) +- [x] [Add your GPG key](docs/How-to-release.md#add-your-gpg-public-key-to-apache-svn) ### Release steps -- Export the version that is to be released, `export VERSION=1.0.1 ` -- Tag the latest commit that is to be released with `git tag v${VERSION}` and push the tag - with `git push https://github.com/apache/skywalking-cli v${VERSION}` -- Verify licenses, build and sign distribution packages, simply run `make release`, distribution packages and checksums - are generated +- Export the version that is to be released, `export VERSION=1.0.1`, and the Go version CI uses, + `export GOTOOLCHAIN=go1.26.` +- [Build and sign the source code package](docs/How-to-release.md#build-and-sign-the-source-code-package): tag the + release commit with the annotated tag `${VERSION}` (no `v` prefix), run `make release` to verify licenses, build and + sign the distribution packages, and push the tag only after it succeeds - [Upload the packages to SVN repository](docs/How-to-release.md#upload-to-apache-svn) -- [Send internal announcement](docs/How-to-release.md#make-the-internal-announcements) +- `scripts/pre-release.sh` runs the two steps above and prints the vote email +- [Send internal announcement](docs/How-to-release.md#make-the-internal-announcement) - [Wait at least 48 hours for test responses](docs/How-to-release.md#wait-at-least-48-hours-for-test-responses) -- [Call for vote](docs/How-to-release.md#call-a-vote-in-dev) -- [Publish release](docs/How-to-release.md#publish-release) +- [Call for vote](docs/How-to-release.md#call-for-vote-in-dev-mailing-list) +- [Publish release](docs/How-to-release.md#publish-release), `scripts/release.sh` runs its steps diff --git a/README.md b/README.md index 06afeb79..39815bf0 100644 --- a/README.md +++ b/README.md @@ -50,21 +50,22 @@ including macOS, Linux, Windows. ### Build from source -If you want to try the latest features, you can compile the latest source code and build `swctl` by yourself. Since -SkyWalking CLI is using `Makefile`, compiling the project is as easy as executing a command in the root directory of the -project. +If you want to try the latest features, you can compile the latest source code and build `swctl` by yourself. Building +needs Go 1.26 or later. Run this in the root directory of the project: ```shell git clone https://github.com/apache/skywalking-cli cd skywalking-cli -make +make build ``` -Then copy the `./bin/swctl-latest-(darwin|linux|windows)-amd64` to your `PATH` directory according to your OS, -usually `/usr/bin/` or `/usr/local/bin`. +`make build` writes one binary per platform to `./bin/`, named `swctl---`, for `darwin` (`amd64`, +`arm64`), `linux` (`386`, `amd64`, `arm64`) and `windows` (`386`, `amd64`). `` is `dev-` +unless you set it, as in `make build VERSION=0.16.0`. A plain `make` also checks the license headers, lints and runs +the tests before building, which needs `license-eye` and `golangci-lint` installed. -You can also copy it to any directory you like, then add that directory to `PATH`. **We recommend you to rename -the `swctl-latest-(darwin|linux|windows)-amd64` to `swctl`.** +Then copy the binary for your OS and architecture to a directory in your `PATH`, usually `/usr/local/bin`, and rename it +to `swctl`. ### Run from Docker image @@ -149,7 +150,7 @@ jobs: # other steps such as checkout ... - name: Wrap the deployment steps with skywalking-cli - uses: apache/skywalking-cli@main # we always suggest using a revision instead of `main` + uses: apache/skywalking-cli@master # we always suggest pinning a release tag or a commit SHA instead of `master` with: oap-url: ${{ secrets.OAP_URL }} # Required. Set the OAP backend URL, such as example.com:11800 auth-token: ${{ secrets.OAP_AUTH_TOKEN }} # Optional. OAP auth token if you enable authentication in OAP diff --git a/actions/setup/action.yaml b/actions/setup/action.yaml index c9a73c93..62f7f653 100644 --- a/actions/setup/action.yaml +++ b/actions/setup/action.yaml @@ -36,7 +36,7 @@ runs: - name: Set up Go uses: actions/setup-go@v7 with: - go-version: 1.24 + go-version: "1.26" cache-dependency-path: ${{ github.action_path }}/go.sum - name: Checkout if: inputs.version != '' diff --git a/docs/How-to-release.md b/docs/How-to-release.md index f7553cf9..b025628e 100644 --- a/docs/How-to-release.md +++ b/docs/How-to-release.md @@ -225,7 +225,7 @@ skipped or failed step. 2. Push Docker images. In order to publish the Docker images, you -have [to enable BuildKit in the Docker daemon](https://docs.docker.com/develop/develop-images/build_enhancements/. +have [to enable BuildKit in the Docker daemon](https://docs.docker.com/build/buildkit/). ```shell make docker.push From 5785a8c3e31b2f90ef360e0e65d9e1ac5ffec43c Mon Sep 17 00:00:00 2001 From: Wu Sheng Date: Sat, 7 Nov 2026 08:03:33 +0800 Subject: [PATCH 2/2] Keep the basic e2e trigger running until verification ends infra-e2e #132 (pulled in by the cf589b4 -> 56ac8be bump in #240) makes the http trigger stop after `times` requests. Before it, `times` only decided when the trigger reported its first result, and the requests kept going until the verify phase finished. The basic case's `times: 10` now means 30 seconds of traffic, and the nightly CI failed on 3 of the 4 nights since #240, every time on `metrics linear service_relation_client_cpm`, whose whole 30-minute window came back empty while the other 15 cases passed. `times: -1` (endless, infra-e2e #134) restores the continuous traffic, the same as the live-debugging case. --- test/cases/basic/test.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/cases/basic/test.yaml b/test/cases/basic/test.yaml index c094692e..33c8df44 100644 --- a/test/cases/basic/test.yaml +++ b/test/cases/basic/test.yaml @@ -26,7 +26,10 @@ setup: trigger: action: http interval: 3s - times: 10 + # Continuous traffic until the verify phase ends. The client-side relation metrics + # (service_relation_client_cpm, ...) need the OAP to resolve the consumer's exit + # peer to the provider service, which a short burst of requests may not outlast. + times: -1 url: http://${consumer_host}:${consumer_9090}/users method: POST