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

如何在Composite GitHub Action调用的脚本中访问其输入参数

如何在Composite GitHub Action的Shell脚本中访问输入参数

GitHub Actions的表达式语法(如${{ inputs.name }})仅会在action.yaml文件的特定字段(比如run块、env定义等)中被GitHub解析渲染。直接写在独立Shell脚本里的表达式不会被处理,因为脚本是直接交给Shell执行的,Shell无法识别这种语法。要让脚本访问到Composite Action的输入参数,有两种可行的方式:

方法一:通过环境变量传递参数

在action.yaml的步骤中,将输入参数赋值给环境变量,然后在Shell脚本中读取该环境变量:

修改mydemo/action.yaml:

name: "mydemo"
description: ""
inputs:
  name:
    description: "输入的名称"

runs:
  using: "composite"
  steps:
    - name: 执行echo脚本
      env:
        # 将inputs.name的值赋给环境变量INPUT_NAME
        INPUT_NAME: ${{ inputs.name }}
      run: |
        source ${GITHUB_ACTION_PATH}/echo.sh
      shell: bash

修改mydemo/echo.sh:

# 读取环境变量并输出
echo "Hello, $INPUT_NAME"

方法二:通过命令行参数传递参数

在action.yaml的run块中调用脚本时,直接将输入参数作为命令行参数传入,脚本通过位置变量读取:

修改mydemo/action.yaml:

name: "mydemo"
description: ""
inputs:
  name:
    description: "输入的名称"

runs:
  using: "composite"
  steps:
    - name: 执行echo脚本
      run: |
        # 将inputs.name作为参数传给echo.sh
        ${GITHUB_ACTION_PATH}/echo.sh "${{ inputs.name }}"
      shell: bash

修改mydemo/echo.sh:

# 通过$1读取第一个命令行参数
echo "Hello, $1"

两种方式的适用场景

  • 环境变量传递:适合需要传递多个参数的场景,参数可以通过清晰的变量名访问,不易混淆。
  • 命令行参数传递:适合参数数量较少的场景,写法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:42:24