Я вижу сбои сборки на travis-ci, которые я не могу воспроизвести на своей локальной машине. Существуют ли инструкции для настройки виртуальной машины, которая идентична среде сборки travis-ci linux? Я рад, что Travis-ci уже раскрывает новую ошибку, но менее взволнован, чтобы отлаживать ее, отправив коммиты, которые добавляют код отладки.
Как воспроизвести среду сборки 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:
- Разветките репо (или используйте отдельную ветку).
-
После начальной фиксации продолжайте добавлять
--amend
для замены вашей предыдущей фиксации:git commit --amend -m 'Same message.' -a
-
Вставьте исправленный коммит силой (например, в уже открытый PR):
git push fork -f
-
Теперь 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