如何在GitHub Actions中实现变量间赋值并设置全局环境变量
GitHub Actions 动态环境变量赋值实现方案
可以实现变量间赋值,你想要的通过已有环境变量拼接路径生成新全局变量的需求,可以通过向$GITHUB_ENV文件写入内容实现。你原有代码主要存在两处问题:
- PowerShell 中定义变量需要加
$前缀,你写的tempcertificatePath=漏了前缀 ${{ }}是 GitHub Actions 的编译时表达式语法,无法读取 run 步骤运行时才定义的 PowerShell 临时变量,直接输出变量值即可
Windows 运行器(PowerShell 环境)正确实现代码
env: Solution_Name: WpfApp3.sln Test_Project_Path: TestProject1\TestProject1.csproj Wap_Project_Directory: WapProjTemplate1 Wap_Project_Path: WapProjTemplate1\WapProjTemplate1.wapproj SigningCertificate: GitHubActionsDemo.pfx jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v4 # 先拉取仓库代码到本地 - name: SetCertPath shell: pwsh run: | $currentDirectory = Get-Location $tempcertificatePath = Join-Path -Path $currentDirectory -ChildPath $env:Wap_Project_Directory -AdditionalChildPath $env:SigningCertificate echo "CertificatePath=$tempcertificatePath" >> $env:GITHUB_ENV # 后续所有步骤都可以直接调用$env:CertificatePath变量 - name: 验证变量有效性 shell: pwsh run: echo $env:CertificatePath
补充说明
- 如果使用 Linux/macOS 运行器,改用 Bash 语法即可:
tempcertificatePath="$(pwd)/${{ env.Wap_Project_Directory }}/${{ env.SigningCertificate }}" echo "CertificatePath=$tempcertificatePath" >> $GITHUB_ENV - 写入
$GITHUB_ENV的变量仅在当前Job的后续步骤生效,跨Job传递需要使用Job outputs功能 - 若不需要跨步骤复用该路径,也可以直接用 GitHub 表达式拼接:
${{ join(env.Wap_Project_Directory, env.SigningCertificate, '/') }},注意路径分隔符要和运行器系统匹配
内容的提问来源于stack exchange,提问作者Coden00b
相关产品推荐
相关产品推荐

