如何跳过推送事件的 GitHub Actions 作业?

Nik*_*las 25 git jobs continuous-integration github github-actions

使用 Travis CI,我们可以通过向提交添加后缀来跳过特定提交的构建。这在Travis CI 中有描述。当我只编辑README.md与代码无关的内容并且不需要触发飞行前构建时,我发现此功能很实用。

[skip ci]
Run Code Online (Sandbox Code Playgroud)

如何on: push使用 GitHub 操作跳过作业触发事件?

name: Maven Build
on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Check-out project
      uses: actions/checkout@v1
    - name: Set up JDK 11.0.3
      uses: actions/setup-java@v1
      with:
        java-version: 11.0.3
    - name: Build with Maven
      run: mvn -B package --file pom.xml
Run Code Online (Sandbox Code Playgroud)

答案摘要

非常感谢所有提供各种方法来实现它的回答者。我敢打赌,每个人在问题的起源和 CI 方法方面都需要一些不同的东西。以下是为快速导航列出的答案:

所有的答案都值得点赞!如果你喜欢我的问题,你应该喜欢答案。

sct*_*thi 39

更新:请接受 Helmisek anwser,它指出 Github 现在具有内置功能。

如果您只想跳过一些工作/步骤,我的回答才有意义。


您可以尝试以下操作:

name: Maven Build
on: [push]

jobs:
  build:
    if: "!contains(github.event.commits[0].message, '[skip ci]')"
    runs-on: ubuntu-latest

    steps:
    - name: Check-out project
      uses: actions/checkout@v1
    - name: Set up JDK 11.0.3
      uses: actions/setup-java@v1
      with:
        java-version: 11.0.3
    - name: Build with Maven
      run: mvn -B package --file pom.xml
Run Code Online (Sandbox Code Playgroud)

  • `if: "! contains(toJSON(github.event.commits.*.message), '[skip-ci]')"` (7认同)

oli*_*nes 22

此外,对于要在所有推送中忽略的文件和目录,您可以配置工作流本身:

on:
  push:
    paths-ignore:
    - 'README.md'
Run Code Online (Sandbox Code Playgroud)

  • 这确实解决了我的问题,因为我的问题有点像 XY。 (2认同)

Hel*_*sek 18

截至目前(2021 年 2 月),GitHub 操作默认支持此行为。对于默认情况,不再进行解析等。

看:

GitHub 操作:跳过拉取请求和推送工作流 [skip ci]

GitHub Actions 现在支持通过在提交消息中查找一些常见关键字来跳过 push 和 pull_request 工作流程。

如果有任何在你推提交信息或HEAD提交您的PR包含字符串[skip ci][ci skip][no ci][skip actions],或 [actions skip]工作流程触发推送或pull_request事件将被跳过。

链接:Github Actions 更新日志,2021 年 2 月

  • 我刚刚尝试过,效果很好。例如`chore: build script update [skip ci]`并且它被跳过。 (4认同)