6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HasuraのGitHub Deployment機能を使ってデプロイ作業(migrate, metadata apply)を自動化する

Last updated at Posted at 2021-10-30

Hasuraとは何?という方はこちらを読んでいただけると幸いです。

Hasura GitHub Deployment(Beta)の概要

Hasuraでは、マイグレーション履歴やパーミッション等の情報をメタデータとして保持しています。
手元のメタデータをサーバーに反映させるには、hasura CLIを使ってmigrate applymetadata applyといったコマンドを流す必要があります。

稼働しているHasuraサーバーに対してメタデータを反映させるには、以下のような運用が考えられます。

  • 手動でHasura CLIを使ってhasuraコマンドを流す
  • <version>.cli-migrations-<version>タグのついたDockerイメージを使用して、コンテナ起動時にmetadata情報が読み込まれるようにして自動化
  • サーバレス関数を使ってHasura CLIを動かすなどして、なんとかしてパイプラインに組み込んで自動化

ただ、いずれの方法もどこかで運用に難があり、ベストプラクティスとはあまり言えません。

ここで、Hasura GraphQL Engineのクラウド版にて、GitHub Deployment機能が追加されました。

GitHub上のリポジトリ・ブランチを指定してHasura Cloud上のプロジェクトと連携させることで、git commitにフックしてディレクトリ内のマイグレーション情報やメタデータ情報を自動的に反映させることができます。

この機能は現在Beta版として公開されており、無料で使用できます。

動作

この機能の使い方は、公式ドキュメントにも記載されています(英語)。

動作環境

 

GitHubアカウントをHasura Cloudに紐づける

Hasura Cloudのプロジェクト設定から、[Git Deploy] → [Linked GitHub Account]
Screenshot 2021-10-30 12.51.12.png

すると、認証を求められるので、GitHubアカウントにHasura Cloudアプリをインストールします。
ここで、リンクするリポジトリの制限ができます。

デプロイ設定

インストールすると、GitHubアカウントとHasura Cloudプロジェクトが紐づけられます。

ここで、

  • 連携するリポジトリ
  • 連携するブランチ
  • Hasuraのメタデータが置かれているディレクトリ
  • Deployment Mode

を設定します。

Deployment Modeでは、Automatic / Manualから選ぶことができます。

  • Automatic: ターゲットとなるブランチのcommitにトリガーして、自動的にデプロイを行う
  • Manual: デプロイは自動的にトリガーされない。手動で[Deploy Now]を押すことで、最新のコミットの状態でデプロイが行われる。

デプロイ

ターゲットとなるブランチ(今回の例ではmaster)に変更をpush/mergeすると、自動的にデプロイパイプライン処理が走ります。
※Deployment Modeを「Manual」にした場合は手動

スクリーンショット 2021-10-30 11.44.07.png

進行状況はHasura Cloud上で確認でき、[メタデータファイルのパース]、[メタデータ・マイグレーションの適用]、[ヘルスチェック]等のステップに分かれていることがわかります。

もし各段階で何らかの不整合が起こった場合、その時点でのステップで処理は中断されます。失敗の詳細はログに吐かれているので、そこから原因解明するになります。
スクリーンショット 2021-10-30 13.45.18.png

おわりに

リポジトリ連携設定をしてしまえば簡単にデプロイパイプラインを構築できるため、GitHubでプロジェクト管理している場合のHasuraのCI/CDとして、これからのスタンダードになっていくかなと感じました。かなり便利な機能なので、筆者が業務で使用しているGitLabとも連携してほしいところです。
そして最後に。こちらはまだBeta版の扱いのため、細かな仕様上の問題やバグがあることが予想されます。見つけた場合はissueやdiscussionで報告していきましょう。

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?