如何仅在添加指定文件时触发GitHub Actions工作流?
仅在添加指定文件时触发GitHub Actions工作流
仅靠paths配置无法区分文件是新增、修改还是删除,但可以结合工作流内的步骤判断变更类型,实现仅在添加file_name时执行后续操作。
实现步骤
- 先通过
paths过滤,只让涉及file_name的推送触发工作流,避免无意义的运行:
on: push: paths: - 'file_name'
- 在工作流任务中,添加判断逻辑确认文件是否为新增:
- 拉取完整代码历史,才能对比前后提交的文件变化;
- 用
git diff命令识别文件的变更状态,仅当状态为A(新增)时执行后续步骤。
完整工作流示例
on: push: paths: - 'file_name' jobs: run-on-file-add: runs-on: ubuntu-latest steps: - name: 拉取代码(含完整历史) uses: actions/checkout@v4 with: fetch-depth: 0 - name: 检测文件是否为新增 id: check_addition run: | # 对比当前提交与上一提交的文件变更,筛选新增的file_name if git diff --name-status HEAD^ HEAD | grep -q "^A.*file_name"; then echo "is_added=true" >> $GITHUB_OUTPUT else echo "is_added=false" >> $GITHUB_OUTPUT fi - name: 仅在文件新增时执行的操作 if: steps.check_addition.outputs.is_added == 'true' run: | echo "已检测到file_name新增,开始执行任务..." # 在这里添加你的具体操作命令
关键说明
fetch-depth: 0:默认GitHub Actions仅拉取最新提交,设置此参数才能获取完整提交历史,用于对比文件变更。git diff --name-status:输出格式为「变更状态 文件名」,其中A代表新增,M代表修改,D代表删除。- 通过输出变量
is_added控制后续步骤是否执行,实现仅新增时触发的需求。
内容的提问来源于stack exchange,提问作者YeP
相关产品推荐
相关产品推荐

