确保 Github Actions 中的工作流只被触发一次
Ensure that a workflow in Github Actions is only ever triggered once
我有一个特定文件更改时触发的工作流。是否可以确保仅在第一次更改文件时触发此工作流程?
用例是:
- 存储库是从模板存储库创建的
- 要初始化 README 和 repo 中的其他内容,可以在 JSON 配置文件中设置一些变量
- 提交该文件后,工作流 运行s 从模板等创建 README
我曾尝试让工作流在提交和推送更改的文件之前自行删除。这不起作用:fatal: not in a git directory
和 fatal: unsafe repository ('/github/workspace' is owned by someone else)
.
可能有用的方法是在工作流结束时向存储库添加一个类似 initialized
的主题,并在工作流开始时检查该主题是否存在。然而,这感觉像是一种黑客攻击,因为我滥用主题来做一些他们可能不打算做的事情。
所以我的问题仍然存在:是否有一种只运行工作流程一次的好方法?
借助 I managed to do solve this by using the GitHub CLI 的评论禁用工作流。
这是执行此操作的工作流程末尾的步骤:
- name: Disable this workflow
shell: bash
run: |
gh workflow disable -R $GITHUB_REPOSITORY "${{ github.workflow }}"
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
我有一个特定文件更改时触发的工作流。是否可以确保仅在第一次更改文件时触发此工作流程?
用例是:
- 存储库是从模板存储库创建的
- 要初始化 README 和 repo 中的其他内容,可以在 JSON 配置文件中设置一些变量
- 提交该文件后,工作流 运行s 从模板等创建 README
我曾尝试让工作流在提交和推送更改的文件之前自行删除。这不起作用:fatal: not in a git directory
和 fatal: unsafe repository ('/github/workspace' is owned by someone else)
.
可能有用的方法是在工作流结束时向存储库添加一个类似 initialized
的主题,并在工作流开始时检查该主题是否存在。然而,这感觉像是一种黑客攻击,因为我滥用主题来做一些他们可能不打算做的事情。
所以我的问题仍然存在:是否有一种只运行工作流程一次的好方法?
借助
这是执行此操作的工作流程末尾的步骤:
- name: Disable this workflow
shell: bash
run: |
gh workflow disable -R $GITHUB_REPOSITORY "${{ github.workflow }}"
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}