GitHub Action构建矩阵:$如何工作?

时间:2019-08-19 02:26:34

标签: github-actions

来自documentation

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

此代码段表示“ setup-node”操作在六种不同的配置中运行(在两个不同的os版本上有三个不同的节点版本)。

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

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

1 个答案:

答案 0 :(得分:2)

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

文档还不够完善,将来引用的文档片段中使用$运算符的方式将会改变。该代码段应该是:

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对{{1 }}),它不知道runs-on的{​​{1}}输入的有效值是多少。 (自2019年14月14日起,BTW已重命名为version,但文档摘要尚未更新)。 setup-node配置文件中没有任何内容列出输入的有效值,仅列出名称和描述。

因此,由于此文档摘要无法按原样工作,因此我猜测它会在某个时候更新为node-version是所选矩阵变量的当前集合,而{{1 }}(例如action.yml$)应该放在作业配置中使用这些变量的部分中。

对于您问题的第二部分,“自定义操作看起来如何与构建矩阵选项一起工作?”,我认为它看起来像一个普通操作,并在${{ variableName }}中记录了其输入(请参阅https://developers.google.com/ar/reference/java/sceneform/reference/com/google/ar/sceneform/rendering/ViewRenderable,以获取有关该外观的示例)。然后,当您在工作中调用它时,您会这样做:

${{ matrix.node }}