如何重现travis-ci构build环境进行debugging

我看到在travis-ci上的构build失败,我无法在本地机器上重现。 有没有说明build立一个与travis-ci linux构build环境相同的虚拟机? 我很高兴Travis-ci已经发现了一个新的bug,但是通过发送添加debugging代码的提交来debugging它却不那么兴奋。

对于基于容器的版本,现在有关于如何在本地设置Docker镜像的说明 。

不幸的是,相当多的步骤仍然是手动的。 以下是您需要启动并运行的命令:

# change the image according to the language chosen in .travis.yml $ docker run -it -u travis quay.io/travisci/travis-jvm /bin/bash # now that you are in the docker image, switch to the travis user sudo su - travis # Install a recent ruby (default is 1.9.3) rvm install 2.3.0 rvm use 2.3.0 # Install travis-build to generate a .sh out of .travis.yml cd builds git clone https://github.com/travis-ci/travis-build.git cd travis-build gem install travis travis # to create ~/.travis ln -s `pwd` ~/.travis/travis-build bundle install # Create project dir, assuming your project is `me/project` on GitHub cd ~/builds mkdir me cd me git clone https://github.com/me/project.git cd project # change to the branch or commit you want to investigate travis compile > ci.sh # You most likely will need to edit ci.sh as it ignores matrix and env bash ci.sh 

我现在面临同样的问题。 之前我曾经使用过CircleCI,你可以通过sshlogin到VM,但是这并不适用于Travis-CI虚拟机。

我可以通过Travis-Cookbooks设置Travis-ci虚拟机克隆来debugging它(到某一点)。 在克隆此存储库之前,您需要首先在计算机上安装VirtualBox和Vagrant 。

一旦你有克隆的Travis-Cookbooks,打开文件夹,启动命令提示符|terminal并inputvagrant up 。 一旦Vagrant在您的机器上完成VM(可能需要很长时间)的设置,您可以通过运行vagrant ssh通过ssh连接到它。

从那里,你需要克隆自己的仓库(或者只是将代码复制到VM),并应用.travis.yml文件中的步骤。

你可以使用Travis Build这个库(这意味着你必须把它放在~/.travis/ )来生成一个基于shell的构build脚本( travis compile ),然后可以使用SSH将这些脚本上传到虚拟机并执行。

下面的步骤只是为了让你进入正确的轨道(如果有什么缺失,让我知道)的指导。

本地

以下是在本地环境中testing它的步骤:

 cd ~ git clone https://github.com/travis-ci/travis-build.git ln -s ~/travis-build/ ~/.travis/travis-build sudo gem install bundler bundle install --gemfile ~/.travis/travis-build/Gemfile cd repo-dir/ travis login -g <github_token> vim .travis.yaml travis lint # to validate script travis compile # to transform into shell script 

VM

在你做了travis compile之后,你的.travis.yml会生成bash脚本,你可以使用vagrant将这个脚本运行到虚拟化环境中,使用提供的Vagrantfile和以下步骤:

 vagrant up vagrant ssh cd /vagrant bundle exec rspec spec 

您可能需要安装更多工具才能testing它。


这里有一些git提示,它可以避免您在做Travis CItesting的试验和错误提交时产生不必要的提交:

  1. 叉回购(或使用单独的分支)。
  2. 初次提交后,继续添加--amend来replace你以前的提交:

     git commit --amend -m 'Same message.' -a 
  3. 强制推送修改后的提交(例如,进入已经打开的PR):

     git push fork -f 
  4. 现在Travis CI会重复检查同一个提交。

travis compile ,Eregon的回答失败了,出现这样的错误:

 /home/travis/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError) 

我得到它与以下调整工作:(调整标记#CHANGED 。我使用节点环境)

 # change the image according to the language chosen in .travis.yml # Find images at https://quay.io/organization/travisci docker run -it quay.io/travisci/travis-node-js /bin/bash # now that you are in the docker image, switch to the travis user su travis # Install a recent ruby (default is 1.9.3) to make bundle install work rvm install 2.3.0 rvm use 2.3.0 # Install travis-build to generate a .sh out of .travis.yml sudo mkdir builds # CHANGED cd builds sudo git clone https://github.com/travis-ci/travis-build.git cd travis-build gem install travis travis # to create ~/.travis ln -s `pwd` ~/.travis/travis-build bundle install bundler add travis # CHANGED sudo mkdir bin # CHANGED sudo chmod a+w bin/ # CHANGED bundler binstubs travis # CHANGED # Create project dir, assuming your project is `me/project` on GitHub cd ~/builds mkdir me cd me git clone https://github.com/me/project.git cd project # change to the branch or commit you want to investigate ~/.travis/travis-build/bin/travis compile > ci.sh # CHANGED # You most likely will need to edit ci.sh as it ignores matrix and env # In particular I needed to edit --branch='' to the branch name bash ci.sh