Подтвердить что ты не робот

Как запустить travis-ci локально

Я только что присоединился к проекту, и я новичок в travis-ci. Я бы предпочел не прикладывать каждое небольшое изменение к .travis.yml и каждое небольшое изменение, которое я делаю для источника, чтобы запустить сборку. С jenkins вы можете скачать jenkins и запустить локально. Предлагает ли travis что-то вроде этого?

Примечание. Я видел travis-ci cli и загружал его, но все, что ему кажется, это вызвать их API, который затем подключается к моему реестру github, поэтому, если я не нажимаю, это не имеет значения что я перезапускаю последнюю сборку.

4b9b3361

Ответ 1

Этот процесс позволяет полностью воспроизвести любое задание по сборке Travis на вашем компьютере. Кроме того, вы можете прервать процесс в любое время и отладить. Ниже приведен пример, в котором я прекрасно воспроизвожу результаты задания № 191.1 в php-school/cli-menu.

Предпосылки

  • У вас есть публичное репо на GitHub
  • Вы запустили хотя бы одну сборку на Трэвисе
  • На вашем компьютере настроен Docker

Настройте среду сборки

Ссылка: https://docs.travis -C i.com/user/common -b uild-problem/

  1. Создайте свой собственный временный идентификатор сборки

    BUILDID="build-$RANDOM"
    
  2. Просмотрите журнал сборки, откройте кнопку "Показать больше" для РАБОЧЕЙ ИНФОРМАЦИИ и найдите строку INSTANCE, вставьте ее здесь и запустите (замените тег после двоеточия на новейший доступный):

    INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0"
    
  3. Запустите безголовый сервер

    docker run --name $BUILDID -dit $INSTANCE /sbin/init
    
  4. Запустите подключенный клиент

    docker exec -it $BUILDID bash -l
    

Запустить работу

Теперь вы находитесь в своей среде Travis. Запустите su - travis чтобы начать.

Этот шаг хорошо определен, но он более утомительный и ручной. Вы найдете каждую команду, которую Трэвис выполняет в среде. Чтобы сделать это, поищите все в правом столбце, который имеет тег типа 0.03s.

С левой стороны вы увидите актуальные команды. Запустите эти команды по порядку.

Результат

Сейчас самое время запустить команду history. Вы можете перезапустить процесс и воспроизвести эти команды, чтобы запустить тот же тест для обновленной базы кода.

  • Если ваш репозиторий является приватным: ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB" тогда cat ~/.ssh/id_rsa.pub и нажмите здесь, чтобы добавить ключ
  • К вашему сведению: вы можете сделать git pull изнутри докера, чтобы загрузить коммиты из вашего dev-окна, прежде чем отправлять их в GitHub
  • Если вы хотите изменить команды, которые выполняет Travis, то ВАША обязанность выяснить, как это переводится обратно в работающий .travis.yml.
  • Я не знаю, как очистить среду Docker, это выглядит сложно, может быть, это утечка памяти

Ответ 2

Travis-ci предлагает новую контейнерную инфраструктуру, которая использует докер. Это может быть очень полезно, если вы пытаетесь устранить неполадки сборки travis-ci, воспроизводя ее локально. Это взято из документации Travis CI documentation.

Локальное устранение неполадок в образе Docker

Если у вас возникают проблемы с поиском точной проблемы в сборке, это часто помогает запустить сборку локально. Для этого вам необходимо использовать нашу контейнерную инфраструктуру (то есть иметь sudo: false в вашем .travis.yml) и знать, какой образ Docker вы используете в Travis CI.

Локальный запуск образа Docker на основе контейнера

  1. Загрузите и установите Docker Engine.
  2. Выберите изображение из Docker Hub. Если вы не используете язык изображения, выберите ci-ruby. Откройте терминал и запустите интерактивный сеанс Docker, используя URL-адрес изображения:

    docker run -it travisci/ubuntu-ruby:18.04 /bin/bash
    
  3. Переключитесь на пользователя travis:

    su - travis
    
  4. Клонируйте свой репозиторий git в папку / образа.
  5. Вручную установите любые зависимости.
  6. Вручную запустите команду сборки Travis CI.

Ответ 3

ОБНОВЛЕНИЕ: Теперь у меня есть полный ответ "под ключ", см. fooobar.com/questions/26318/.... Потребовалось всего 3 года, чтобы понять!

