我已使用此处提到[skip ci]的命令跳过 GitHub 操作中的工作流程运行,在使用 PAT 在 CI aciton 中构建图像后,我正在执行自动提交,效果非常好!
但由于提交注释包含该[skip ci]命令,并且在此之后如果我创建新的标签版本,则不会触发 CI 工作流程,因为[skip ci].
有什么方法可以排除[skip ci]for 标签推送事件并仅将其保留在运行 ci 操作的分支之一吗?
GitHub 操作中的自动提交:
on: push
jobs:
ci:
runs-on: ubuntu-latest
steps:
- name: build and push image
- name: update image tag
- name: Commit changes
run: |
git config --global user.name 'abc'
git config --global user.email 'xyz@users.noreply.github.com'
git remote add origin https://github.com/${{ github.repository }}
git config --global push.default current
git remote set-url origin https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/${{ github.repository }}
git commit -am "build: Image tag udpated [skip ci]"
git push
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,此操作将对所有推送事件运行,并且该Commit changes步骤将使用 PAT 进行另一次提交,但在[skip ci]注释中,因此不会再次触发相同的工作流程并且它可以工作。
但是,当我去发布具有新发布标题和描述的新标签时,不会触发此操作。
有办法避免这种情况吗?
GitHub 操作使用一种特殊的安全令牌,将自身标识为 GitHub 操作。它利用这一事实来防止操作触发更多操作,从而可能导致级联。
要绕过此保护,您需要使用不同的安全令牌(例如个人访问令牌或 OAuth 应用程序令牌)来执行标签推送操作。
您可以将该令牌存储为操作机密。
当您使用存储库的 GITHUB_TOKEN 执行任务时,GITHUB_TOKEN 触发的事件不会创建新的工作流运行。这可以防止您意外创建递归工作流运行。例如,如果工作流运行使用存储库的 GITHUB_TOKEN 推送代码,则即使存储库包含配置为在推送事件发生时运行的工作流,新工作流也不会运行。
你能做的就是尽早摆脱困境。为此,请[skip ci]从提交消息中删除令牌并添加您自己的令牌,例如[do-not-build],任何东西都可以,真的。
然后if:在执行构建的作业上添加一个条件:
if: ${{ contains(github.event.commits[0].message, '[do-not-build]') }}
Run Code Online (Sandbox Code Playgroud)
它将触发工作流程,但立即跳过作业。
| 归档时间: |
|
| 查看次数: |
5729 次 |
| 最近记录: |