如何重现travis-ci构建环境以进行调试

Dav*_*ndy 63 travis-ci

我看到travis-ci上的构建失败,我无法在本地机器上重现.是否有设置VM的说明与travis-ci linux构建环境相同?我很高兴travis-ci已经揭示了一个新的错误,但通过发送添加调试代码的提交来调试它并不那么兴奋.

ere*_*gon 40

对于基于容器的构建,现在有关于如何在本地设置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
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我不得不修改ci.sh以手动输入我的分支名称,之后它就像一个魅力,谢谢. (2认同)
  • 如果您收到错误消息:`kernel_require.rb:120:in require:cannot load such file -- travis/support (LoadError)`...那么您需要运行[一些额外的命令](https://github.com/kernel_require.rb:120:in require:cannot load such file -- travis/support (LoadError)`... com/travis-ci/travis-ci/issues/8098#issuecomment-321507488) (2认同)

ken*_*orb 13

您可以使用Travis Build这是一个库(这意味着您要将其放入~/.travis/)以生成基于shell的构建脚本(travis compile),然后可以使用SSH将其上载到VM并执行.

以下步骤只是指导,以使您进入正确的轨道(如果有任何遗漏,请告诉我).

本地

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

docker run -it travisci/ubuntu-ruby:18.04 /bin/bash
Run Code Online (Sandbox Code Playgroud)

VM

在您执行了.travis.yml生成bash脚本之后travis compile,您可以使用use vagrant使用提供的.travis.yml以及以下步骤将此脚本运行到虚拟化环境中:

sudo: required
dist: trusty

language: python
python: "2.7"

script:
- echo travis:$sshpassword | sudo chpasswd
- sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
- sudo service ssh restart
- sudo apt-get install sshpass
- sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travisci@$bouncehostip
Run Code Online (Sandbox Code Playgroud)

您可能需要安装更多工具才能对其进行测试.


以下是一些Vagrantfile提示,可以避免在为Travis CI测试进行试验和错误提交时生成不必要的提交:

  1. 叉子回购(或使用单独的分支).
  2. 初始提交后,继续添加git以替换以前的提交:

    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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 强制推送修改后的提交(例如,进入已打开的PR):

    vagrant up
    vagrant ssh
    cd /vagrant
    bundle exec rspec spec
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在Travis CI会一遍又一遍地重新检查同一个提交.

  • 构建信息表示dist,但我不相信`travis compile`生成的脚本在测试之前足以引导一个vanilla`ubuntu/trusty64`流浪盒.我想你必须首先用香草盒配备travis cookbook.我设法找到一个预包装的盒子https://atlas.hashicorp.com/travis-ci/boxes/ci-minimal-trusty64似乎在我的情况下工作,尽管已超过一年. (2认同)

Tim*_*mka 12

我现在正面临同样的问题.我曾经使用过CircleCI,你可以通过ssh登录到VM,但这不适用于Travis-CI VM.

我可以通过Travis-Cookbooks设置Travis-ci VM克隆来调试它(到某一点).在克隆此存储库之前,您需要先在计算机上安装VirtualBoxVagrant.

克隆Travis-Cookbooks后,打开文件夹,启动命令提示符|终端并键入vagrant up.一旦Vagrant完成在您的计算机上设置VM(可能需要很长时间),您可以通过运行来通过ssh连接到它vagrant ssh.

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