travis-ci コンテナをlocal のDocker コンテナとして起動する
travis-ci でテストを実施する場合、travis-ci のOS コマンドを発行したりファイルにデータを直に書き込むようなテストケースがあった場合、事前にtravis-ci の仮想環境にログインして用意されているコマンドやディレクトリ構成を調べたいと思ったことはないでしょうか?
Travis CI ではそういった時にTravis CI のテスト環境と同等な環境をDocker コンテナとして実行する方法が用意されています。
ここではtravis-ci 環境のdocker コンテナを手元で起動してnodejs のテストを実行するまでの手順をご紹介します。
Docker イメージを選択する
travis-ci ではDocker Hub にtravis-ci のコンテナをプログラミング言語毎に公開しています。
公開されているDocker イメージは以下のものがあります。
- travis-ci 公開イメージ一覧
プログラミング言語 | Docker Hub イメージ |
---|---|
android | travisci/ci-amethyst:packer-1512508255-986baf0 |
erlang | travisci/ci-amethyst:packer-1512508255-986baf0 |
haskell | travisci/ci-amethyst:packer-1512508255-986baf0 |
perl | travisci/ci-amethyst:packer-1512508255-986baf0 |
default | travisci/ci-garnet:packer-1512502276-986baf0 |
go | travisci/ci-garnet:packer-1512502276-986baf0 |
jvm | travisci/ci-garnet:packer-1512502276-986baf0 |
node_js | travisci/ci-garnet:packer-1512502276-986baf0 |
php | travisci/ci-garnet:packer-1512502276-986baf0 |
python | travisci/ci-garnet:packer-1512502276-986baf0 |
ruby | travisci/ci-garnet:packer-1512502276-986baf0 |
最新の情報についてはtravis-ci のサイトにあるので、そちらを参考にしてください。
- https://docs.travis-ci.com/user/common-build-problems/#Running-a-Container-Based-Docker-Image-Locally
今回はnode_js のイメージを使用してログイン、構築してテスト実行までを行ってみます。
travis-ci のnodejs 用コンテナを起動する
上記のリストからnodejs 用のイメージはtravisci/ci-garnet:packer-1512502276-986baf0
になります。
それをpull して構築していきます。
# IMAGE="travisci/ci-garnet:packer-1512502276-986baf0"
# docker run --name travis-debug -dit $IMAGE /sbin/init
# docker exec -it travis-debug bash -l
コンテナにログインしたらtravis ユーザに変更します。
# su - travis
ひとまずはこれでtravis のOS 仮想環境の構築は完了で、一通りの環境変数やディレクトリ構成を確認することができるようになっています。
次はnodejs のテスト環境を構築して実際に実行するまでを行ってみます。
nodejs テスト環境の構築
テスト環境を構築するために現行ではruby 2.3.0 が必要みたいで、そのruby 環境を構築していきます。
$ ruby --version
$ rvm install 2.3.0
$ rvm use 2.3.0 --default
$ cd ~/builds
$ git clone https://github.com/travis-ci/travis-build.git
$ cd travis-build
$ mkdir -p ~/.travis
$ ln -s $(pwd) ~/.travis/travis-build
$ bundle install
$ bundler add travis
$ # cd ~/builds/travis-build
$ bundler binstubs travis
テスト対象リポジトリのclone とテスト用スクリプトを作成します。
今回はリポジトリhttps://github.com/TsutomuNakamura/rpncc.git
をclone してテスト実行してみます。
$ cd ~/builds
$ git clone https://github.com/TsutomuNakamura/rpncc.git
$ cd rpncc
$ ~/.travis/travis-build/bin/travis compile --no-interactive > ci.sh
テストスクリプトを作成したら、テスト対象のブランチをci.sh に書き込みます。
今回はmaster
ブランチをテストしてみます。
$ sed -i "s/branch.*https/branch\\\=\\\'master\\\'\\\ https/g" ci.sh
ci.sh を実行してテストを走らせます。
$ bash ci.sh
テストが無事実行できました!
参考
-
How to Run TravisCI locally on Docker
-
How to run travis-ci locally (stackoverflow)
-
Troubleshooting Locally in a Docker Image (Travis CI)