LoginSignup
5
2

More than 3 years have passed since last update.

【GAS】 バージョン管理の方法(version, deploymentとは何か)

Last updated at Posted at 2020-01-30

GAS開発をしていてGASのバージョン管理の概念の理解に困ったので備忘録的に残します。

versionとは

ソースコードのセーブポイントを作成/管理する機能です。日本語では「版」と訳されています。
スクリーンショット 2020-01-30 22.06.33.png

ファイル > 版を管理... でversionの一覧を確認できます。
適当にgsファイルを編集した後にsave new version でversionを作成しましょう。
説明文(description)にはバージョンを判別するための情報を入れておきます。
そうすると以下のように新しいversionが作成されるのが確認できるかと思います。(ここでは説明のため2つのversionを作成しました)
gitで言えばcommitのような機能ですね。

スクリーンショット 2020-01-30 22.16.12.png

versionにはHEADと名前がつけられた特別なversionがあり、これはGASのエディタ上で確認できる最新のソースコードをさしています。

下の写真のようにトリガーを作成する際に、デプロイを選択する箇所でHeadと出ているのはGASエディタ上の最新のソースコードを実行するという設定になるわけです。

スクリーンショット 2020-01-30 22.31.16.png

ただ、実際に運用されているシステムにおいては、ソースコードは変更したいが実行されるソースコードのversionは固定したいことの方が多いですよね。実行するデプロイがHeadを参照しているとこれができません。
これを解決するためにdeploymentを使用します。

deploymentとは

スクリーンショット 2020-01-30 21.52.18.png

GASエディタのマニフェストから配置 で確認できるものがdeploymentの一覧になります。
デフォルトでは写真にあるようにHEADを参照しているdeploymentが一つ存在しています。
deploymentはstagingproductionなどの環境に近い概念で、デフォルトで作成されるLatest Versionという環境は最新のソースコード(HEAD)を参照しています。

デフォルトのdeploymenは編集ができないのでcreateから新しいdeploymentを作成しましょう。
ここでversionを指定することができますね。このversion1を指定してsaveしましょう。

スクリーンショット 2020-01-30 23.03.05.png

これでversionが固定されたdeploymentが作成できましたね。
早速、トリガーに設定してみましょう。

スクリーンショット 2020-01-30 23.03.41.png

これはなぜだかわからないのですが、トリガー作成の際にリストに出てくるのはdeploymentの名前 ではなく deploymentが参照しているversionです。ここでは新しく作成したバージョン1を参照しているdeploymentを指定してトリガーを作成します。

スクリーンショット 2020-01-30 23.01.36.png

トリガーの一覧に作成したトリガーが表示されていますか?
作成したトリガーの導入(おそらくdeploymentの訳)が指定したdeploymentの参照しているversionをさしています。
このトリガーではバージョン1を参照しているdeploymentを実行するようになります。
これでHEADがどんな状態であろうが、このトリガーはバージョン1を実行してくれます。

バージョンを変更したいときは

ここまでくれば、バージョン変更は簡単です。インシデントのが起きて元のバージョンに戻すとき、新機能をリリースするときもdeploymentが参照するversionを変更するだけです。
再び、GASのエディタで公開 > マニフェストから配置でdeploymentを編集しましょう。ここではversionを2に指定しています。

スクリーンショット 2020-01-30 23.06.04.png

保存が終了したら、トリガーの設定を確認しましょう。
トリガーの導入バージョン2になってますよね?これで次回以降トリガーが実行される際はバージョン2で実行されます。

スクリーンショット 2020-01-30 23.08.31.png

画面ポチポチするのは面倒くさい

そんなことを考えている人はclaspを使いましょう。
導入の方法などは他の記事にお任せしますが、この記事で紹介した作業がコマンドで実行できるようになります。

// 手元のソースコードをHEADに適応する
$ clasp push

// HEADで新しいversionを作成する
$ clasp version

// deploymentsの一覧を取得
$ clasp deployments

// versionの一覧を取得
clasp versions

// deploymentが参照するversionを変更する
$ clasp deploy -i {deploymentId} -V {versionNo}
5
2
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
5
2