Как воспроизвести среду сборки travis-ci для отладки
Я вижу сбой сборки на travis-ci, который не могу воспроизвести на моей локальной машине. Есть ли где-нибудь инструкции по настройке виртуальной машины, идентичной среде сборки travis-ci linux? Я рад, что travis-ci уже обнаружил новую ошибку, но не так рад ее отладке, посылая коммиты, которые добавляют код отладки.
4 ответа
Для сборок на основе контейнеров теперь есть инструкции о том, как настроить образ 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
Вы можете использовать Travis Build, которая является библиотекой (что означает, что вы должны поместить ее в ~/.travis/
) для создания сценария сборки на основе оболочки (travis compile
), которые затем могут быть загружены на виртуальные машины с использованием SSH и выполнены.
Ниже приведены только рекомендации, чтобы вы могли выбрать правильный путь (если что-то не так, дайте мне знать).
Местный
Вот шаги, чтобы проверить это в вашей локальной среде:
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
В.М.
После того как ты сделал travis compile
который будет производить скрипт bash в результате вашего .travis.yml
, вы можете использовать использовать vagrant для запуска этого сценария в виртуальной среде, используя 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 будет повторно проверять один и тот же коммит снова и снова.
Я сталкиваюсь с той же проблемой прямо сейчас. Раньше я использовал CircleCI, где вы могли просто войти в виртуальную машину через ssh, но это не работает с виртуальными машинами Travis-CI.
Я смог отладить его (до определенного момента), настроив клон Travis-ci VM через Travis-Cookbooks. Вам нужно будет установить VirtualBox и Vagrant на свой компьютер, прежде чем клонировать этот репозиторий.
После клонирования Travis-Cookbooks откройте папку, запустите командную строку | терминал и введите vagrant up
, Как только Vagrant завершит настройку виртуальной машины (может занять много времени) на вашей машине, вы можете подключиться к ней через ssh, запустив vagrant ssh
,
Оттуда вам нужно будет клонировать свой собственный репозиторий (или просто скопировать код на ВМ) и применить шаги из вашего .travis.yml
файл.
Эрегон не смог мне ответить 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)
Я получил его, работая со следующими корректировками: (Корректировки, помеченные # ИЗМЕНЕНО. Я использую среду узла)
# 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