name: Validate Release PR # release/* 分支的发布策略门禁:仅接受 hotfix/* 或带 cherry-pick/backport 标签的 PR。 # 详见 iac_modules/docs/tldr-github-branch-model.md on: pull_request_target: types: [opened, synchronize, reopened, labeled, unlabeled] permissions: contents: read pull-requests: read jobs: validate-release-source: runs-on: ubuntu-latest if: startsWith(github.base_ref, 'release/') steps: - name: Check PR source branch run: | SRC="${{ github.head_ref }}" TGT="${{ github.base_ref }}" LABELS="${{ join(github.event.pull_request.labels.*.name, ',') }}" echo "🔍 Validating PR into release branch" echo " source: $SRC" echo " target: $TGT" echo " labels: $LABELS" if [[ "$SRC" =~ ^hotfix/ ]]; then echo "✅ Allowed: hotfix/* branch" exit 0 fi if [[ "$LABELS" =~ (^|,)(cherry-pick|backport)(,|$) ]]; then echo "✅ Allowed: cherry-pick/backport labeled PR" exit 0 fi echo "❌ Rejected." echo "release/* 仅接受:" echo " - 来自 hotfix/* 的 PR" echo " - 带 cherry-pick 或 backport 标签的 PR(已验证 feature 的 backport/cherry-pick)" echo "禁止从 main / develop / feature/* 直接合并到 release/*。" exit 1