从 GitHub Actions 中排除涉及分支的组合吗?

oro*_*ome 5 github-actions

我想在某些分支上排除构建矩阵的某些部分。从概念上讲,类似于以下内容,但它不起作用,因为branches它不是矩阵变量。

name: Tests

on:
  pull_request:
  push:
    branches: [hackage, develop]

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:

        os: [ubuntu-latest]
        resolver: [lts-3.22 , lts-17, lts-18, lts, nightly]
        exclude:
          - branches: [hackage]
            resolver: [nightly, lts]
Run Code Online (Sandbox Code Playgroud)

有没有办法以惯用的方式做到这一点。在这里,例如在分支上排除nightlylts解析器hackage

Aze*_*eem 0

您可以使用ifwith来标识要检查要排除的部分的github.ref_name分支和函数。contains()matrix.resolver

例子:

if: github.ref_name == 'hackage' && contains(fromJSON('["nightly", "lts"]'), matrix.resolver)
Run Code Online (Sandbox Code Playgroud)

if可以用于工作即jobs.<job_id>.if或步骤即jobs.<job_id>.steps[*].if