kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

PPP3: Circle CI

Chapter 10 Circle CIで継続的インテグレーション

継続的インテグレーション(Continuous Integration: CI)とは、プログラムを修正するたびにビルドやテストを実行し結果を確認することを自動化する取り組みです。CIは、開発プロセス上の人的不注意によるミスや繰り返し作業によるミスなどのリスクを大きく減らします。

Circle CIを使う

Sign upするともういきなり自分のリポジトリの一覧が見えている
ここでAdd Projectの説明が出てくるけど、なにかリポジトリを指定しないといけない

リポジトリはある前提ってことになってるけど
あとでサンプルコードが出てくるからそれをpushしてからやるのがいいかな?

calculations.py

def divide(num1, num2):
    return num1 / num2

test_calculations.py

import unittest
import calculations

class CalculationsTest(unittest.TestCase):

    def test_divide_normal(self):
        self.assertEqual(calculations.divide(2, 2), 1)

    def test_divide_contain_zero(self):
        self.assertEqual(calculations.divide(0, 1), 1)

if __name__ == "__main__":
    unittest.main()

.circleci/config.yml はいったんhello world版で

version: 2.1
jobs:
  build:
    docker:
      - image: circleci/python:3.6入力してみた
    steps:
      - run: echo 'hello world'

これをいったんgithubに置いてAdd Project
リポジトリを指定してSet Up Projectすると
プロジェクト追加詳細画面が出てOperating SystemとかLanguageとか
設定するはずなんだけど出てこない
気にせず進む

Start buildingをクリックすると何やら動いてSucceed
hello worldが表示されないけど適当にちょんちょんクリックしてたら発見できた

では本番

...
    steps:
      - checkout
      - run: python test_calculations.py

これをpush
何もしなくてもテストが失敗してた
Start building押さなきゃいけないのは最初だけなんだな
失敗は想定通り

ソースを修正してpush

    def test_divide_contain_zero(self):
        self.assertEqual(calculations.divide(0, 1), 0)

成功