如果 Web 应用程序已存在,则跳过应用程序服务配置

问题描述 投票:0回答:1

我有一个简单的 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 上重新运行作业时,它自然会跳过应用程序配置。我只是想传达一条消息,应用程序已经在那里了。

github-actions azure-resource-manager azure-bicep
1个回答
0
投票

@杰伊

我没有完全看到您想要通过的条件检查的必要性,因为在每个管道运行上运行脚本仍然是幂等的,确保在没有更改的情况下结果保持不变。

enter image description here 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

© www.soinside.com 2019 - 2024. All rights reserved.