Travis CI のOS 仮想環境を手元のDocker で実行する
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)
How to Run TravisCI locally on Docker
How to run travis-ci locally (stackoverflow)
Troubleshooting Locally in a Docker Image (Travis CI)
Author And Source
この問題について(Travis CI のOS 仮想環境を手元のDocker で実行する), 我々は、より多くの情報をここで見つけました https://qiita.com/TsutomuNakamura/items/676314035169b9ed2cd6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .