You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hugegraph.apache.org by ji...@apache.org on 2026/09/04 14:49:37 UTC
(hugegraph-doc) 30/33: fix(ci): serialize ASF target writers
This is an automated email from the ASF dual-hosted git repository.
imbajin pushed a commit to branch feat/oink-core-platform
in repository https://gitbox.apache.org/repos/asf/hugegraph-doc.git
commit 79d12ba528c6e13711aed831cae86d6828c99d2b
Author: dark <ji...@apache.org>
AuthorDate: Fri Sep 4 22:24:57 2026 +0800
fix(ci): serialize ASF target writers
- group production runs by the asf-site target
- isolate staging and pull request concurrency
- guard the target-level concurrency contract
---
.github/workflows/hugo.yml | 2 +-
tests/e2e/workflow-contract.test.cjs | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml
index cd9db3154..4e72371d4 100644
--- a/.github/workflows/hugo.yml
+++ b/.github/workflows/hugo.yml
@@ -28,7 +28,7 @@ on:
type: string
concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.operation || 'automatic' }}
+ group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.pull_request.number) || (inputs.operation == 'staging-next' && 'asf-staging-oink' || 'asf-site') }}
cancel-in-progress: true
env:
diff --git a/tests/e2e/workflow-contract.test.cjs b/tests/e2e/workflow-contract.test.cjs
index 179e6f74a..45bf171d2 100644
--- a/tests/e2e/workflow-contract.test.cjs
+++ b/tests/e2e/workflow-contract.test.cjs
@@ -32,6 +32,17 @@ test("event plan fixes origins, branches, confirmations, and five-version order"
assert.doesNotMatch(workflow, /permissions:\s*write-all/);
});
+test("concurrency serializes every writer to the same ASF target", () => {
+ assert.match(
+ workflow,
+ /group: \$\{\{ github\.workflow \}\}-\$\{\{[\s\S]*inputs\.operation == 'staging-next'[\s\S]*'asf-staging-oink'[\s\S]*'asf-site'[\s\S]*\}\}/
+ );
+ assert.doesNotMatch(
+ workflow,
+ /group:[^\n]*(?:inputs\.operation \|\| 'automatic'|github\.ref)/
+ );
+});
+
test("prepare pins Hugo and WebP tools before source validators", () => {
const setupHugo = workflow.indexOf("name: Setup Hugo Extended");
const setupWebp = workflow.indexOf("name: Install WebP validators");