如何在GitHub Action作业中创建下拉菜单

3
我的工作需要从用户那里接收2个输入参数。这些参数的有效值由一个独立的脚本定义。这些值可能会更改(无法硬编码),因此我希望在运行作业时动态填充列表。选择器应根据脚本的结果进行更新,允许用户进行选择,然后才应使用这些值作为作业的输入来运行实际作业。
问题是如何提供这样的下拉列表。

我了解您可以使用工作流程来触发workflow_dispatch事件(手动),并要求2个必填输入。然后您将有2个作业。第一个作业运行脚本,检查工作流程输入值,第二个作业仅在第一个作业成功后运行,执行您希望进行的操作。 - GuiFalourd
1个回答

3
自2021年11月起,input类型实际上可以是一个choice列表。

GitHub Actions:手动工作流的输入类型

您现在可以为手动触发的工作流指定input类型,以便为工作流的用户提供更好的体验。
除了默认的string类型外,我们现在还支持choicebooleanenvironment

name: Mixed inputs

on:
  workflow_dispatch:
    inputs:
      name:
        type: choice
        description: Who to greet
        options: 
        - monalisa
        - cschleiden
      message:
        required: true
      use-emoji:
        type: boolean
        description: Include  emojis
      environment:
        type: environment

jobs:
  greet:
    runs-on: ubuntu-latest

    steps:
    - name: Send greeting
      run: echo "${{ github.event.inputs.message }} ${{ fromJSON('["", ""]')[github.event.inputs.use-emoji == 'true'] }} ${{ github.event.inputs.name }}"

那将提供一个下拉菜单。
问题仍然存在:你能否将选择列表作为变量传递给你的输入字段`input` `choice`?
如果可以通过另一个任务(计算你的列表)填充inputs context,并调用你的选择任务,通过jobs.<job_id>.with / jobs.<job_id>.with.<input_id>传递该列表。
让我们假设我有一个带有 'workflow_dispatch' 输入的 'deploy' 工作。我将添加一个新的 'preparation' 工作,它将生成一个相关的选择列表。但是我如何能够在 'preparation' 工作之后手动调用 'deploy' 工作呢?
由于选项是静态定义的,使用 on.workflow_dispatch.inputs, type choice,目前还不支持这样做。
这个讨论中已经提出了请求:

与现有的功能请求相比,要求为手动工作流触发器的选择选项提供筛选后的标签(或分支),理想情况下 GitHub Actions 将支持运行一段代码来填充手动触发器的一个或多个选项,可能通过预触发操作来实现。

预触发操作的一个用例可以是填充(筛选后的)标签和/或分支列表。


谢谢!关于“如果您能够通过另一个作业(计算您的列表)填充输入上下文,并调用您的选择作业,通过jobs.<job_id>.with / jobs.<job_id>.with.<input_id>传递列表”,我怀疑在这种情况下我将无法手动选择所需的值。例如,我想建立一个我的分支列表,并使用此列表手动选择要部署的分支。 - Vitaly Karasik DevOps
1
@VitalyKarasikDevOps 或许你需要一个工作来计算选项列表,然后将其作为输入传递给另一个工作,以呈现下拉菜单。 - VonC
我不确定我理解了。 假设我有一个带有“workflow_dispatch”输入的“deploy”工作。我将添加一个新的“preparation”工作,它将生成一个相关的选择列表。 但是在“preparation”工作之后,我如何能够手动调用“deploy”工作呢? - Vitaly Karasik DevOps
1
@VitalyKarasikDevOps 我已经编辑了答案以回应你的最后一条评论。 - VonC
谢谢!我已经为那个功能请求投了票。 - Vitaly Karasik DevOps
@VitalyKarasikDevOps 我也是!我会密切关注这个。 - VonC

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