GitHub実践入門(9)
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のところ?
すでに設定済みになってるな
連携してやってくれたのか
ボタンが見当たらないんですけど
しょうがないから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ブランチがテストされた
なんか楽しい