GitHub Actions工作流异常:自动创建Tag/Release未触发CD工作流
解决方案:自动创建Tag/Release后触发Deploy工作流
我来帮你搞定这个问题!你遇到的情况是GitHub Actions的默认安全限制导致的:用工作流自带的GITHUB_TOKEN创建的Tag或Release,不会触发新的工作流运行,这是GitHub为了防止无限循环触发设置的防护机制。而手动创建时用的是你个人的用户身份令牌,所以能正常触发Code Deploy。
解决方法:用个人访问令牌(PAT)替代默认GITHUB_TOKEN
你需要生成一个拥有仓库操作权限的PAT,替换工作流里的默认令牌,这样创建Tag/Release的操作就能触发后续的Deploy工作流了。
步骤1:生成个人访问令牌(PAT)
在GitHub个人设置中创建新的PAT,勾选repo权限(确保拥有创建Tag、Release的权限),保存好生成的令牌内容。
步骤2:将PAT添加到仓库Secrets
进入你的仓库 → Settings → Secrets and variables → Actions,点击New repository secret,将刚才的PAT命名为REPO_PAT(名字可自定义,需和后续工作流变量名对应)并保存。
步骤3:修改Code Int工作流代码
把inrisk.packages.ci.yml中两处GITHUB_TOKEN替换为你刚添加的REPO_PAT,修改后的代码如下:
name: Code Int on: push: paths: - 'infra/**' jobs: ci: runs-on: ubuntu-latest steps: # Checks-out to $GITHUB_WORKSPACE - uses: actions/checkout@v2 - name: Basic Checks run: | whoami ls -lah pwd - uses: actions/setup-node@v1 # Create a new release when on develop which triggers the deployment - name: Bump version and push tag if: github.ref == 'refs/heads/develop' uses: mathieudutour/github-tag-action@v4.5 id: tag_version env: GITHUB_TOKEN: ${{ secrets.REPO_PAT }} # 替换为自定义PAT - name: Create Release if: github.ref == 'refs/heads/develop' id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.REPO_PAT }} # 替换为自定义PAT with: tag_name: ${{ steps.tag_version.outputs.new_tag }} release_name: Release ${{ steps.tag_version.outputs.new_tag }} draft: false prerelease: false
验证修改效果
推送代码到develop分支,等待Code Int工作流完成Tag和Release的创建,此时Code Deploy工作流会自动被触发,效果和手动创建Tag/Release时一致。
内容的提问来源于stack exchange,提问作者alexis




