我可以根据提交消息过滤GitHub操作步骤吗?

时间:2019-12-21 19:47:53

标签: github github-actions

我最近在GitHub动作中添加了静态分析步骤。但是,它有些昂贵,因此我试图减少执行此步骤的次数。我已经添加了一个适当的筛选器,以便它只能在一个OS上运行,并且只能在我的“功能”分支上运行。但是,我还要过滤掉提交消息中包括“ WIP”的所有签入。 (从理论上讲,直到不再是“进行中的工作”,才可以执行完整的分析。)

我在文档中进行了搜索,希望找到可以用作github上下文对象一部分的对象,但无济于事。

关于如何实现此目标的任何想法?

如果您想确切了解我在做什么,则Yaml的操作如下。我希望可以对if项目上的Static Analysis语句进行一些更改,以实现我的目标。

name: On Push

on: [push]

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    steps:
    - uses: actions/checkout@v1

    - name: Build
      run: |
        ./configure
        make -j 4

    - name: Run tests
      run: |
        make -j 4 check

    - name: Static Analysis
      if: runner.os == 'macOS' && startsWith(github.ref, 'refs/heads/feature/')
      run: |
        make analyze

2 个答案:

答案 0 :(得分:4)

关于您的问题,您现在(2021 年 2 月):

<块引用>

GitHub Actions: Skip pull request and push workflows

with [skip ci]

<块引用>

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

如果您的推送或 PR 的 HEAD 提交中的任何提交消息包含字符串 [skip ci][ci skip][no ci][skip actions][actions skip]pushpull_request 事件上触发的工作流将被跳过。

这不像自定义提交消息(如您​​的“WIP”)那样灵活,但它仍然可以提供帮助。

答案 1 :(得分:2)

您可以使用github context上的event属性来访问push payload

使用以下内容:

if: "!startsWith(github.event.head_commit.message, 'WIP')"