如何在github动作中构建类似于Jenkins中的主动选择参数的动态UI

ix0qys7i  于 2023-05-06  发布在  Jenkins
关注(0)|答案(1)|浏览(151)

我熟悉Jenkins中的Active choice parameters插件来构建动态UI。
在选择一个参数时,第二个参数被动态填充。
我是github actions的新手,但想知道是否有可能实现以下内容。
列出具有以下选项的Dropdown 1多选

Color
Fruit

如果选择“颜色”,则动态Dropdown 2将显示:

Green
Blue
Red

如果选择水果:

Apple
Orange

如果同时选择了“颜色”和“水果”:

Green
Blue
Red
Apple
Orange

请建议。

ugmeyewa

ugmeyewa1#

actions/runner issue 998就是这样一个需要动态输入的例子,但是已经被关闭了。
您可以使用different approaches illustrated here来模拟该功能,但您也可以尝试使用“GitHub Actions: Input types for manual workflows”:

  • 将配置文件添加到存储库
  • 根据您的选择从这些文件中读取值。

配置文件:dynamic_options.json

{
  "Color": ["Green", "Blue", "Red"],
  "Fruit": ["Apple", "Orange"]
}

以及您的工作流脚本:

name: Dynamic Dropdown Workflow

on:
  workflow_dispatch:
    inputs:
      list_1:
        typoe: choice
        description: 'Select options:'
        required: true
        default: 'Color'
        options: 
        - Color
        - Fruit
      list_2:
        description: 'Select dynamic options:'
        required: true
        default: ''

jobs:
  dynamic-dropdown:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install jq
        run: |
          sudo apt-get update
          sudo apt-get install jq

      - name: Retrieve dynamic options
        id: get_dynamic_options
        run: |
          IFS=',' read -ra INPUT_OPTIONS <<< "${{ github.event.inputs.list_1 }}"
          DYNAMIC_OPTIONS=""
          for option in "${INPUT_OPTIONS[@]}"; do
            OPTION_VALUES=$(jq ".$option | join(\",\")" dynamic_options.json --raw-output)
            if [ -n "$DYNAMIC_OPTIONS" ] && [ -n "$OPTION_VALUES" ]; then
              DYNAMIC_OPTIONS+=","
            fi
            DYNAMIC_OPTIONS+="$OPTION_VALUES"
          done
          echo "DYNAMIC_OPTIONS=$DYNAMIC_OPTIONS" >> $GITHUB_ENV

      - name: Use dynamic options
        run: |
          echo "Selected options from List 1: ${{ github.event.inputs.list_1 }}"
          echo "Selected options from List 2: $DYNAMIC_OPTIONS"
          # Continue with your workflow steps using the dynamic options

相关问题