LoginSignup
0
0

More than 1 year has passed since last update.

Azure Developer CLI (azd) をソースコードからビルドする

Posted at

Azure Developer CLI (azd) とは

Azure Developer CLI (azd) は、米国時間の2022年7月12日にオープンソースプロジェクトとしてパブリック プレビューで公開されました。

現在のところ、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 本体へのチャレンジですかね...

0
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
0
0