GitLab CI から Google Cloud Pub/Sub 経由で自動デプロイ

自分用のちょっとしたWebサービスをさくら VPS環境に構築しています。こんなオレオレサービスでも Git リポジトリの master ブランチに push したら自動的にデプロイできるようにしたい。毎回 SSH して手動で更新はしたくない。 一般的な方法だと、どうしてもデプロイ先のサーバーにリクエストの受け先を用意する必要があります。概ね HTTP 経由で受けないといけないので、そこから派生するアクションの内容から鑑みても、セキュリティ的にグローバル空間に置かれたサーバでやりたくないものです。 そこで自前で Pub/Sub サービスを経由してやってみることにしました。Pub/Sub であれば懸念事項のアクセスを受け入れることなく、Subscriber も Pull 型で設置できます。 Google Cloud Console まず Google Cloud Console - 認証情報 でサービスアカウントを作成しておきます。次に Google Cloud Console - Pub/Sub でトピックを作成します。そしてそのトピック対して用意したサービスアカウントにPub/Sub サブスクライバ―とPub/Sub パブリッシャーの権限を与えます。 自動デプロイの仕組みを作る スクリプトは Node.js を使います。gcloud モジュールをグローバルで使えるようにしておきます。下記の package.json の定義とおり サブスクライバーとなる agent.js と通知をする publish.js をそれぞれ作ります。 package.json 1 2 3 4 5 6 7 8 9 10 11 { "name": "myapp", "scripts": { "agent": "NODE_PATH=`npm root -g` node agent.js", "publish": "NODE_PATH=`npm root -g` node publish.js" }, "dependencies": { "gcloud": "^0.36.0" }, "private": true } 通知 GitLab CI から呼び出して Pub/Sub にデプロイメッセージを発行するスクリプトを作ります。 ...

2016年7月21日 · Toshimitsu Takahashi