Files
cwd/.github/workflows/create_release.yml
anghunk 615589f86b ci: 限制工作流仅在主仓库执行
为 npm 发布、文档构建与部署以及创建发布的工作流添加条件执行。
现在这些工作流仅会在 'anghunk/cwd' 仓库中运行,防止在复刻仓库上意外触发。
2026-02-04 14:02:58 +08:00

57 lines
1.6 KiB
YAML

name: Create Release
on:
push:
branches:
- main
workflow_dispatch:
jobs:
check-release:
if: github.repository == 'anghunk/cwd'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '22'
- name: Get package.json version
id: get_version
run: echo "PACKAGE_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV
- name: Get latest release version
id: get_release
run: |
curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r '.tag_name' > latest_release.txt
- name: Compare versions
id: compare_versions
run: |
LATEST_TAG="$(cat latest_release.txt 2>/dev/null || echo "")"
if [ "$LATEST_TAG" = "null" ]; then
LATEST_TAG=""
fi
NORMALIZED_LATEST="${LATEST_TAG#v}"
NORMALIZED_LATEST="${NORMALIZED_LATEST#V}"
if [ "$NORMALIZED_LATEST" != "$PACKAGE_VERSION" ]; then
echo "Version mismatch"
echo "create_release=true" >> $GITHUB_ENV
else
echo "Version matches"
echo "create_release=false" >> $GITHUB_ENV
fi
- name: Create new release
if: env.create_release == 'true'
run: |
TAG_NAME="v$PACKAGE_VERSION"
gh release create "$TAG_NAME" \
--generate-notes \
-t "$TAG_NAME"
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}