This is an automated email from the ASF dual-hosted git repository.
imbajin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hugegraph-toolchain.git
The following commit(s) were added to refs/heads/master by this push:
new 993f92ea ci: add rerun workflow for module CI failures (#730)
993f92ea is described below
commit 993f92ea452b8e59fe3954f15a5ab087032ddea8
Author: contrueCT <[email protected]>
AuthorDate: Fri May 8 15:56:16 2026 +0800
ci: add rerun workflow for module CI failures (#730)
---
.github/workflows/rerun-ci.yml | 138 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 138 insertions(+)
diff --git a/.github/workflows/rerun-ci.yml b/.github/workflows/rerun-ci.yml
new file mode 100644
index 00000000..5b320222
--- /dev/null
+++ b/.github/workflows/rerun-ci.yml
@@ -0,0 +1,138 @@
+name: "Rerun CI"
+
+on:
+ workflow_run:
+ workflows:
+ - "java-client-ci"
+ - "loader-ci"
+ - "tools-ci"
+ - "hubble-ci"
+ - "spark-connector-ci"
+ - "go-client-ci"
+ types:
+ - completed
+
+permissions: {}
+
+env:
+ MAX_RERUNS: '2'
+ RETRY_DELAY_SECONDS: '180'
+
+jobs:
+ decide-rerun-action:
+ if: ${{ github.event.workflow_run.conclusion == 'failure' }}
+ runs-on: ubuntu-latest
+ outputs:
+ action: ${{ steps.decision.outputs.action }}
+ steps:
+ - name: Decide rerun action
+ id: decision
+ env:
+ WORKFLOW_NAME: ${{ github.event.workflow_run.name }}
+ RUN_ID: ${{ github.event.workflow_run.id }}
+ RUN_ATTEMPT: ${{ github.event.workflow_run.run_attempt }}
+ EVENT_NAME: ${{ github.event.workflow_run.event }}
+ HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
+ run: |
+ set -euo pipefail
+
+ action="skip"
+ reason="unsupported event: $EVENT_NAME"
+
+ if [[ "$EVENT_NAME" == "push" || "$EVENT_NAME" == "pull_request" ]];
then
+ if (( RUN_ATTEMPT > MAX_RERUNS )); then
+ reason="retry limit reached"
+ else
+ action="rerun"
+ reason="within retry limit"
+ fi
+ fi
+
+ {
+ echo "action=$action"
+ echo "reason=$reason"
+ } >> "$GITHUB_OUTPUT"
+
+ {
+ echo "### Rerun CI decision"
+ echo ""
+ echo "- Workflow: $WORKFLOW_NAME"
+ echo "- Source event: $EVENT_NAME"
+ echo "- Head branch: $HEAD_BRANCH"
+ echo "- Run ID: $RUN_ID"
+ echo "- Current attempt: $RUN_ATTEMPT"
+ echo "- Max automatic reruns: $MAX_RERUNS"
+ echo "- Delay seconds: $RETRY_DELAY_SECONDS"
+ echo "- Action: $action"
+ echo "- Reason: $reason"
+ } >> "$GITHUB_STEP_SUMMARY"
+
+ rerun-failed-jobs:
+ needs: decide-rerun-action
+ if: needs.decide-rerun-action.outputs.action == 'rerun'
+ permissions:
+ actions: write
+ contents: read
+ runs-on: ubuntu-latest
+ steps:
+ - name: Wait before rerun
+ run: |
+ sleep "$RETRY_DELAY_SECONDS"
+
+ - name: Check source branch freshness
+ id: freshness
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ HEAD_REPOSITORY: ${{
github.event.workflow_run.head_repository.full_name }}
+ HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
+ HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
+ WORKFLOW_NAME: ${{ github.event.workflow_run.name }}
+ RUN_ID: ${{ github.event.workflow_run.id }}
+ run: |
+ set -euo pipefail
+
+ action="rerun"
+ latest_head_sha="$HEAD_SHA"
+ reason="head unchanged"
+
+ if [[ -z "$HEAD_REPOSITORY" || -z "$HEAD_BRANCH" || -z "$HEAD_SHA"
]]; then
+ action="skip"
+ reason="missing head repository metadata"
+ else
+ latest_head_sha="$(gh api "repos/$HEAD_REPOSITORY/commits" -f
sha="$HEAD_BRANCH" -F per_page=1 --jq '.[0].sha' 2>/dev/null || true)"
+
+ if [[ -z "$latest_head_sha" || "$latest_head_sha" == "null" ]];
then
+ action="skip"
+ reason="head branch no longer available"
+ elif [[ "$latest_head_sha" != "$HEAD_SHA" ]]; then
+ action="skip"
+ reason="head moved to $latest_head_sha"
+ fi
+ fi
+
+ {
+ echo "action=$action"
+ echo "latest_head_sha=$latest_head_sha"
+ echo "reason=$reason"
+ } >> "$GITHUB_OUTPUT"
+
+ {
+ echo "### Rerun CI freshness check"
+ echo ""
+ echo "- Workflow: $WORKFLOW_NAME"
+ echo "- Run ID: $RUN_ID"
+ echo "- Head repository: $HEAD_REPOSITORY"
+ echo "- Head branch: $HEAD_BRANCH"
+ echo "- Failed run head SHA: $HEAD_SHA"
+ echo "- Current branch tip SHA: $latest_head_sha"
+ echo "- Action: $action"
+ echo "- Reason: $reason"
+ } >> "$GITHUB_STEP_SUMMARY"
+
+ - name: Rerun failed jobs
+ if: steps.freshness.outputs.action == 'rerun'
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
+ run: |
+ gh run rerun ${{ github.event.workflow_run.id }} --failed