以前から Pre release 版の Azure Functions Runtime を試そうとしては失敗してたが、ここにヒント(というかそのものずばり)があったので、その構築手順をまとめる。
Pre release 版?
まだ Azure Functions 上にリリースされていないランタイム*1。
なので、ご利用は自己責任で。
構築手順
といっても、zip をダウンロードして展開するだけ。
まじめに書くと、
- Pre release 版の zip ファイルをダウンロードする
- ダウンロードしてきた zip ファイルをを好きなところに展開する
-
func
コマンドにパスを通す - (Linux/Mac のみ)
func
コマンドに実行パーミッションを付与する
とこれだけ。
func
コマンドを切り替える
上の手順で Pre release 版の func
コマンドと Azure Functions Runtime が使えるようになるが、「展開してパスを通す」を素直にやってしまうと、以降も Pre release 版を使うことになるので、いざ正式リリース版を使う時にまたパスから直さないといけなくなる。
それはツライなので、Azure Functions Core Tools のバージョン マネージャー funcvm
で Pre release 版も管理してみることにする。
funcvm
自体は npm i @anthonychu/funcvm -g
でインストールする。
インストールされた funcvm
は、 ~/.funcvm/download
の下で Azure Functions Core Tools (つまり func
コマンド) の各バージョンを管理している。
なので、この ~/.funcvm/download
に適当な名前でディレクトリーを作って、その下に Pre release 版のパッケージを展開したらいいだけ。
~/.funcvm/download/ ├── 3.0.4585 ├── 4.0.4544 ├── 4.x.xxxx-prerelease └── funcvm-core-tools-version.txt
みたいな。
また funcvm
では、
いつもはこのバージョンの
func
だけど、このディレクトリ配下ではこのバージョンのfunc
を使う
みたいなことが、対象のディレクトリに .func-version
ファイルを作ってその中にバージョン番号を書くことでできる。
この機能を使って、Pre release 版を試したいプロジェクトにだけ .func-version
ファイルを作っておき、その中に上で作ったディレクトリ名 ( 上の例なら 4.x.xxxx-prerelease
) を書いておくと、そのディレクトリで実行した func
コマンドは ~/.funcvm/download/4.x.xxxx-prerelease
の下にある func
を使ってくれる。
便利。
最後に funcvm
で管理するためのバージョン番号に関する注意点。
まずディレクトリ名が正規表現 /^\d+\.\d+\.\d+/
にマッチしない場合 funcvm list
に出てこない。
正直 ls ~/.funcvm/downloads
とやれば出てくるディレクトリ一覧と同じなので、funcvm list
で出せないから困るもの、って程でもないが、どうしても funcvm list
で出力させたい場合は 4.9.9999
とかにしておけばいい。
また正規表現にマッチしていたとしても、そのバージョン番号が Azure Functions Core Tools の GitHub Releases に載っていない場合、funcvm use
での .func-version
の作成に失敗する。
これも、バージョン番号が書かれているだけのファイルなので、echo 4.9.9999 > .func-version
で作ったとしてもその後の挙動に特に違いはない。
*1:Azure Functions 上のランタイムは、2022年6月3日現在、v4 系で v4.3.2、v3 系で 3.7.1