В соответствии с документацией Travis: https://github.com/travis-ci/travis-ci, существует множество проектов, которые сговорются о предоставлении веб-сервиса Travis CI, который мы знаем и любим. Следующее подмножество проектов, по-видимому, позволяет локально выполнять make test с использованием .travis.yml в вашем проекте:

Трэвис-сборка

travis-build создает скрипт сборки для каждой работы. Он берет конфигурацию из файла .travis.yml и создает скрипт bash который затем запускается в среде сборки travis-worker.

Travis-поваренные книги

travis-cookbooks содержит поваренные книги Chef, которые используются для обеспечения среды сборки.

Трэвис-работник

travis-worker отвечает за запуск сценариев сборки в чистой среде. Он направляет выходные данные журнала в travis-logs и передает обновления состояния (начало/завершение сборки) в travis-hub.

(Другие подпроекты отвечают за связь с GitHub, их веб-интерфейс, электронную почту и их API.)

Ответ 4

ОБНОВЛЕНИЕ: этот ответ больше не актуален

Вы можете попробовать https://github.com/jolicode/JoliCi

он использует docker, чтобы попытаться быть локальной заменой travis-ci. он должен поддерживать php, nodejs и ruby. если чего-то не хватает, вы можете сообщить об ошибке на странице проекта

Ответ 5

Аналогично Скотту МакЛауду, но также генерирует скрипт bash для запуска шагов из .travis.yml.

Локальное устранение неполадок в Docker с помощью сгенерированного сценария Bash

# choose 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 - 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
# to create ~/.travis
travis version
ln -s 'pwd' ~/.travis/travis-build
bundle install

# Create project dir, assuming your project is 'AUTHOR/PROJECT' on GitHub
cd ~/builds
mkdir AUTHOR
cd AUTHOR
git clone https://github.com/AUTHOR/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

Ответ 6

Используйте wwtd (что бы сделать travis) ruby ​​gem, чтобы запустить тесты на вашей локальной машине примерно так же, как они будут работать на travis.

Он воссоздает матрицу сборки и запустит каждую конфигурацию, идеально подходящую для настройки проверки работоспособности, прежде чем нажимать.

gem i wwtd
wwtd

Ответ 7

tl;dr Используйте изображение, указанное в https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image в сочетании с https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli.


ОБНОВЛЕНИЕ 2019-07-26

Раздел #troubleshooting-locally-in-a-docker-image больше не является частью документации; вот почему


  Хотя, это все еще в истории git: https://github.com/travis-ci/docs-travis-ci-com/pull/2193.

Найдите (довольно старые, не смогли найти новые) версии изображений по адресу: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661.



Я хотел проверить, почему один из тестов в моей сборке не прошел с ошибкой, которую я не могу получить локально.

Работал.

На самом деле работало использование изображения, указанного в Устранении неполадок локально на странице документа Doa Image. В моем случае это был travisci/ci-garnet:packer-1512502276-986baf0.

Мне удалось добавить travise compile, выполнив следующие действия, описанные на https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli.

[email protected]:~$ docker run --name travis-debug -dit travisci/ci-garnet:packer-1512502276-986baf0 /sbin/init
[email protected]:~$ docker images
REPOSITORY                       TAG                          IMAGE ID            CREATED             SIZE
travisci/ci-garnet               packer-1512502276-986baf0    6cbda6a950d3        11 months ago       10.2GB
[email protected]:~$ docker exec -it travis-debug bash -l
[email protected]:/# su - travis
[email protected]:~$ cd builds/
[email protected]:~/builds$ git clone https://github.com/travis-ci/travis-build
[email protected]:~/builds$ cd travis-build
[email protected]:~/builds/travis-build$ mkdir -p ~/.travis
[email protected]:~/builds/travis-build$ ln -s $PWD ~/.travis/travis-build
[email protected]:~/builds/travis-build$ gem install bundler
[email protected]:~/builds/travis-build$ bundle install --gemfile ~/.travis/travis-build/Gemfile
[email protected]:~/builds/travis-build$ bundler binstubs travis
[email protected]:~/builds/travis-build$ cd ..
[email protected]:~/builds$ git clone --depth=50 --branch=master https://github.com/DusanMadar/PySyncDroid.git DusanMadar/PySyncDroid
[email protected]:~/builds$ cd DusanMadar/PySyncDroid/
[email protected]:~/builds/DusanMadar/PySyncDroid$ ~/.travis/travis-build/bin/travis compile > ci.sh
[email protected]:~/builds/DusanMadar/PySyncDroid$ sed -i 's,--branch\\=\\\x27\\\x27,--branch\\=master,g' ci.sh
[email protected]:~/builds/DusanMadar/PySyncDroid$ bash ci.sh

