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
相关产品推荐
相关产品推荐

