[Looker]Deployment Managerを使用し開発環境から任意のコミットを本番環境へデプロイする方法を試してみた #looker

2021.05.27

さがらです。

以前、Lookerで開発環境と本番環境で2つインスタンスを持っている方向けに、こんなエントリを書いていました。 Webhookを使って、開発環境と本番環境のインスタンス、どちらに対しても同じ内容のコードをデプロイする、という内容ですね。

…が、お気づきの方もいたかもしれませんが、こちらのブログの方法では開発環境と本番環境に同時に記述したコードがデプロイされてしまうため、開発環境のProductionモードでテストする間がないという問題があります。

そこで本エントリでは、開発環境のインスタンスのProductionモードで検証を行った後、問題がなかったコミットだけを本番環境のインスタンスへデプロイしたい時に対応できる方法を検討しましたので、まとめてみたいと思います。

前提条件

今回の検証ではインスタンスを2つ用意できないので、以下の構成で擬似的に検証していきます。

  • 開発環境
    • プロジェクト名:sagara_development
    • 補足事項:ある程度開発が進んでいる状態のプロジェクトであり、本番環境のインスタンスに初めてデプロイしたい状況である、とする。
  • 本番環境
    • プロジェクト名:sagara_production
    • 補足事項:少し設定が必要なので、プロジェクトの作り方から次章「1.初めての本番環境へのデプロイ」にて説明する。
  • 使用するリモートリポジトリ
    • リポジトリ名:looker_advanced_deploy_test
    • Githubで作成

また、今回ご紹介する方法は、「1.初めての本番環境へのデプロイ」「2.2回目以降の本番環境へのデプロイ」「3.以前のバージョンをデプロイ」で手順が若干異なりますので、それぞれ章立てを分けて説明したいと思います。

1.初めての本番環境へのデプロイ

ということで早速、初めて本番環境のインスタンスへデプロイする際の手順を説明していきます。

概要としては、「開発環境のインスタンスで動作検証まで完了したMasterブランチの内容を別ブランチに切り分けたものを、本番環境のインスタンスでのProductionモード用のブランチに設定する」ということを行っていきます。

1-1.開発環境でreleaseブランチを作る

1-1.手順

開発環境のプロジェクトで「release」という名称で新しいブランチを作っていきます。

まず、Git Actionsから「New Branch」を押します。

すると下図のようなポップアップが表示されるため、以下の様に入力します。入力後、右下のCreateを押しましょう。

  • Branch Name:release
  • Create From:master

ちなみに、個人ブランチでコミットしていない内容があると、下図のように怒られてブランチを切ることが出来ないのでご注意ください。

問題なくブランチを作ることが出来たら、続いてIDEの画面右上「Push Branch to Remote」を押します。これで、開発環境のMasterブランチの内容を元にしたreleaseブランチがリモートリポジトリに作られます。

1-2.本番環境でのプロジェクト作成

続いて、新しく本番環境でプロジェクトを作成します。

ポイントは、Blank Projectを選択することです。

次に、リモートリポジトリの設定を行います。

こちらは、開発環境ですでに使用しているリモートリポジトリと同じものを指定します。

続いて、Git Production Branch Nameを先程1-1で作成したブランチである「release」に変更します。これは、対象のリモートリポジトリに「release」という名称のブランチがないとエラーになりますのでご注意ください。(このため、1-1で先にreleaseブランチを作成しました。)

加えて、任意のコミットをデプロイできるように、Enable Advanced Deploy Modeにチェックを入れます。

この2つの設定後は、「Save Project Configuration」を押すのをお忘れなく…

すると、IDE左側のアイコンの末尾にDeployのアイコンが追加され、Project Configuration末尾のGit Summary内ではDefault Production Branchが「release」と書かれているかと思います。こうなればOKです!

1-3.本番環境への初回デプロイ

ここまで設定が出来たら、いよいよ初めてのデプロイです!

IDE左側のDeployアイコンを押すとDeployment Managerが表示されます。この機能はEnable Advanced Deploy Modeにチェックを入れることで使用することができ、これまでのデプロイ履歴の確認や、任意のコミットをデプロイする、ということが可能です。

より詳しくは公式Docもご確認ください。

では早速Deployment Managerを使って、本番環境への初めてのデプロイをしていきましょう!まずは「Select Commit」を押します。

すると、releaseブランチにおけるコミット履歴が表示されるかと思います。本番環境のProductionモードにデプロイしたいコミットの右の「・・・」をクリックし、「Deploy to Environment」を押しましょう。

