Azure Developer CLI (azd) とは
Azure Developer CLI (azd) は、米国時間の2022年7月12日にオープンソースプロジェクトとしてパブリック プレビューで公開されました。
- Introducing the Azure Developer CLI (azd): A faster way to build apps for the cloud - Azure SDK Blog
現在のところ、Azureのコンピューティング サービス上にAzure Cosmos BDにアクセスするWebアプリ(Python、JavaScript/TypeScript、C#)のテンプレートを作成できて、Azureへのデプロイまでを支援するCLI コマンドとなっており、今後はJavaやAKSのテンプレートも用意される予定です。
azd をソースコードからビルド
azd
コマンドはGoで書かれているので、手動でコンパイルしてみました。
Goのバージョンは1.18以上が必要となっています。
あと git
コマンドも必要になります。
今回、使用しているOSは macOS + zsh のため、お手数ですがWindowsユーザーの方などはls
コマンドはdir
コマンドになど、ご自分の環境に合わせて適宜読み替えをお願い致します。
作業ディレクトリーを作成
どこでも良いです。(私のはGOPATH時代からの名残りです)
% mkdir -p go/src/github.com/Azure
作成した作業ディレクトリーに移動
% cd go/src/github.com/Azure
Azure Developer CLI のソースのクローンを取得
% git clone https://github.com/Azure/azure-dev.git
azure-dev ディレクトリーに移動
% cd azure-dev
取得物を確認
% ls
CONTRIBUTING.md README.md cli generators magefile.go
LICENSE SECURITY.md eng go.mod schemas
NOTICE.txt assets ext go.sum templates
ここで magefile.go
ファイルなるものを発見。中身を見てみると、見慣れないディレクティブながら、mainパッケージっぽい模様。
//go:build mage
// +build mage
package main
...
通常の go build
コマンドでビルドしている&できる感じ。
...
func (a AZD) Build(ctx context.Context) error {
cmdStr, cmd := runIn(
".",
"go",
"build",
"-o",
"./bin/azd",
"./cli/azd",
)
fmt.Println(cmdStr)
return cmd()
}
...
気になって調べたところ、「Mage」というビルドツール用のファイルのようです。
Mageは、MakefileのようなターゲットをGoの関数で書くことができるそうで、私は今回はじめて知り得ました。
カレントディレクトリーを2つ上(go/src/github.com/)に移動
% cd ../..
Mage のクローンを取得
ついでに(?) mage も手動でコンパイルします。
% git clone https://github.com/magefile/mage
mage ディレクトリーに移動
% cd mage
mageをコンパイルしてインストールするブートストラップを実行
% go run bootstrap.go
mage コマンドがインストールされていることを確認
% mage -version
Mage Build Tool v1.13.0-8-g26cdb5c
Build Date: 2022-07-23T14:13:43+09:00
Commit: 26cdb5c
built with: go1.18.4
azure-dev に移動
% cd ../Azure/azure-dev
mage コマンドを実行
magefile.go
ファイルの内容が読み込まれて、実行できるターゲットが提示されます。
% mage
Targets:
azd:build
azd:test
buildターゲットを実行
ここでは、azd
コマンドをビルドする azd:build
を指定して実行します。
% mage azd:build
/usr/local/go/bin/go build -o ./bin/azd ./cli/azd
azd コマンドがビルドされていることを確認
% ./bin/azd version
azd version 0.0.0-dev.0 (commit 0000000000000000000000000000000000000000)
バージョン値は、本家ではCIにて注入されます。
- cli/azd/internal/version.goの11〜12行目
// Version is the version string printed out by the `Version` command.
// It's updated using ldflags in CI.
さいごに
Azure Developer CLI (azd) では、各プログラミング言語やサービスのテンプレートは、これから&追加可能なので、皆さんもチャレンジしてみてください。
Goでの対応は難しいと思うので、しばらくは azd
本体へのチャレンジですかね...