7
5

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 5 years have passed since last update.

CircleCIの基礎的な理解

7
Posted at

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は行うことができます。

自分も少しづつ理解を深めていこうと思います。

7
5
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
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?