Как воспроизвести среду сборки travis-ci для отладки

Я вижу сбои сборки на travis-ci, которые я не могу воспроизвести на своей локальной машине. Существуют ли инструкции для настройки виртуальной машины, которая идентична среде сборки travis-ci linux? Я рад, что Travis-ci уже раскрывает новую ошибку, но менее взволнован, чтобы отлаживать ее, отправив коммиты, которые добавляют код отладки.

Ответ 1

Для контейнерных сборок теперь есть инструкции о том, как локально установить изображение докеров.

К сожалению, довольно много шагов по-прежнему ручной. Вот команды, необходимые для его запуска и запуска:

# 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

Ответ 2

Сейчас у меня такая же проблема. Раньше я использовал CircleCI, где вы могли просто войти в VM через ssh, но это не работает с виртуальными машинами Travis-CI.

Мне удалось отладить его (до определенной точки), установив клон Trovis-ci VM через Travis-Cookbooks. Вам нужно будет установить VirtualBox и Vagrant на вашем компьютере, прежде чем клонировать этот репозиторий.

Как только вы клонируете Travis-Cookbooks, откройте папку, запустите командную строку | терминал и введите vagrant up. Как только Vagrant завершает настройку VM (может занять много времени) на вашем компьютере, вы можете подключиться к нему через ssh, запустив vagrant ssh.

Оттуда вам нужно будет клонировать ваш собственный репозиторий (или просто скопировать код в виртуальную машину) и применить шаги из вашего файла .travis.yml.

Ответ 3

Вы можете использовать Travis Build, которая является библиотекой (что означает, что вы должны поместить ее в ~/.travis/) для генерации сценария сборки на основе оболочки (travis compile), который затем может быть загружен на виртуальные travis compile с использованием SSH и выполнен.

Ниже приведены только рекомендации, чтобы вы могли выбрать правильный путь (если что-то не хватает, дайте мне знать).

докер

Пример команды для запуска контейнера (которую можно найти в Docker Hub):

docker run -it travisci/ubuntu-ruby:18.04 /bin/bash

Запустите свой контейнер, клонируйте свой репозиторий и протестируйте его вручную.

См.: Запуск образа Docker на основе контейнера локально

Доступ по SSH

Проверьте этот ответ. В основном вам нужно настроить bounce host, а затем настроить сборку для запуска SSH туннеля.

Вот пример .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 [email protected]$bouncehostip

Локальная настройка

Вот шаги, чтобы проверить это в вашей локальной среде:

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 compile скрипт bash в результате вашего .travis.yml, вы можете использовать .travis.yml для запуска этого скрипта в виртуализированной среде с использованием предоставленного Vagrantfile и следующих шагов:

vagrant up
vagrant ssh
cd /vagrant
bundle exec rspec spec

Вам, вероятно, нужно установить больше инструментов, чтобы протестировать его.


Вот некоторый git намек, который избегает вас генерирует ненужные фиксаций при выполнении суда & ошибки совершает для тестирования Travis CI:

  1. Разветките репо (или используйте отдельную ветку).
  2. После начальной фиксации продолжайте добавлять --amend для замены вашей предыдущей фиксации:

    git commit --amend -m 'Same message.' -a
    
  3. Вставьте исправленный коммит силой (например, в уже открытый PR):

    git push fork -f
    
  4. Теперь Travis CI будет повторно проверять один и тот же коммит снова и снова.


Смотрите также: Как запустить travis-ci локально.

Ответ 4

Ответ Eregon не удался для меня в travis compile, ошибка выглядит так:

/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. Я использую среду node)

# 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