我有一个简单的 hello world 风格的二头肌代码,用于创建应用程序(现在才学习 devops,所以,对此非常陌生)。完整代码可在此处获得。
#Download the bicep templates from previous job
- name: Download artifact from build job
uses: actions/download-artifact@v4
with:
name: bicep-template
path: bicep-template
#Login in your azure subscription using a service principal (credentials stored as GitHub Secret in repo)
- name: Azure Login
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Deploy Azure WebApp using Bicep file
- name: deploy
uses: azure/arm-deploy@v2
with:
subscriptionId: ${{ env.SUBSCRIPTION-ID }}
resourceGroupName: ${{ env.RESOURCE-GROUP }}
template: bicep-template/webapp.bicep
parameters: 'webAppName=${{ env.WEBAPP-NAME }} location=${{ env.LOCATION }}'
failOnStdErr: false
有没有办法添加某种 if else,这样我就可以停止尝试配置 Web 应用程序,而只需显示一条消息,表明应用程序已存在并进入部署阶段?
注意:到目前为止,它似乎没有造成任何问题。当我在 github actions 上重新运行作业时,它自然会跳过应用程序配置。我只是想传达一条消息,应用程序已经在那里了。
@杰伊
我没有完全看到您想要通过的条件检查的必要性,因为在每个管道运行上运行脚本仍然是幂等的,确保在没有更改的情况下结果保持不变。
https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview?tabs=bicep
但是,如果您需要添加条件来跳过部署,如果资源存在,您可以使用 Az cli 命令来验证其存在,并根据此检查分配 true 或 false,然后您可以将其用作实际部署工作。
- name: Check if App Service exists
id: check_app
run: |
if az webapp list --resource-group ${{ env.RESOURCE-GROUP }} --query "[?name=='${{ env.WEBAPP-NAME }}']" | grep -q ${{ env.WEBAPP-NAME }}; then
echo "exists=true" >> $GITHUB_ENV
echo "WebApp Exists"
else
echo "exists=false" >> $GITHUB_ENV
echo "WebApp doesnt Exists"
fi
- name: Deploy Azure WebApp using Bicep file
if: env.exists == 'false'
uses: azure/arm-deploy@v2
with:
subscriptionId: ${{ env.SUBSCRIPTION-ID }}
resourceGroupName: ${{ env.RESOURCE-GROUP }}
template: bicep-template/webapp.bicep
parameters: 'webAppName=${{ env.WEBAPP-NAME }} location=${{ env.LOCATION }}'
failOnStdErr: false