diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 410d952..59de6f7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,6 +2,12 @@ name: release-abi on: push: tags: ['v*'] + # 手动重跑(tag 已存在但 release 缺失时用;tag 删+重建同 sha 不会重新触发) + workflow_dispatch: + inputs: + tag: + description: 要发布的 tag(须已存在,如 v0.2.18) + required: true permissions: contents: write jobs: @@ -9,8 +15,10 @@ jobs: runs-on: ubuntu-latest env: GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ inputs.tag || github.ref_name }} steps: - uses: actions/checkout@v4 + with: { ref: "${{ inputs.tag || github.ref }}" } - name: 下载 ABI 依赖 env: { GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" } run: ./ci/deps.sh @@ -19,7 +27,7 @@ jobs: - name: 打包 ABI 产物 run: | set -euo pipefail - v="${GITHUB_REF_NAME}" + v="${RELEASE_TAG:-${GITHUB_REF_NAME}}" d="kvspace-c-abi-$v-linux-x86_64" mkdir -p "$d/include" "$d/lib" # 头:本仓无公共头(内部头在 src/),权威 ABI 头在 kvspace 仓 → 递归整目录 @@ -32,4 +40,4 @@ jobs: tar czf "$d.tar.gz" "$d" sha256sum "$d.tar.gz" > SHA256SUMS - name: 发布 release - run: gh release create "${GITHUB_REF_NAME}" kvspace-c-abi-*.tar.gz SHA256SUMS --generate-notes + run: gh release create "${RELEASE_TAG:-${GITHUB_REF_NAME}}" kvspace-c-abi-*.tar.gz SHA256SUMS --generate-notes