CircleCIの設定をする際に便利だった機能について書く。
便利な機能
ssh接続
ビルド結果画面にある「&enable SSH」をクリックすると別インスタンスが起動し、ssh接続可能になる。
「ローカルでは動くか、CI上では動かない」などのトラブル調査の際に便利。
circle.ymlで設定可能な項目(抜粋)
Configuring CircleCIからの抜粋。
/etc/hostsへの登録
名前解決できないテスト用サーバ等を設定するとよい。
machine:
hosts:
dev.circleci.com: 127.0.0.1
foobar.com: 1.2.3.4
環境変数の登録
環境変数はWebUIでも設定可能ですが、circle.yml
の内容が優先されます。
machine:
environment:
foo: bar
baz: 123
タイムゾーン
デフォルトではUTCになっているので、日本にしておいたほうが無難。
machine:
timezone:
Asia/Tokyo
任意コマンドの実行
pre
やpost
に任意のコマンドが書ける。
machine:
pre:
- echo foo
- echo bar
post:
- echo baz
ビルド
任意コマンドの実行
machine
と同様にpre
とpost
が利用できる。
dependencies:
pre:
- sudo cp .env.sample .env
特定ディレトリのキャッシュ
複数のビルド間で共有するディレクトリを指定する。
あまりサイズが大きくなるとつらい。(例: /usr
を指定したら10分くらい待たされた)
dependencies:
cache_directories:
# 絶対パス
- /path/to/cache
# 相対パス
- cache
# /homeからの相対パス
- ~/cache
pre
と組合せて独自でいれるソフトウェアのキャッシュができる。
dependencies:
cache_directories:
- redis-2.4.18
pre:
- if [[ ! -e redis-2.4.18/src/redis-server ]]; then wget http://redis.googlecode.com/files/redis-2.4.18.tar.gz && tar xzf redis-2.4.18.tar.gz && cd redis-2.4.18 && make; fi
テスト
任意コマンドの実行
machine
と同様にpre
とpost
が利用できる。
test:
pre:
- bundle exec rubocop
テストコマンドの変更
override
でテストのコマンドを変更できる。CircleCI自体をいじるときは、ここを適当なコマンドに差し替えると楽。
test:
override:
- echo "Ya! All the tests are passed!!"