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

Github Actions中Powershell输出变量传递至后续步骤报错如何解决?

问题根因
  • 步骤ID配置错误:生成sqlConnectionString输出变量的是第一个Secrets to Key Vault步骤,但你没有为该步骤设置id属性,反而将id: sqlConnection错误配置在后续的部署步骤上,导致${{ steps.sqlConnection.outputs.sqlConnectionString }}实际读取的是部署步骤自身的输出,该步骤并没有对应输出值,所以为空触发报错。
  • PowerShell输出语法兼容问题:该问题和PowerShell运行特性有一定关联,在Azure PowerShell Action的运行环境中,echo对应PowerShell内置的Write-Output命令,原有写法套入多余的$()不符合PowerShell变量展开规则,可能导致变量解析异常,影响::set-output指令的识别。
修复方案

修正步骤ID配置,调整输出变量的语法即可,修复后的工作流片段如下:

- name: Secrets to Key Vault
        uses: azure/powershell@v1
        id: getSqlConnection # 为输出变量的步骤添加自定义ID
        env:
          POWERSHELL_TELEMETRY_OPTOUT: 1
        with:
          inlineScript: |
            $sqlConnectionString = (az keyvault secret show --vault-name <keyVaultName> --name <secret-name> --query [value] --output tsv)
            # 修正后的set-output写法,也可以替换为官方最新推荐的GITHUB_OUTPUT写法
            Write-Output "::set-output name=sqlConnectionString::$sqlConnectionString"
            # 新版写法(推荐,避免set-output弃用影响):
            # Add-Content -Path $env:GITHUB_OUTPUT -Value "sqlConnectionString=$sqlConnectionString"
          azPSVersion : '3.1.0'
        
      - name: Deploy Core Module
        uses: azure/sql-action@v1
        with:
          server-name: <sqlServerName>
          # 引用前序步骤ID对应的输出变量
          connection-string: ${{ steps.getSqlConnection.outputs.sqlConnectionString }}
          dacpac-package: './Database.dacpac'

注:GitHub官方已在2022年10月宣布弃用::set-output命令,过渡期到2023年6月结束,建议优先使用写入GITHUB_OUTPUT环境变量的方式生成步骤输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:57:02