これからCI/CDを導入する方にも、すでに活用されている方にも、CircleCIを通してCI/CDに対する理解を深めるお手伝いができれば幸いです。
対象読者
- 前回の記事を読んでCI/CDに興味を持たれた方
- CI/CDについて学びたい方
- CircleCIを使ってみたい方
- CircleCI Ver. 2.1について知りたい方
必要な環境/知識
- GitHubのアカウント
- ソフトウェアのテストについての一般的知識
- アジャイル開発についての一般知識
筆者について
CircleCIの元開発者で、現在はCircleCI初の海外支社であるCircleCI Japanでさまざまな活動を行っています。
CircleCIについて
CircleCIは数あるCI/CDサービスの中で代表的なサービスの一つです。CI/CDには主に自分たちで管理するホスティング型とサービス側が運用するクラウド型があるのですが、CircleCIはその両方を提供しています。今回はクラウド型を使って解説していきます。
CircleCIの特徴とメリット
たくさんCI/CDサービスがある中でCircleCIを選ぶ理由はなんでしょうか? 筆者の意見ではCircleCIには以下のようなメリットがあると思っています。
- モダンなCI/CDの機能の多くをサポートしている
- 今後日本語でのサポートや情報が期待できる
CircleCIは2018年9月を持って古い設定のサポートを終了しました。新しい設定はCircleCI 2.0(以下、2.0)と呼ばれ、設定方法だけではなくアーキテクチャが一新されています。主に以下のような特徴があります。
- 柔軟かつ明示的なビルドの設定:近年のソフトウェア開発ではさまざまなツールや開発手法が使われるようになり、CI/CDサービスにはそれらに柔軟に対応することが求められています。2.0はユーザーが設定を明示的に書くことで、CI/CDの設定を自由にカスタマイズできるようになりました。
- Dockerのサポート:Dockerは開発現場で急速に広まっていますが、CI/CDの世界も例外ではありません。2.0ではDockerのネイティブ対応で開発環境や本番環境で使っている同じDockerのイメージを使ってビルドすることができます。
- ワークフローのサポート:CI/CDでできること(後述するジョブ)はどんどん増えています。そうなると、ジョブを組み合わせたり制御したりしたくなってきますが、これを可能にするのが次回で紹介するワークフローという機能です。名前はサービスにより異なりますが、最新のCI/CDサービスには必ず求められる機能の一つです。
以上がモダンなCI/CDという視点から見たCircleCIを使うメリットです。そして、副次的なメリットとしてこれから日本語での情報がどんどん増えることが期待されます。2018年の時点では主要なCI/CDサービスはすべて英語圏のサービスなので、サポートや公式ドキュメントは英語で提供されます。対してCircleCIは、2018年6月に日本支社であるCircleCI Japanを設立し、日本のマーケットに対してコミットしていくことを明確にしました。これからは日本語でのサポートの開始や日本のユーザによるコミュニティで知見などがどんどん共有されることが期待されます。
CircleCIを使った開発フロー
具体的な設定の解説に入る前に、CircleCIがどのように開発フローの中で使われるか説明します。
ほとんどのCI/CDサービスやツールはGitHubのようなVCSと連携して動きます。開発者が新しい変更をVCSにPushするとWebhookによりCircleCIへ通知が送られ、CircleCIはその変更のリビジョンを使ってビルドを開始します。もしビルドが失敗した場合、開発者は成功するまで修正します。ビルドが成功すれば、開発者はmasterブランチにマージしてもう一度そこでビルドが実行されます。その後はチームや開発体制によって異なりますが、基本的には2通りあります。
- masterブランチでビルドが成功したらCI/CDの1サイクルは終了
- masterブランチでビルドが成功したら本番・ステージング環境などに自動デプロイ
前回でも解説しましたが、自動デプロイまでできればさまざまなメリットがありますが、デプロイ環境をきちんと対応させる必要があるのでハードルは低くはありません。今回は基本的にmasterブランチでビルドが成功すれば1サイクル終了という方針で解説していきます。
Hello World
それではCircleCIを実際に使ってみましょう。入門としてHello Worldを表示させるところから始めることは、CI/CDでも例外ではありません。なお、本記事ではページ数の関係でCircleCIの公式ドキュメントの力を借りながら進めていきます。
CircleCIを使い始めるためには、まずはプロジェクトを追加する必要があります。詳しい説明は公式ドキュメントにゆずりますが、大まかに以下のような流れになります。
- http://circleci.com/signup/からサインアップしてGitHubかBitbucketを選択します。
- サインアップが完了するとビルドするプロジェクトを選びます。
- CircleCIが各言語にそっておすすめのビルドの設定を表示します。一から設定を書く手間が省けるのでCircleCIを初めて使う方は参考にしてください。
- "Start Building"というボタンを押せばビルドが開始します。
問題なくビルドが実行されれば以下の画像のように表示されます。