You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions复合操作如何用if语句按入参执行对应步骤

解决方案

你当前的复合操作(composite action)没有给步骤配置执行触发条件,因此只要操作被调用,所有定义在steps下的步骤都会默认执行,和入参是否传值无关。
要实现按需执行对应安装步骤的效果,只需要给每个工具的安装步骤添加if条件判断,仅当对应工具的版本入参存在非空值时才触发步骤执行。

修改后的action.yml配置

name: "Helm, Kubectl or Devspace installation setup"
description: "Install a specific version of Helm, Kubectl or Devspace. Acceptable values are latest or version strings like 1.15.0"
inputs:
  kubectl:
    description: "Version of Kubectl"
    required: false
  helm:
    description: "Version of Helm"
    required: false
  devspace:
    description: "Version of Devspace"
    required: false
runs:
  using: "composite"
  steps:
    # 可选:前置校验,避免三个参数都不传时空跑
    - name: Validate input parameters
      shell: bash
      run: |
        if [ -z "${{ inputs.kubectl }}" ] && [ -z "${{ inputs.helm }}" ] && [ -z "${{ inputs.devspace }}" ]; then
          echo "Error: You must specify at least one tool version to install (kubectl/helm/devspace)"
          exit 1
        fi
    - name: Setting up kubectl
      if: ${{ inputs.kubectl != '' }}
      uses: azure/setup-kubectl@v1
      with:
        version: ${{ inputs.kubectl }}
    - name: Setting up Helm
      if: ${{ inputs.helm != '' }}
      uses: azure/setup-helm@v1
      with:
        version: ${{ inputs.helm }}
    - name: Setting up Devspace
      if: ${{ inputs.devspace != '' }}
      uses: loft-sh/setup-devspace@main
      with:
        version: ${{ inputs.devspace }}

配置说明

  • 每个安装步骤的if条件会判断对应入参是否为空:只有传入非空版本号时,对应步骤才会执行,未传参的步骤会被自动标记为跳过(Skipped)状态,不会实际运行
  • 前置校验步骤为可选配置,作用是当调用方没有传入任何工具版本参数时直接抛出错误终止流程,避免无意义的空执行
  • 你当前的main.yml配置无需修改,仅传kubectl参数时,工作流将只会执行kubectl安装步骤,符合预期

内容的提问来源于stack exchange,提问作者ProjectLuo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 06:57:30