GAS開発をしていてGASのバージョン管理の概念の理解に困ったので備忘録的に残します。
versionとは
ソースコードのセーブポイントを作成/管理する機能です。日本語では「版」と訳されています。
ファイル > 版を管理...
でversionの一覧を確認できます。
適当にgsファイルを編集した後にsave new version
でversionを作成しましょう。
説明文(description)にはバージョンを判別するための情報を入れておきます。
そうすると以下のように新しいversionが作成されるのが確認できるかと思います。(ここでは説明のため2つのversionを作成しました)
gitで言えばcommitのような機能ですね。
versionにはHEAD
と名前がつけられた特別なversionがあり、これはGASのエディタ上で確認できる最新のソースコードをさしています。
下の写真のようにトリガーを作成する際に、デプロイを選択する箇所でHead
と出ているのはGASエディタ上の最新のソースコードを実行する
という設定になるわけです。
ただ、実際に運用されているシステムにおいては、ソースコードは変更したいが実行されるソースコードのversionは固定したい
ことの方が多いですよね。実行するデプロイがHead
を参照しているとこれができません。
これを解決するためにdeploymentを使用します。
deploymentとは
GASエディタのマニフェストから配置
で確認できるものがdeploymentの一覧になります。
デフォルトでは写真にあるようにHEADを参照しているdeploymentが一つ存在しています。
deploymentはstaging
やproduction
などの環境
に近い概念で、デフォルトで作成されるLatest Version
という環境は最新のソースコード(HEAD)を参照しています。
デフォルトのdeploymenは編集ができないのでcreate
から新しいdeploymentを作成しましょう。
ここでversionを指定することができますね。このversion1
を指定してsave
しましょう。
これでversionが固定されたdeploymentが作成できましたね。
早速、トリガーに設定してみましょう。
これはなぜだかわからないのですが、トリガー作成の際にリストに出てくるのはdeploymentの名前
ではなく deploymentが参照しているversion
です。ここでは新しく作成したバージョン1
を参照しているdeploymentを指定してトリガーを作成します。
トリガーの一覧に作成したトリガーが表示されていますか?
作成したトリガーの導入
(おそらくdeploymentの訳)が指定したdeploymentの参照しているversionをさしています。
このトリガーではバージョン1を参照しているdeploymentを実行するようになります。
これでHEADがどんな状態であろうが、このトリガーはバージョン1を実行してくれます。
バージョンを変更したいときは
ここまでくれば、バージョン変更は簡単です。インシデントのが起きて元のバージョンに戻すとき、新機能をリリースするときもdeploymentが参照するversionを変更するだけ
です。
再び、GASのエディタで公開 > マニフェストから配置
でdeploymentを編集しましょう。ここではversionを2に指定しています。
保存が終了したら、トリガーの設定を確認しましょう。
トリガーの導入
がバージョン2
になってますよね?これで次回以降トリガーが実行される際はバージョン2で実行されます。
画面ポチポチするのは面倒くさい
そんなことを考えている人はclaspを使いましょう。
導入の方法などは他の記事にお任せしますが、この記事で紹介した作業がコマンドで実行できるようになります。
// 手元のソースコードをHEADに適応する
$ clasp push
// HEADで新しいversionを作成する
$ clasp version
// deploymentsの一覧を取得
$ clasp deployments
// versionの一覧を取得
clasp versions
// deploymentが参照するversionを変更する
$ clasp deploy -i {deploymentId} -V {versionNo}