はじめましてのCircle CI
Qiitaにもほぼ同じ内容の記事を投稿しています。
はじめに
自宅プロダクトでもCIしたくなった。 仕事では(既に構築されているのを)使ったことはありますが、 自分で構築したことはありませんでした。
今回、初めて構築してみましたので、 手順諸々についてメモを残します。
なお、Djangoプロジェクトのテストを前提にしています。
Circle CI & Github連携
Circle CIにGithubアカウントでログインしてリポジトリを選ぶだけなので割愛。
Circle CIの通知がslackに流れるようにする
参考: https://circleci.com/blog/slack-integration/
- Slackにサインイン
- team settingからApps&Integration
- Developer Tools
- CircleCI
- Webhook urlを取得
- CircleCIにサインイン
- builds
- projectの右にある小さい歯車
- Notifications > Chat Notifications
- slack にWebhook urlを貼って&Test Hook
これで、slackにHello from Circleciみたいなメッセージが来たら成功。
必要最低限の設定
言語はpythonとします。
OS バージョンの指定
デフォルトではUbuntu 12.04なので、以下の手順で14.04にしておいた方が良いでしょう。 1. builds 2. projectの右にある小さい歯車 3. Build Settings > Build Environment
ここで14.04にしておけば、次のテスト(rebuildは含まない)から反映されるようです。
circle.ymlの作成
circleciの設定ファイルである、circle.ymlをプロジェクトのルートディレクトリに作成します。 詳細は https://circleci.com/docs/configuration/ にありますので、随時参照すると良いと思います。
pythonバージョンの指定
circle.ymlに以下を書き込みます。
machine: python: version: x.x.x
ライブラリ等の更新
参考:
https://circleci.com/docs/installing-custom-software/
pipで入れられないソフトウェアを入れたい場合には以下のように指定します。
pip自身も一応updateしておいた方が無難でしょう。
なお、CircleCIはプロジェクトルートにrequirements.txtを置いておけば、
勝手にpip install -r requirements.txt
をしてくれるので、
明示的に指定する必要はありません。
dependencies: pre: - sudo apt-get update - sudo apt-get install -y [package-name] - pip install -U pip
最低限のテスト
以下の通り記載すれば、unittestが走ります。
test: post: - cd [manage.py-directory]; python manage.py test --settings=[settings]
無事に終了すれば、slackに通知が来る&Githubにそれっぽいアイコンが出るはずです。
まとめると
machine: python: version: x.x.x dependencies: pre: - sudo apt-get update - sudo apt-get install -y [package-name] - pip install -U pip test: post: - cd [manage.py-directory]; python manage.py test --settings=[settings]
余談
まあまとめてみるとこれだけの作業なんですが、 中の人は大分時間を取られました。 CircleCIとは関係なく、パッケージのインストールにコケてしまい、 原因追及に時間がかかりまくったのです。
ようやくGithubにSuccessアイコンがついたときの達成感と、 この記事をまとめたときの徒労感はパないっすね。 「あれ、私こんだけしかやってないの?」的な。