技術情報棚卸し(平日限定)

todoa2cの技術情報棚卸しです。平日限定ってことはアレだ。言わせんな恥ずかしい。

Codeshipを使ったApp Engineへの継続的デリバリー

IntelliJ IDEAからApp Engineへのデプロイが簡単にできることは以前書いたのですが、 自分のIntelliJ IDEAのローカルフォルダの情報がそのままデプロイされてしまうので、 コミットしていないコードがそのままデプロイされてしまう危険性があります。 また、デプロイの作業が自分しかできない、暗黙知化されるのも良くないわけです。

こういった問題の解決策として継続的デリバリーを行うべく、 実現できるサービスを探したところ、ありました。 Codeshipというサービスです。

Codeshipは、扱えるコード、コードのホスト先だけでなく、 コードを動かすクラウド環境(AWSやDigital Oceanなど)も選べるし、その際に必要となる デプロイやプロビジョニングツールも提供されており、 テストから環境構築してデプロイまでを一手に引き受けてくれるサービスです。

今回は、Bitbucketに置いてある自分のプライベートリポジトリを監視し、 コードのPushがあったタイミングでテストを行い、 かつmasterブランチに対するコミットがあった時点でApp Engineにデプロイする、 というところまでをやってみました。

基本的な実現方法は、下記をご参照ください。こっちの方が分かりやすいです。

Continuous Deployment for Django apps from Bitbucket to Google App Engine – Codeship

工夫した点は、設定面の工夫は特にありませんが、デプロイの仕方だけは少し工夫しています。 GitのブランチをGit-flow風にして、developを開発用ブランチ、masterをリリース用ブランチにして、 リリース時には、developの変更点をmasterにマージしてもらうようなPull Requestを Bitbucket上で作成します。

デプロイ用Pull Requestの変更点

こうすることで、どのコミットがリリースに含まれるかが、リリース用Pull Requestを見れば 一目瞭然になるわけです。

※アイデアは GitHub 時代のデプロイ戦略 – naoyaのはてなダイアリーです。

あとはデプロイはCodeshipにお願いすると。

Codeshipによるデプロイ

これでBitbucket上からのリリースもできるようになり、非常に快適になりました。 あとは、今はまだステージング環境のようなものを用意していないのですが、 developブランチにコミットがあった場合にステージング環境にデプロイもする、という設定を 追加すると良いかもしれないですね。

Codeshipは1ヶ月に50回のビルドまでであれば無料で使うことが出来ますので、 ご興味のある方は、是非是非お試しください。

Comments