(この履歴はコミットが新しい順番に並んでいるので、基本的には一番上に書かれているコミットをデプロイすればOKだと思います。)

すると、タグの設定と、このデプロイに関する説明を書く画面に移ります。こちらは任意ですが、基本的には何かしらの運用ルールを定めてタグと説明を書くことをおすすめします。

記入が終わったら、右下の「Deploy to Environment」を押せば、本番環境のProductionモードへの初デプロイは完了です!

デプロイ後は、Deployment Managerで下図のように表示されるかと思います。先程記述したタグと説明も反映されていますね。

2.2回目以降の本番環境へのデプロイ

続いて、2回目以降のデプロイ作業をどう行うのか、説明していきます。

前準備

まず、次のデプロイを行う前に開発環境でLookML開発を何かしら行っているかと思います。

通常通り、開発環境のインスタンスで以下のプロセスでLookMLの開発を行った上で、次章2-1のプロセスに進んで本番環境のインスタンスへデプロイしてください。

  • LookML開発
  • 開発環境のProductionモードへデプロイ
  • 動作テスト(Productionモードでの既存のコンテンツへの影響有無など)

今回はadd_version2.mdというMarkdownファイルを追加して、開発環境のProductionモードへデプロイした状態を前提として、説明を進めていきます。

2-1.releaseブランチへの反映とコミット&プッシュ

前工程1-2での説明の通り、本番環境のProductionモードは「releaseブランチ」を参照しています。

この「releaseブランチ」に対して、開発環境のProductionモードが参照している「masterブランチ」の内容を反映し、リモートリポジトリへコミット&プッシュしていきましょう。

まず、開発環境のブランチを「releaseブランチ」に切り替えます。Git ActionsのCurrent Branch欄から、「release」を選択すればOKです。

すると、本番環境のProductionモードとして使用されているreleaseブランチのファイル群が表示されます。当たり前ですが、追加したadd_version2.mdはないですよね。

次に、開発環境のProductionモード(masterブランチ)の内容をreleaseブランチに反映させるため、IDEの画面右上「Pull from Production」を押します。

すると、releaseブランチの内容が変わり、add_version2.mdが追加されましたね!

releaseブランチの内容が変わっていることが確認できたら、Git Actions内にあるPush Changes to Remoteを押して、リモートリポジトリのreleaseブランチへ反映させましょう。

(この時、IDEの画面右上に「Commit Changes & Push」が出ていましたら、そちらでもOKです。)

これでリモートリポジトリ上のreleaseブランチの内容に、開発環境のProductionモードの内容を反映できました!

2-2.本番環境でのデプロイ

続いて、本番環境での作業に移ります。

本番環境のプロジェクトを表示して、Deployment Managerを開いてください。

すると、下図赤枠のように「現在のProductionモードに反映されているコミットは、最新のコミットではないよ!」という注意書きと併せて、表示されるかと思います。

この注意書きの通り、最新のコミット内容を反映させるため、右上のDeploy Latestを押します。

すると、初回デプロイ時と同様に、タグの設定と、このデプロイに関する説明を書く画面に移ります。

こちらの記入が終わったら、右下の「Deploy to Environment」を押せば、本番環境のProductionモードへのデプロイ完了です!

3.以前のバージョンをデプロイ

最後に、以前のバージョンを本番環境のProductionモードへデプロイする方法を説明します。

何かしら現在のバージョンで本番環境において問題が発生した時に、以前のバージョンに戻したいことがあるかと思います。そんな時に使用してください。

といっても、やり方はとても簡単で、本番環境のプロジェクトでDeployment Managerを開くとこれまでのデプロイ履歴が表示されているため、対象のデプロイの右端の「・・・」を押して、「Deploy to Production」を押すだけでOKです!

すると、Deployment Managerでの表記が下図のように「v1.0.0の内容がCurrent Versionだよ」という内容に変わりました!これで以前のバージョンに戻せましたね。

最後に

Advanced Deploy Modeにチェックを入れると使用できるDeployment Managerと、releaseブランチを切って本番環境のProductionモードのブランチに設定するという方法を合わせ、任意のコミットを本番環境へ反映する方法をご紹介しました。

この方法ならば、開発環境で開発・テスト➟上手く行った内容だけを本番環境へ反映、という本来あるべきプロセスを踏んでLookML開発に取り組むことが可能です。

Lookerのインスタンスを2つ持つ方にとって、少しでも参考になれば幸いです!