【发布时间】:2021-04-09 02:43:22
【问题描述】:
(GH newb 试图通过一些配置来cargo cult 我的方式...)
我正在使用 GitHub 操作 YAML 文件 here 来测试 R 包。默认情况下,此工作流程在四个不同的平台上进行测试,但这对于我的日常需求来说太过分了。 (This action 进行了更有限的测试,但我认为?它也错过了我想要从更完整的工作流程中得到的一些东西......)
我希望在所有四个平台上完成测试只有在提交消息包含字符串“full check”时,否则只测试一个平台。我知道如果我包含条件,我原则上可以实现这样的目标:
if: "contains(github.event.head_commit.message, '[full ci]')"
但我不确定将其包含在工作流程中的确切语法(而且我害怕花费大量时间进行反复试验)
定义当前平台集的工作流程块如下所示,其中三个平台已被注释掉:
strategy:
fail-fast: false
matrix:
config:
- {os: ubuntu-20.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"}
## - {os: ubuntu-20.04, r: 'devel', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"}
## - {os: windows-latest, r: 'release'}
## - {os: macOS-latest, r: 'release'}
我假设仅将if: 子句粘贴在第一行下方是行不通的(因为它会破坏列表)。我想这样的事情可能有用吗?
matrix:
config:
if: "! contains(github.event.head_commit.message, '[full ci]')"]
config:
- {os: ubuntu-20.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"}
if: "contains(...)"
config:
[list with all four configs]
(这个语法有if/else 构造吗?)
我正在寻找帮助我实现狭窄目标的答案,并希望更好地理解 YAML 语法(我已尝试阅读 FM ...)
【问题讨论】:
-
这非常相似:stackoverflow.com/questions/65384420/…。它回答了你的问题吗?
-
看起来可能是这样,谢谢。我将不得不阅读和消化它(比我希望的更复杂/更难适应,但它看起来是正确的方向......)我很乐意接受一个让this answer适应我的情况的答案(因为它会让我从几十分钟到几小时来充分理解答案以适应它......)
标签: r github-actions