kb84tkhrのブログ

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

GitHub実践入門(9)

Travis CI

CI用のツールで、サービスとして提供されてるからJenkinsよりも気軽に試せそう?

ちょっとやってみながら読む
learn-travisciというリポジトリを作ってcloneしたら
こんなファイルをまず作ってみた

hoge.py

#! /usr/bin/env python3

def hogehoge(a, b):
    if a < b:
        return a + b
    else:
        return a - b

if __name__ == "__main__":
    print(hogehoge(5, 2))

test-hoge.py

import unittest
from hoge import hogehoge


class TestHoge(unittest.TestCase):
    def test_hogehoge(self):
        self.assertEqual(hogehoge(2, 5), 7)
        self.assertEqual(hogehoge(5, 2), 3)


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

手動テスト

$ test-hoge.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

OK

で、python用の.travis.ymlはこんな感じになるのかな

language: python
python:
  - "3.6"
script: test-hoge.py

これをpushしておいて
Travis CIのページでSign in with GitHub

自分のリポジトリ一覧が表示されるのでlearn-travisciの横のスイッチをONに

GitHubの「Webhooks & Services」ページで「Configure Services」をクリック後に表示される一覧から「Travis」を選択すると、Travis向けの設定が表示されます。

「Webhooks & Services」ページってどこだ
koba925/learn-travisciのSettingsのWebhooksのところ?
すでに設定済みになってるな
連携してやってくれたのか

「Test Hook」ボタンを押せば、試験的にこのリポジトリTravis CI側で自動テストが実施されます。

ボタンが見当たらないんですけど
しょうがないからpushするか
バグを入れておこう

def hogehoge(a, b):
    if a < b:
        return a + b
    else:
        return a + b

pushする
なんか動いてる

#1 failed

失敗
テスト失敗どころかテストが動いてない

$ test-hoge.py
test-hoge.py: command not found
The command "test-hoge.py" exited with 127.

そうなるかなとは思ってたけど一応試してみたということで

こうかな
バージョンはpython:の項目に書くわけだから
python3とは書かないほうがいいんだろうな

language: python
python:
  - "3.6"
script: python test-hoge.py

今度は動いた

$ python test-hoge.py
F
======================================================================
FAIL: test_hogehoge (__main__.TestHoge)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test-hoge.py", line 10, in test_hogehoge
    self.assertEqual(hogehoge(5, 2), 3)
AssertionError: 7 != 3
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
The command "python test-hoge.py" exited with 1.

今度は入れたバグを元に戻してpush

0.07s$ python test-hoge.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
The command "python test-hoge.py" exited with 0.
Done. Your build exited with 0.

できたできた

ところでpipが文句言ってるけど何

$ pip --version
pip 9.0.1 from /home/travis/virtualenv/python3.6.3/lib/python3.6/site-packages (python 3.6)
Could not locate requirements.txt. Override the install: key in your .travis.yml to install dependencies.

気にしないでおこう
モジュールを追加したりするとでなくなりそうな気がする

READMEのアイコン表示もやってみる

# Learn Travis CI

[![Build Status](https://secure.travis-ci.org/koba925/learn-travisci.png)](http://travis-ci.org/koba925/learn-travisci)

成功

python3とは書かないほうがいいんだろうな

pythonのバージョンを"3.6"と指定してたけど
もっと細かく指定したらどうなるのかな

3.6.5 is not installed; attempting download
Downloading archive: https://s3.amazonaws.com/travis-python-archives/binaries/ubuntu/14.04/x86_64/python-3.6.5.tar.bz2
$ curl -sSf -o python-3.6.5.tar.bz2 ${archive_url}
$ sudo tar xjf python-3.6.5.tar.bz2 --directory /
$ python --version
Python 3.6.5

ちゃんとやってくれるみたいだ
3つめの数字はバグフィックスとかだからそこまで細かく指定しなくても、
ってことかな

ブランチ切ってpushしたらどうなるのかな
更新のあったブランチがテストされるような気はするけど
もしかしたらmasterが更新されたときしかテストされないとかも
ないとは言えないか

やってみた
pogeブランチをpushしたらpogeブランチがテストされた

なんか楽しい