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

如何在调用可复用工作流前用Bash设置GitHub Action环境变量?

解决方案

核心问题分析

你遇到两个关键限制:

  • GitHub Actions 明确要求可复用工作流必须在 jobs.<job-id> 顶层通过 uses 引用,不能嵌套在 steps 步骤内,这是报错的直接原因。
  • 工作流初始化阶段就会解析 uses 中的分支变量,此时 GITHUB_ENV 还未生成,所以无法用环境变量传递分支名,必须通过Job 输出传递值。

修正后的工作流配置

name: "Deploy The Kraken"

on:
  push:
    branches:
      - dev
  pull_request:
    branches:
      - dev
  workflow_dispatch:

jobs:
  # 第一步:读取config.yml中的分支名,作为Job输出
  get-branch:
    runs-on: ubuntu-latest
    outputs:
      feature_branch: ${{ steps.extract_branch.outputs.branch }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Extract branch from config.yml
        id: extract_branch
        run: |
          BRANCH=$(awk -F: '/^branch:/ { gsub(/ /, "", $2); print $2 }' config.yml)
          echo "branch=$BRANCH" >> $GITHUB_OUTPUT

      # 可选:验证提取的分支名
      - name: Test extracted branch
        run: echo ${{ steps.extract_branch.outputs.branch }}

  # 第二步:依赖前置Job,调用可复用工作流
  call-build:
    needs: get-branch
    uses: ######/#####/.github/workflows/kraken.yml@${{ needs.get-branch.outputs.feature_branch }}
    with:
      environment: #####
      workspace: #####
      contract: #####
      production-ref: #####

关键说明

  • get-branch Job:先拉取代码(必须执行checkout才能读取仓库内的config.yml),用awk提取并清理分支名后,通过$GITHUB_OUTPUT输出值(GitHub Actions 2.1+ 版本推荐用此方式替代旧的set-output命令)。
  • call-build Job:通过needs: get-branch声明依赖,确保前置Job完成后再执行,然后在顶层uses中直接引用前置Job的输出作为复用工作流的分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:20:36