タイトルの通りでいつも失敗していた
- いい加減不便すぎるので調査した
- githubやazureの不具合、というよりもactionsの仕様?的なものだった
失敗原因
- commitメッセージがマルチバイト文字を含んでいて、長い文章になっていると失敗する。
対策
- マージ時などのコミットメッセージは短くしておく
調査内容
- 通常時のエラーメッセージ
Error: Failed to deploy web package to App Service.
Error: Deployment Failed, Error: Failed to deploy web package to App Service.
Bad Request (CODE: 400)
こんな内容なので正直よくわからん。
なのでDebug有効にして再度Job実行
すると↓(一部省略済み)
##[debug][POST] https://hogehoge.scm.azurewebsites.net/api/zipdeploy?isAsync=true&deployer=GITHUB_ZIP_DEPLOY&message=(ここがめちゃ長い)
##[debug]Could not parse response body.
##[debug]{}
##[debug]ZIP Deploy response: {"statusCode":400,"statusMessage":"Bad Request","headers":{"content-length":"3944","content-type":"text/html; charset=utf-8","date":"Tue, 25 Jun 2024 05:29:41 GMT","server":"Microsoft-IIS/10.0","cache-control":"private","x-aspnet-version":"4.0.30319","x-powered-by":"ASP.NET"},"body":"<!DOCTYPE html>\r\n<html>\r\n <head>\r\n <title>The length of the query string for this request exceeds the configured maxQueryStringLength value.</title>\r\n <meta name=\"viewport\" content=\"width=device-width\" />\r\n <style>\r\n body {font-family:\"Verdana\";font-weight:normal;fonts.-->"}
Error: Failed to deploy web package to App Service.
Error: Deployment Failed, Error: Failed to deploy web package to App Service.
Bad Request (CODE: 400)
どうやらzipdeploy叩いてるときにめちゃ長いURLになっている様子。
めちゃ長くなっている部分をURLデコードしてみるとコミットメッセージとかが入ってる。
これが原因で失敗しているみたいだ。
azure/webapps-deploy@v2 task
https://learn.microsoft.com/ja-jp/azure/devops/pipelines/tasks/reference/azure-rm-web-app-deployment-v2?view=azure-pipelines
ここから見るに、デプロイ時にmessageをカスタマイズする方法はなかった。
action src
https://github.com/Azure/webapps-deploy/blob/master/src/actionparameters.ts
ここにある。
中をさらに見てみると、commitMessageの指定部分
https://github.com/Azure/webapps-deploy/blob/5c1d76ea769631d040d04d0883468281f78a2375/src/actionparameters.ts#L57
で1000文字までに制限していた。
ただマルチバイトを想定してない?のかこれだと多分不十分なんだろう。
原因がわかったのでコミットメッセージを短くして再度Action動かすと問題なくデプロイできた。