【问题标题】:GitHub Action build matrix: How does the $ work?GitHub Action 构建矩阵:$ 是如何工作的?
【发布时间】:2019-12-24 06:24:08
【问题描述】:

来自documentation

runs-on: $
strategy:
  matrix:
    node: [6, 8, 10]
    os: [ubuntu-16.04, ubuntu-18.04]
steps:
- uses: actions/setup-node@v1
  with:
    version: $

这个 sn-p 表示“setup-node”操作在六种不同的配置中运行(两个不同的操作系统版本上的三个不同的节点版本)。

但是,我不明白 $ 实际是如何工作的。 runs-on 如何获取os 数组中填充的值? version键是如何得到node数组填充的值的?

自定义操作如何与构建矩阵选项一起使用?

【问题讨论】:

    标签: github-actions


    【解决方案1】:

    $ 运算符尚未记录,但在示例中您可以看到它的用法。如果您熟悉它,它似乎类似于MongoDB's $ operator。在 MongoDB 中,显然在这里,$ 代表“列表中当前元素的值”。例如,文档 sn-p 将创建六个作业,三个在 Ubuntu 16.04 上运行,三个在 Ubuntu 18.04 上运行。

    文档并不完整,您引用的文档 sn-p 中使用$ 运算符的方式将来会改变。 sn-p 应该是:

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        node: [6, 8, 10]
        os: [ubuntu-16.04, ubuntu-18.04]
    steps:
    - uses: actions/setup-node@v1
      with:
        version: ${{ matrix.node }}
    

    虽然 GitHub Actions 解析器很容易确定应该将哪个字符串列表分配给 runs-on 参数(因为 6、8 和 10 不是 runs-on 的有效值),它无法知道setup-nodeversion 输入的有效值是什么。 (顺便说一句,截至 2019 年 8 月 14 日,它已重命名为 node-version,但文档 sn-p 尚未更新)。 action.yml 配置文件中没有列出输入的有效值,只有名称和描述。

    因此,由于此文档 sn-p 不能按原样工作,我猜它会在某个时候更新,说 $ 是当前选定的矩阵变量集,而 ${{ variableName }} (例如,${{ matrix.node }}${{ matrix.os }})是您应该在使用这些变量的作业配置部分中添加的内容。

    至于您问题的第二部分,“自定义操作如何与构建矩阵选项一起使用?”,我认为它看起来像一个正常操作,在action.yml 中记录其输入(请参阅@ 987654322@ 的示例)。然后,当您在工作中调用它时,您会这样做:

    strategy:
      matrix:
        someVariable: [foo, bar]
    steps:
    - uses: my-actions/quux@v1.0
        with:
          someInput: ${{ matrix.someVariable }}
    

    【讨论】:

    • “顺便说一句,它已重命名为节点版本” - 我也想过这个,但我的另一个猜测是矩阵中的变量与 with 块中的键连接,因此导致node-version。我还没有尝试过,有什么发现我会告诉你的。
    • 您的猜测是正确的,只是语法不同。在 GitHub 上的编辑器中有一个示例。我已更新您的答案以使用正确的语法,谢谢!
    • 实际上,现在我看到了您的编辑,看起来 GitHub 文档流程中的某些内容删除了 {{}} 大括号之间的任何内容,只留下了 $。在其他地方我注意到文档中明显缺少一些文本(应该在大括号之间)。如果我记得在哪里,我会提到它。我认为 GitHub 没有针对其文档中的错误的问题跟踪器——至少我从未找到过——或者我会将其作为错误报告给他们。
    猜你喜欢
    • 2022-07-18
    • 2020-12-10
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2021-06-19
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多