背景
以下の対策として、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 を元に取得しないとあかんかも?
あとがき
ん-む、もう諦めるしかないですかね・・