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
相关产品推荐
相关产品推荐

