GitHub Actions 进阶:如何通过用户输入自定义工作流参数

如何在 GitHub Actions 中手动设置和修改运行参数

文章目录

在持续集成和持续交付(CI/CD)工作流中,GitHub Actions 是一个非常强大且灵活的工具。它让开发者能够自动化构建、测试和部署流程。然而,在某些情况下,我们希望能够在每次手动触发工作流时动态地设置一些参数,而不是在每次运行时都修改硬编码的值。本文,我们将介绍如何通过 workflow_dispatch 事件来实现这一功能,从而使得每次执行时可以手动修改命令行参数。

背景

通常,GitHub Actions 会通过事件触发(例如推送代码、PR 合并等)来执行工作流。在工作流配置文件中,我们可以为每个步骤指定静态的参数。然而,有时候我们希望在手动运行工作流时提供灵活的参数设置。GitHub 提供了 workflow_dispatch 事件,可以让我们在手动触发工作流时,指定自定义的输入参数。

GitHub Actions 实现手动设置运行参数

为了在每次运行 GitHub Actions 时灵活地设置参数,我们可以通过 workflow_dispatch 来定义可自定义的输入(inputs),并在工作流的执行过程中引用这些输入。

以下是实现手动设置命令参数的步骤:

1. 修改 GitHub Actions 配置文件

在你的工作流配置文件中(通常是 .github/workflows 目录下的 YAML 文件),使用 workflow_dispatch 事件来允许手动触发工作流,并在其中定义自定义的输入参数。

name: Custom Parameters Workflow

on:
  workflow_dispatch:
    inputs:
      parameter1:
        description: "输入参数1"
        required: true
        default: "默认值1"
      parameter2:
        description: "输入参数2"
        required: true
        default: "默认值2"
      parameter3:
        description: "输入参数3"
        required: true
        default: "默认值3"

jobs:
  runJob:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Run with custom parameters
        run: |
          echo "Running with parameter1: ${{ github.event.inputs.parameter1 }}"
          echo "Running with parameter2: ${{ github.event.inputs.parameter2 }}"
          echo "Running with parameter3: ${{ github.event.inputs.parameter3 }}"          

2. 解释配置文件

  • workflow_dispatch 事件:此事件用于手动触发工作流。当你想手动运行工作流时,GitHub 会为你提供一个输入界面,可以让你在运行前自定义参数。
  • inputs 部分:在 workflow_dispatch 中定义的 inputs 将作为用户输入的参数。每个参数都有一个 description(描述)、required(是否必填)和 default(默认值)。如果没有手动提供值,工作流会使用默认值。
  • ${{ github.event.inputs.<input_name> }}:在工作流步骤中,我们通过 ${{ github.event.inputs.<input_name> }} 引用用户输入的参数。这些输入值会替换为用户提供的实际值。

3. 手动触发并提供输入

Github Actions 页面

  • 在 GitHub 仓库的 Actions 页面,选择你配置的工作流。
  • 点击 Run workflow 按钮后,GitHub 会弹出一个输入框,显示你在 inputs 中定义的所有参数。
  • 输入你想要的参数值,或者保持默认值,然后点击 Run workflow 启动工作流。

⚠️ 有一点需要注意,如果你输出的参数中存在"需要使用\"进行转义,否则可能出现参数获取异常或者无法获取你填入的参数等问题。或者,如果你的参数中存在",可以将 YAML 中的"改为'。如果你还有更多优雅的方式,可以在评论区交流。

4. 运行工作流并查看结果

在工作流运行过程中,你会看到 GitHub Actions 根据你提供的参数执行相应的任务。例如,在 run 步骤中,我们打印了所有的参数值:

Running with parameter1: <用户输入的值>
Running with parameter2: <用户输入的值>
Running with parameter3: <用户输入的值>

通过这种方式,每次手动触发工作流时,你都可以根据需要调整参数,而无需修改工作流文件本身。

进一步的定制

除了基本的输入参数,你还可以根据需要添加更多复杂的逻辑,比如:

  • 条件参数:根据某些输入值决定是否执行某些步骤。
  • 参数验证:通过在脚本中添加逻辑验证输入的参数是否合法。
  • 动态输出:根据用户输入的参数动态生成输出,供后续步骤使用。

例如,如果用户没有提供某些必须的参数,你可以使用 GitHub Actions 的条件逻辑(如 if 语句)来跳过特定步骤,或者根据默认值进行处理。

小结

GitHub Actions 的 workflow_dispatch 事件是一个非常强大的功能,能够让你在每次手动触发工作流时,灵活地设置输入参数。通过结合 inputs${{ github.event.inputs.<input_name> }},你可以在每次执行时动态地调整任务参数,而无需修改工作流文件本身。这样可以大大提升工作流的灵活性和可配置性,尤其适用于那些需要用户手动干预的任务。


也可以看看