HANDAI JK Engineering Blog

HANDAI JKの技術ブログです

GitHubを使ってるならついでにCIを回しちゃおう

HANDAI JKの石田です。

大阪は先日ひさびさの雨でした。傘をもっていなかったのでびしょびしょです。今日は、CI(Continuous Integration)の話をしたいと思います。

こんなことってありませんか

あれ、いつのまにかコードが動かなくなってる!!!

ありますよね。コードを改良していくうちに、動いていたところが動かなくなっている。そんな時は問題が発生したコミットを一生懸命さぐるわけですが... CIを実施していればこのようなことは起こりません。

CIとは

CIとはContinuous Integration(継続的インテグレーション)ということで、具体的には何度も繰り返しコードのテストやビルドといったアクションを実行することを指します。

また、これらのアクションが実行されるタイミングはコミット時が基本です。コードをコミットするタイミングで毎回コードがテストされるので、何か問題があればすぐに気づくことができるというわけです。

CIの設定の仕方

C言語のプロジェクトのCIを設定するという想定で詳細は省略しながら簡単に説明します。CIを行うサービスは複数ありますが、その中でも代表的なCircleCIを使用します。

f:id:handaijk:20190530131118p:plain
CircleCI

1. CI設定ファイルを作成する

CIで何を行うかを定義するファイルを作成します。CircleCIの場合は.circleci/config.ymlに作成します。以下の例では、gccでCのソースファイルをコンパイルし、コンパイルしたものを実行するという流れになっています(8-9行目)。本来はテストコードを実行したりするのですが、今回はコンパイルが通ればOKとしています。

version: 2.0
jobs:
  build:
    docker:
      - image: gcc:6
    steps:
      - checkout
      - run: gcc -o main main.c
      - run: ./main

workflows:
  version: 2
  build:
    jobs:
      - build

2. CircleCIの画面でGitHubリポジトリを登録する

GitHubにコードがpushされたらCIが実行されるようにCircleCIの画面でリポジトリを登録します。CIをしたいリポジトリの「Set Up Project」ボタンを押します。

f:id:handaijk:20190530125405p:plain

3. GitHubにコードをpushしてCIが自動的に開始するか確かめる

うまく設定ができていたらGitHubにpushしてすぐCIが開始します。異常なく終了したら緑色(Pass)に表示が変わります。もしエラーがあれば赤色(Fail)になります。

f:id:handaijk:20190530130023p:plain
Passした時の画面(コンソールの出力も表示されていますね)

ちなみに、GitHubの画面にもCIがPassしたかFailしたか表示されるのでとても便利です。

f:id:handaijk:20190530130345p:plain
GitHubではCI実行中はオレンジ色、Pass時は緑色、Fail時は赤色になります

まとめ

CIを使うことで常時コードにチェックが入るようになるので、より自信を持って開発を進めることができます。CircleCIなど、多くのCIサービスではオープンソース(公開設定がPublicなリポジトリ)の場合無料で使用することができます。CIは本当に便利ですよ~!

今回テストで作成したリポジトリはこちら