Github Actions中Job间Output变量传递为空如何解决?
解决GitHub Actions Job间输出变量为空的问题
问题原因
- 你使用的
::set-output命令已被GitHub Actions弃用,新的输出机制要求将变量写入$GITHUB_OUTPUT环境变量。 - 未在Job级别声明
outputs字段,导致其他Job无法读取该Job的输出。
修复步骤
- 替换旧的输出命令:将
echo "::set-output name=main_branch_sha_short::${MAIN_BRANCH_SHA_SHORT}"改为echo "main_branch_sha_short=${MAIN_BRANCH_SHA_SHORT}" >> $GITHUB_OUTPUT。 - 在
get_main_branch_sha_shortJob中添加outputs配置,关联步骤的输出变量。 - 为获取SHA的步骤添加
id标识,确保Job的输出能正确关联到该步骤的结果。 - 配置
fetch-depth: 0拉取完整仓库历史,避免浅克隆导致git命令无法识别远程分支的问题。
修改后的完整工作流代码
get_main_branch_sha_short: runs-on: ubuntu-latest outputs: main_branch_sha_short: ${{ steps.get_sha.outputs.main_branch_sha_short }} steps: - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Get short SHA of main branch id: get_sha run: | git fetch origin main MAIN_BRANCH_SHA_SHORT=$(git rev-parse --short origin/main) echo "MAIN_BRANCH_SHA_SHORT is: $MAIN_BRANCH_SHA_SHORT" echo "main_branch_sha_short=${MAIN_BRANCH_SHA_SHORT}" >> $GITHUB_OUTPUT test_get_main_branch_sha_short: runs-on: ubuntu-latest needs: - get_main_branch_sha_short steps: - name: test sha variable run: | echo "main_branch_sha_short is: 3.1.0-git-${{ needs.get_main_branch_sha_short.outputs.main_branch_sha_short }}"
内容的提问来源于stack exchange,提问作者Aviral Srivastava
相关产品推荐
相关产品推荐

