1
0

背景

以下の対策として、deployment log の最終 message を確認するようにしてみた記録

そんなもんイランやろ、というのが本筋

概要

  • az webapp log deployment を使うことで、デプロイセンターのログが取れる
  • 最終的な message で successful となってれば、成功してそう

ということで、pipelines にて、それを確認しとくかって話。

deployment log
 - task: AzureCLI@2
    displayName: 'Deployment log is Successed?'
    inputs:
      azureSubscription: '{Survice Connection}'
      scriptType: 'bash'
      scriptLocation: 'inlineScript'
      inlineScript: |
        set -e
        # 環境変数取得
        env_vars=$(azd env get-values --output json)
        # Resource Group Name
        rg_group=$(echo $env_vars | jq -r '.AZURE_RESOURCE_GROUP')
        # Extract App Service Endpoint URI
        backend_uri=$(echo $env_vars | jq -r '.BACKEND_URI')
        # Extract App Service Name
        if [[ $backend_uri =~ https://([^\.]+)\.azurewebsites\.net ]]; then
            host_name=${BASH_REMATCH[1]}
        else
            exit 1
        fi

        # Extract the final message
        message=$(az webapp log deployment show --resource-group $rg_group --name $host_name --query "[].{time: log_time, message: message}" | jq -r 'sort_by(.time) | last(.[]).message')
        if echo "$message" | grep -i "successful"; then
            echo "Succeeded!"
        else
            exit 1
        fi
    timeoutInMinutes: 5
    env:
      AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
      AZURE_ENV_NAME: $(AZURE_ENV_NAME)
      AZURE_LOCATION: $(AZURE_LOCATION)

問題点

これだと、deploy 自体は error 扱いのまま。
condition: 指定したり、continueOnError を指定したとしても・・

Partialy Succeed となって、正常成功時とは若干違う結果が通知されてくるのが困る・・

他に、show だと、最終のlog 取れないこともあったので、
実際には、list で最新ログを取得して、deployment_id を元に取得しないとあかんかも?

あとがき

ん-む、もう諦めるしかないですかね・・ :sweat_smile:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0