ごった煮

色々な事を書いてます

VSTSでAzure Functionsをリリースマネジメントしたかった話

VSTSでチェックインしたらデプロイみたいなことはできますけどリリース管理できなくね?ってなったのでメモ書きです。

結論

PowerShellスクリプト書きました。

下のような感じ

$path = $args[0]
$uri = "https://" + $args[1] + ".file.core.windows.net/" + $args[2] + "/site/wwwroot"
$key = $args[3]

&"c:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\AzCopy.exe" /Source:$path /Dest:$uri /DestKey:$key /S /Y

Functionsは、Azure Filesをマウントしてその中身のシンボリックリンクを張る形で配置されるのでAzCopyでAzure Filesに送り付けます。

幸いVSTSの環境には、AzCopyがいるのでそのまま使います。

引数は、

  • args[0] : Functionsのフォルダ
  • args[1] : ストレージアカウント名
  • args[2] : 共有フォルダ名
  • args[3] : ストレージアカウントの接続文字列

って感じです。

スクリプトのAzCopyの指定ですが、ほかのBlobへのデプロイをするやつのソースとかだともっと頭いい感じに書いてたので誰か教えてください

注意

これが使えるのは、Dynamicプランのみです。

Dynamicプランじゃないほうは、フォルダ構造がAzure Filesを使ってないっぽいので別の方法を頑張りましょう。

あと、VSTSのチェックインやGitHub CIをAzureポータルから設定した場合に、デプロイするとFunctionsポータル上からソースコードが編集できなくなるRead Onlyモードに切り替わりますが、

現状この方法だとフラグ立てたりしてないのでそれも切り替わらない点に注意してください。やり方知ってる人は、教えてくれると嬉しいです。

まとめ

とりあえず形だけデプロイできた(形だけ)ので誰かいい感じに改良してください。