我有一个GitHub操作工作流文件,其中的环境变量并不总是被扩展。
根据注解,环境变量的使用一直正常工作,直到在name: deploy
部分中最后一次使用它,它没有扩展,而是变成了字符串rg-blue-$***GITHUB_REF#refs/heads/***
,而不是在前面的部分中正确扩展的字符串:rg-blue-my-branch-name
。
这将导致Azure ARM错误:Error: Resource Group rg-blue-$***GITHUB_REF#refs/heads/*** could not be found.
为什么除了最后一步之外,变量扩展在任何地方都能正确工作?我如何修复它?
on: [push]
name: Azure ARM
jobs:
build-and-deploy:
runs-on: ubuntu-latest
env:
resourceGroupName: rg-blue-${GITHUB_REF#refs/heads/}
resourceGroupLocation: 'uksouth'
- name: Use the custom ENV variable
run: |
echo "${{ env.resourceGroupName}}"
echo ${{ env.resourceGroupName}}
// these two work perfectly fine and prints "rg-blue-my-branch-name" etc
- uses: actions/checkout@master
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- uses: azure/CLI@v1
with:
inlineScript: |
#!/bin/bash
// works perfectly fine here too
if $(az group exists --name ${{ env.resourceGroupName }}) ; then
echo "Azure resource group ${{ env.resourceGroupName }} already exists, skipping creation..."
else
az group create --name ${{ env.resourceGroupName }} --location ${{ env.resourceGroupLocation }}
echo "Azure resource group ${{ env.resourceGroupName }} created"
fi
# Deploy Bicep file
- name: deploy
uses: azure/arm-deploy@v1
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }} <- this one works fine!
resourceGroupName: "${{ env.resourceGroupName }}" <- Error: Resource Group rg-blue-$***GITHUB_REF#refs/heads/*** could not be found.
template: infrastructure/blue.bicep
parameters: storagePrefix=mystore
failOnStdErr: false
字符串
1条答案
按热度按时间pjngdqdw1#
在YAML中赋值时,不会发生Shell参数扩展。
字符串
resourceGroupName
的值是文字字符串rg-blue-${GITHUB_REF#refs/heads/}
。它 * 似乎 * 工作,因为当你使用型
这被替换为
型
然后 * shell* 执行扩展。您可以使用
型
而是抑制壳参数扩展。
要修复,您可以使用单独的步骤来正确设置环境变量:
型
而不是预先在
env
中设置它。或者,你可以使用
github.ref_name
,这是已经缩短的Git ref:型
这在环境中也可以作为
$GITHUB_REF_NAME
使用。