- В Ya.Cloud создайте новый инстанс (4CPU4RAM) на основе образа
jetbrains/teamcity-server - Дождитесь запуска teamcity, выполните первоначальную настройку
- Создайте ещё один инстанс(2CPU4RAM) на основе образа
jetbrains/teamcity-agent. Пропишите к нему переменную окруженияSERVER_URL: "http://<teamcity_url>:8111" - Авторизуйте агент
- Сделайте fork репозитория
- Создать VM (2CPU4RAM) и запустить playbook
Подготовлена ифраструктура в яндексе, создано 3ВМ.
Сделан форк.
Доступ к TeamCity по порту 8111, к Nexus 8081.
- Создайте новый проект в teamcity на основе fork
- Сделайте autodetect конфигурации
- Сохраните необходимые шаги, запустите первую сборку master'a
- Поменяйте условия сборки: если сборка по ветке
master, то должен происходитmvn clean deploy, иначеmvn clean test - Для deploy будет необходимо загрузить settings.xml в набор конфигураций maven у teamcity, предварительно записав туда креды для подключения к nexus
- В pom.xml необходимо поменять ссылки на репозиторий и nexus
- Запустите сборку по master, убедитесь что всё прошло успешно, артефакт появился в nexus
- Мигрируйте
build configurationв репозиторий - Создайте отдельную ветку
feature/add_replyв репозитории - Напишите новый метод для класса Welcomer: метод должен возвращать произвольную реплику, содержащую слово
hunter - Дополните тест для нового метода на поиск слова
hunterв новой реплике - Сделайте push всех изменений в новую ветку в репозиторий
- Убедитесь что сборка самостоятельно запустилась, тесты прошли успешно
- Внесите изменения из произвольной ветки
feature/add_replyвmasterчерезMerge - Убедитесь, что нет собранного артефакта в сборке по ветке
master - Настройте конфигурацию так, чтобы она собирала
.jarв артефакты сборки - Проведите повторную сборку мастера, убедитесь, что сбора прошла успешно и артефакты собраны
- Проверьте, что конфигурация в репозитории содержит все настройки конфигурации из teamcity
- В ответ предоставьте ссылку на репозиторий
Загружен SSH ключ (публичный) для работы с репозиторием. Выполнена настройка Versioned Settings проекта Netology для выгрузки конфигурации. Скриншот настроек
Для решения п.4 было создано два билдстепа с разными условиями: teamcity.build.branch does not equal master и teamcity.build.branch equals master. В итоге выполняется, либо первый с mvn clean deploy, либо второй с mvn clean deploy. Файл конфигурации maven settings.xml в котором был изменены только nexus id.
Файл конфигурации проекта maven pom.xml, в котором изменен Nexus ip и id (изначально было <version>0.0.3</version>).
При первом запуске сборки (по master) все прошло успешно, артефакт выложен в Nexus, версия 0.0.2. Скриншот.
Согласно заданию, была создана доп ветка feature/add_reply в репозитории https://github.com/AirDRoN-lab/example-teamcity. Дописан метод для класса Welcomer и тест для него (см. ниже):
public String sayHunter(){
return "Mmm, hunter Engineering is a global leader in wheel alignment machines, wheel balancers, tire changers, brake service equipment";
}@Test
public void welcomerSaysHunterCheck(){
assertThat(welcomer.sayHunter(), containsString("hunter"));
}Изменения выложены в репозиторий, сборка завпустилась автоматически по ветке feature/add_reply, пройдены тесты. Но в nexus артефакт не попал, т.к. необходимо изменить <version> в pom.xml.
После изменения pom.xml <version>0.0.3</version> артефакт в Nexus появился (версия 0.0.3).
Итория всех проведенных сборок в TC на скриншоте.
Cсылка на репозиторий https://github.com/AirDRoN-lab/example-teamcity
файл1 и файл2 конфигурации Teamcity. Но конфигурация по факту одна, так как условие билдстепа было написано в начале.