GitHub Actions:运行 if

3

我正在尝试为GitHub Actions设置自定义操作,目前这是我的代码:

name: 'Install Dependencies'

inputs:
    os:
        description: 'The OS to fetch the dependencies for'
        required: True
    

runs:
    using: "composite"
    steps:
        - run: echo I am a test
          shell: bash
          if: startsWith(os, 'Linux')

我想做的是最终拥有一堆不同的 shell 脚本,这些脚本将根据特定的操作系统来完成任务,因此在我的操作中,我希望根据传递进来的 os 参数选择适当的脚本。
然而,当我像上面那样调用操作时,会出现Unexpected value 'if'的错误。所以我的问题是:如果条件符合,如何只运行执行run命令?

截至2021年8月,不支持 - https://github.com/actions/runner/blob/main/docs/adrs/0549-composite-run-steps.md - Rocklan
2个回答

2
最简单的方法可能就是使用一种命名约定来命名你的脚本,然后使用os的名称来调用它们:
myscript.$(os).sh

1
不,if 仍然无法工作。你演示的例子是用于在工作流中指定工作,但我正在尝试在可以从工作流中调用的 操作 中执行此操作。使用这种命名方案实际上是一个好主意... - Raven
1
嗯,我猜那也是个选择。然而,我想创建这个动作是为了不必将所有不同的情况都放入主要工作流中,而是将其封装到一个单独的动作中...但我想我还是会坚持遵循命名约定。所以,如果您更新您的答案,只建议这一点,那么我将接受它作为正确的答案(不希望有人错误地认为在此处使用“if”方法是有效的) :) - Raven

1

解决方法是使用bash的||,否定所需条件以确保仅在条件为真时执行后续命令(将条件取反为假,然后运行||后面的命令):

- run: ${{ !startsWith(os, 'Linux') }} || echo "I am a test"
  shell: bash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接