CircleCIの基礎的な理解
Railsでポートフォリオを作成していたのですが、ふとCIたるものを導入してみようと思いました。
Rails人口が多いので、CircleCI関係の記事も多く、コピペだけでなんとなくテストの自動化ができたのですが、体系的な理解がイマイチでした。
ということで、時間をとって勉強したことを、ここに書き込みます。
そもそもCIって?
Continuous Integrationの略。日本語に訳すと「継続的インテグレーション」。
アプリケーションの品質改善や作業コストの削減を目的として、コミット単位でコンパイルやテストを行うこと。
ざっくり言うと、「細かく振り返ること」ですね。
誤解されがちだなと思ったのは、「CI」と「CIサービス」は違う意味ということです。
- 「CI」… 開発手法
- 「CIサービス」… CIの手助け、あるいは自動化を行ってくれるサービス
CircleCIはそのCIサービスの一つです。
CircleCIについて
CircleCIに限らないことかもしれませんが、CIサービスの利用方法として、2種類の方法が存在します。
- クラウド型 … クラウドサーバー上にホスティングされたCircleCIを利用する
- サーバー型 … 利用者のサーバーにインストールして利用する
ほとんどの方がクラウド型を利用していると思います。多分。
クラウド型の利用方法
CircleCIのアカウントを登録する必要があります。
ここら辺の解説はたくさんあるので、他のサイトを参照してください。
【CircleCI】CircleCI 2.0からはじめる個人での簡単なCI導入方法 - githubとの連携まで
CIを導入したいリポジトリに.circleciフォルダを追加し、その中にconfig.ymlを作成します。
CircleCIの設定は、このconfig.ymlに記述するのが基本です。
ここからが本題、config.ymlの基本的な書き方を説明していきます。(前置きいらんかったな)
config.ymlの基本的な書き方
ymlファイルによく記述するキーを解説します。
### jobs
circleCI環境内で行われる処理の大枠の1単位を定義するセクション
これらの中身をworkflowセクションから呼び出すことにより、CIを行う。
steps
jobs内に定義される、そのjobで実行される処理を定義したもの。
steps内に記述できるキーは様々だが、主にcheckoutとrunが主要。
- checkout … 設定されたpathにソースコードをcheckoutする。デフォルトは「working_directory」
- run … command lineプログラムを実行する
docker
利用するdocker環境の設定を行う
これらを利用したconfig.ymlファイルの一部を見てみましょう。
jobs:
build:
docker:
- image: circleci/ruby
steps:
- checkout
- run: bundle install --path vendor/bundle
test:
docker:
- image: circleci/ruby
steps:
- checkout
- run: bundle install --path vendor/bundle
jobsキーに「build」jobと「test」jobが定義されています。
それぞれがDockerfileのパス「circleci/ruby」を参照し、Docker環境を構築しています。
stepsキーでは、構築した環境内で行われる処理を記述しています。
これらのjobをworkflowキーで制御することにより、CIを行います。
workflowに関しては、先に例をみた方が早いでしょう。
jobsキーの例に、workflowキーを追記します。
jobs:
build:
docker:
- image: circleci/ruby
steps:
- checkout
- run: bundle install --path vendor/bundle
test:
docker:
- image: circleci/ruby
steps:
- checkout
- run: bundle install --path vendor/bundle
workflow:
do_something:
jobs
- build
- test:
require:
- build
filters:
branches:
only: develop
プログラミングに親しい方は、何をやっているか、勘で理解できると思います。
先ほども記述したように、workflowはjobsに書かれた処理を制御する部分です。
「do_something」と書かれたキーは、その制御を行う1つの単位だと思って差し支えないです。
「- test」以下の部分が記述されていなかった場合、「build」jobと「test」jobは並列で実行されます。
requireキーによって、jobsの実行順序を制御し、
filtersキーによって、ブランチによる処理条件を制御しています。
例えば、masterブランチをcommitした場合、「test」jobは実行されません。
まとめ
今回紹介した以外にも、様々なキーが存在しますが、基本的には上記を理解することで、簡単なCIは行うことができます。
自分も少しづつ理解を深めていこうと思います。
Author And Source
この問題について(CircleCIの基礎的な理解), 我々は、より多くの情報をここで見つけました https://qiita.com/yutaro50/items/edf6b05ba615b4f59f8c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .