将动态Github工作流矩阵与输入值和预定义值相结合



我有一个工作的GitHub工作流,使用矩阵并构建所有定义的产品。

name: Build
on:
push:
tags:
- "*"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
product: [yellow, green, black]
limits: [10,20,50,100]
steps:
- uses: actions/checkout@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...

现在我希望能够手动触发构建过程,并使用输入值只构建我想要的产品。我可以在Github接口上输入值,但看起来使用它们的语法不正确。

Build: .github#L1在为job ' Build '评估'strategy'时出错。.github/工作流构建。yml(第27行,Col: 18行):意外值"黄色",.github/工作流/构建。yml(第28行,Col: 17):出乎意料值"50">

另外,如何将所有预定义产品的先前自动构建与通过一个工作流中的输入手动完成的产品结合起来?

name: Build
on:
push:
tags:
- "*"
workflow_dispatch:
inputs:
product:
description: "Product"
default: "yellow"
limit:
description: "Limit"
default: "50"
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
product: ${{ github.event.inputs.product}}
limits: ${{ github.event.inputs.limit }}
# product: [yellow, green, black]
# limits: [10,20,50,100]
steps:
- uses: actions/checkout@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...

矩阵值必须是列表,例如[yellow, green, black]。您输入的名称product不是一个列表,而是字符串"yellow"。遗憾的是,输入数据类型只能是字符串、选择、布尔值或环境中的一种。

但是,您可以将字符串'["yellow", "green", "black"]'转换为json列表值,并使用fromJSON(value)方法将其指定为矩阵值。fromJSON文档中的第一个示例显示了在一个作业的输出中将json语法列表作为字符串计算,并在下一个作业的矩阵策略中使用它。

该示例显示了如何使用在作业中计算的输出。我已经尝试了一个工作流调度输入,就像你的问题:

on:
workflow_dispatch:
inputs:
products:
description: "List of Products"
default: '["yellow"]'
limits:
description: "List of limits"
default: '[50]'
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
product: ${{ fromJSON(github.event.inputs.products)}}
limits: ${{ fromJSON(github.event.inputs.limits) }}

似乎你在输入名称中打错了(应该是product而不是edition)?

strategy:
matrix:
edition: ${{ github.event.inputs.product }}

相关内容

  • 没有找到相关文章