Все из .travis.yml было выполнено должным образом (установлены зависимости, тесты выполнены,...).

Обратите внимание,, что перед запуском bash ci.sh мне пришлось изменить --branch\=\'\'\ на --branch\=master\ (см. команду от второго к последнему sed -i ...) в ci.sh.

Если это не сработает, команда ниже поможет определить целевой номер строки, и вы можете редактировать строку вручную.

[email protected]:~/builds/DusanMadar/PySyncDroid$ cat ci.sh | grep -in branch
840:    travis_cmd git\ clone\ --depth\=50\ --branch\=\'\'\ https://github.com/DusanMadar/PySyncDroid.git\ DusanMadar/PySyncDroid --echo --retry --timing
889:export TRAVIS_BRANCH=''
899:export TRAVIS_PULL_REQUEST_BRANCH=''
[email protected]:~/builds/DusanMadar/PySyncDroid$

Не работает.

Получил ответ на этот вопрос, но не сделал найдите изображение (travis-ci-garnet-trusty-1512502259-986baf0), упомянутое instance на https://hub.docker.com/u/travisci/.

рабочая версия сборки указывает на travis-ci/worker commit, а travis-worker-install ссылается на quay.io/travisci/ как реестр изображений. Вот я и попробовал.

[email protected]:~$ docker run -it -u travis quay.io/travisci/travis-python /bin/bash
[email protected]:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:   precise
[email protected]:/$
[email protected]:~$ docker images 
REPOSITORY                       TAG                          IMAGE ID            CREATED             SIZE
quay.io/travisci/travis-python   latest                       753a216d776c        3 years ago         5.36GB

Определенно не верный (Ubuntu 14.04) и не маленький тоже.

Ответ 8

Я не уверен, что было вашей первоначальной причиной для запуска Travis на месте, если вы просто хотели играть с ним, а затем прекратите читать здесь, поскольку это не имеет отношения к вам.

Если у вас уже есть опыт работы с размещенным Travis, и вы хотите получить тот же опыт в своем собственном центре данных, читайте дальше.

Так как декабрь 2014 Travis CI предлагает внутреннюю версию Enterprise.

http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/

Ценообразование также является частью статьи:

Лицензирование выполняется на места, где каждая лицензия включает 20 пользователей. Цена начинается с 6000 долларов США за лицензию, которая включает 20 пользователей и 5 одновременных сборок. Там есть превосходный вариант с неограниченной сборкой за $8500.

Ответ 9

Вы можете попробовать Trevor, который использует Docker для запуска вашей сборки Travis.

Из его описания:

Мне часто нужно запускать тесты для нескольких версий Node.js. Но я не хочу переключать версии вручную с помощью n/nvm или передавать код в Travis CI только для запуска тестов.

Вот почему я создал Тревор. Он читает .travis.yml и запускает тесты во всех запрошенных вами версиях, как и Travis CI. Теперь вы можете проверить перед push и сохранить свою историю git в чистоте.

Ответ 10

Возможен SSH к среде Travis CI через хост bounce. Эта функция не встроена в Travis CI, но ее можно реализовать с помощью следующих шагов.

  1. На хосте bounce создайте пользователя travis и убедитесь, что вы можете подключиться к нему по SSH.
  2. Поместите эти строки в раздел script: вашего .travis.yml (например, в конце).

    - 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
    

    Where [TG44] is the IP/host of your bounce host, and [TG45] is your defined SSH password. These variables can be added as encrypted variables.

  3. Нажмите изменения. Вы должны иметь возможность установить SSH-соединение с вашим хостом bounce.

Источник: Оболочка в среду сборки Travis CI.


Вот полный пример:

# use the new container infrastructure
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

Смотрите: c-mart/travis-shell на GitHub.


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