Являются ли мои Дженкинс строит проверки из моего SCM?

Пытаясь понять это CI вещь, поэтому я скачал Дженкинс в моем производственном сервере …

1. Установлен ли Jenkins (или любая другая система CI) на производственном сервере, или у меня должен быть отдельный сервер для сборок Jenkins?
Если Дженкинс находится на другом сервере, как я могу интегрировать сборки в свой рабочий код? Или эта вещь CI не имеет ничего общего с развертыванием?

Затем я создал ключ SSH в /var/lib/jenkins/.ssh, добавленный в мой Bitbucket (Гит) хранилище в качестве ключа развертывания …

2. Это правильный подход?

…И установите URL хранилища git@bitbucket.org:... с jenkins учетные данные пользователя в плагине Git в настройках проекта.
Пока все хорошо, моя сборка извлекает проект из рабочей области Jenkins, затем я заметил, что каждая сборка, которую он запускает, является проверкой и для каждой проверки, как Композитор активный проект, мой vendors/ каталога там нет, поэтому у меня нет autoload.php файл, который phpunit.xml используется в качестве начальной загрузки для загрузки классов и запуска тестов. Так что кроме phpunit как одна из команд сборки оболочки, которую я добавил composer init,

3. Это правильно? Должен ли я бежать composer init на каждом билде?

Главный вопрос, возможно, таков: мои сборки построены из космоса с нуля? Должен ли я оформить заказ и запустить composer install и какие сценарии мой проект должен выполнять каждый раз (каждая сборка)?

Спасибо!

1

Решение

  1. Установлен ли Jenkins (или любая другая система CI) на рабочем сервере или у меня должен быть отдельный сервер для сборок Jenkins? Если Дженкинс находится на другом сервере, как я могу интегрировать сборки в свой рабочий код? Или эта вещь CI не имеет ничего общего с развертыванием?

Затем я создал ключ SSH в /var/lib/jenkins/.ssh, добавленный в мой репозиторий Bitbucket> (Git) в качестве ключа развертывания …

  1. Это правильный подход?

Правильно. У меня есть несколько серверов, настроенных таким образом. В ближайшее время хочу выяснить, можно ли будет использовать Плагин SSH Credentials хранить мои учетные данные там, чтобы мне не пришлось заботиться о разрешениях файловой системы для этого ключа.

  1. Это правильно? Должен ли я запускать composer init при каждой сборке?

Главный вопрос, возможно, таков: мои сборки построены из космоса с нуля? Должен ли я оформить заказ и запустить установку composer и какие сценарии должен выполнять мой проект, чтобы он работал каждый раз (при каждой сборке)?

Это зависит от ваших требований. У вас может быть несколько сборок или параметризация, которую вы строите, для поддержки различного поведения. Например, у меня есть сборки Laravel, которые в зависимости от параметра среды могут выполнять дополнительное тестирование с помощью Selenium или просто запускать phpunit.

У меня обычно есть два проекта в Jenkins для каждого приложения PHP. Тот, который извлекает код из git, очищает любые остатки других сборок в рабочей области и вызывает Laravel Envoy для сборки проекта. То, что он в основном делает, это вызов composer install с некоторыми дополнительными параметрами, и вызовите подпрограммы миграции и заполнения базы данных, чтобы подготовить приложение к тестированию.

Другая работа запускается, когда я продвигаю (с плагином Jenkins Promoted Builds) сборку, и она копирует (с Плагин копирования артефактов) рабочее пространство, созданное во время сборки и уже протестированное, и развертывание его с помощью scp в папке на сервере QA. Затем он обновляет некоторые символические ссылки и, наконец, готов к тестированию.

Со временем и дополнительными требованиями от разработчиков и других команд вы познакомитесь со многими другими плагинами, такими как Email-ext Plug-in, отправлять пользовательские уведомления и включать дополнительную информацию о сборке.

0

Другие решения

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

Дженкинс может отключать другие службы с помощью сценариев, поэтому удаление того же кота с запущенным Дженкинсом, для которого вы развертываете проект, было бы … неудобно.

Я падаю в лагерь, который одобряет множество рабочих мест Дженкинса, которые связаны друг с другом. Одна работа строит. Еще тесты. и третий развертывает. Таким образом, вы точно знаете, какая работа проблематична. Вы также можете посмотреть на время выполнения задания и получить более четкое представление о том, что занимает так много времени (это развертывание? Это модульные тесты?), И устранить проблемы с более высоким POV.

У меня есть презентация Jenkins Best Practices, которую я дал в Boise Code Camp 2015, которая доступна здесь:
http://lanyrd.com/2015/boise-code-camp/sdkggb/

0