You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2026/05/25 16:21:21 UTC
(opendal) 01/01: fix(ci): address release gate failures
This is an automated email from the ASF dual-hosted git repository.
Xuanwo pushed a commit to branch xuanwo/fix-release-rc2-gates
in repository https://gitbox.apache.org/repos/asf/opendal.git
commit f606c3286aa28b829216c6e5e02cfeb707791cb0
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Tue May 26 00:20:39 2026 +0800
fix(ci): address release gate failures
---
.agents/skills/opendal-release/SKILL.md | 45 +++++++++++++++++++++++++++++++++
.github/workflows/release_dart.yml | 12 +++++++--
core/services/tos/src/backend.rs | 6 ++++-
3 files changed, 60 insertions(+), 3 deletions(-)
diff --git a/.agents/skills/opendal-release/SKILL.md b/.agents/skills/opendal-release/SKILL.md
index 49e172bf6..5204d2b7a 100644
--- a/.agents/skills/opendal-release/SKILL.md
+++ b/.agents/skills/opendal-release/SKILL.md
@@ -130,6 +130,7 @@ Default required gate:
- `Release Java Binding`
- `Bindings Java CI`
- `Release Python Binding`
+- `Bindings Go CI`
- `Release NodeJS Binding`
- `Bindings NodeJS CI`
- `Docs`
@@ -152,8 +153,52 @@ Rules:
- Rerun transient workflow failures when logs indicate network, GitHub, package registry, or runner flakiness.
- If code or workflow changes are needed, land a PR on `main`, then create the next RC.
- Python wheel matrix can be slow. Poll job status before treating long runtime as a real failure.
+- The Go binding has no `release_go.yml` in this repository. Its RC gate in `apache/opendal` is `Bindings Go CI`; publishing is tag-driven and handled separately.
- Dotnet/NuGet RC publish failures are nonblocking only if Dotnet is outside the agreed gate. RC tags must not publish prerelease packages to NuGet.
+## Go Binding Release Readiness
+
+The Go binding is a subdirectory Go module at `bindings/go` with module path
+`github.com/apache/opendal/bindings/go`. Go's module proxy discovers versions
+from tags prefixed by the module directory, for example
+`bindings/go/v0.1.16-rc.1` and `bindings/go/v0.1.16`; the top-level OpenDAL tag
+`v${release_version}` is not a Go binding module version.
+
+As of the current release flow, `bindings/go` is not listed in
+`dev/src/release/package.rs` and there is no Go source archive generated by
+`just release`. Treat it as a separate Go module release path unless the project
+explicitly decides to add a Go source package to the ASF artifact list.
+
+Release manager checks:
+
+```bash
+git tag --list 'bindings/go/v*' --sort=version:refname | tail
+go list -m -versions github.com/apache/opendal/bindings/go
+git log --oneline "$(git tag --list 'bindings/go/v*' --sort=version:refname | tail -n1)"..origin/main -- bindings/go bindings/c .github/workflows/ci_bindings_go.yml
+```
+
+If `bindings/go`, `bindings/c`, or C ABI changes should be exposed to Go users,
+choose the next Go binding version independently from `opendal_version`, push a
+signed RC tag such as `bindings/go/v${go_version}-rc.1` at the same commit as the
+OpenDAL RC, and include `Bindings Go CI` in the required gate.
+
+Go service packages are built in the separate `apache/opendal-go-services`
+repository. That repo polls for a newer `bindings/go/v*` tag in `apache/opendal`
+and then builds precompressed `libopendal_c` artifacts from the latest top-level
+OpenDAL tag. Verify it after pushing a Go binding RC tag:
+
+```bash
+gh run list --repo apache/opendal-go-services --limit 20 \
+ --json name,event,headBranch,status,conclusion,url
+
+go list -m -versions github.com/apache/opendal-go-services/fs
+```
+
+The service repo tags its own root version (`v${go_version}`) and service module
+versions such as `fs/v${go_version}`. Do not treat a green `Bindings Go CI` run
+as proof that the service artifacts were generated; check the separate
+`opendal-go-services` workflow and module versions when Go is in scope.
+
## Rust Release Readiness
Before official release, and preferably before vote, inspect the Rust publish plan:
diff --git a/.github/workflows/release_dart.yml b/.github/workflows/release_dart.yml
index afac52c29..ad253944a 100644
--- a/.github/workflows/release_dart.yml
+++ b/.github/workflows/release_dart.yml
@@ -73,8 +73,16 @@ jobs:
- name: Install cross
run: cargo install cross --git https://github.com/cross-rs/cross --force
- - name: Build on linux
- if: runner.os == 'Linux'
+ - name: Build on native linux
+ if: runner.os == 'Linux' && matrix.target == 'x86_64-unknown-linux-gnu'
+ env:
+ CC_x86_64_unknown_linux_gnu: gcc
+ run: |
+ cd bindings/dart/rust
+ cargo build --release --target ${{ matrix.target }}
+
+ - name: Build on cross linux
+ if: runner.os == 'Linux' && matrix.target != 'x86_64-unknown-linux-gnu'
run: |
cd bindings/dart/rust
cross build --release --target ${{ matrix.target }}
diff --git a/core/services/tos/src/backend.rs b/core/services/tos/src/backend.rs
index 3f7d3d4e1..872482af5 100644
--- a/core/services/tos/src/backend.rs
+++ b/core/services/tos/src/backend.rs
@@ -194,7 +194,11 @@ impl Builder for TosBuilder {
write_with_if_not_exists: true,
write_with_user_metadata: true,
write_multi_min_size: Some(5 * 1024 * 1024),
- write_multi_max_size: Some(5 * 1024 * 1024 * 1024),
+ write_multi_max_size: if cfg!(target_pointer_width = "64") {
+ Some(5 * 1024 * 1024 * 1024)
+ } else {
+ Some(usize::MAX)
+ },
delete: true,
delete_max_size: Some(1000),