Используемые термины: Teamcity , CI/CD , Ubuntu .
В нашей инструкции мы выполним развертывание Teamcity 2020.2.2 на Linux Ubuntu 20.04.
Системные требования
Подготовка системы
Установка Java
Установка MariaDB
Установка Teamcity
Настройка автоматического запуска
Установка агента
Читайте также
Требования к Teamcity не высокие, однако, необходимо обратить внимание на требования к программной части.
В основном, требования предъявляются к агентам.
Teamcity является приложение Java и запускается на веб-сервере Tomcat. Полный список программных требований:
Для работы Teamcity необходим сервер баз данных. Поддерживается достаточно большое количество СУБД:
Для установки свежих пакетов, обновляем их список в репозиториях:
apt-get update
Задаем часовой пояс, например:
timedatectl set-timezone Europe/Moscow
* где Europe/Moscow — московское время. Список всех возможных зон смотрим командой timedatectl list-timezones .
Устанавливаем службу для автоматической синхронизации времени:
apt-get install chrony
А также разрешаем его автозапуск:
systemctl enable chrony
Если в нашем Ubuntu используется брандмауэр (по умолчанию только разрешающие правила), необходимо открыть порт 8111:
iptables -A INPUT -p tcp —dport 8111 -j ACCEPT
* 8111 — порт по умолчанию, на котором запускается Teamcity. При смене этого номера, нужно также добавить его в правила firewall.
Сохраняем правила с помощью утилиты iptables-persistent:
apt-get install iptables-persistent
Если в процессе установки мы отказались сохранять правила, выполняем команду:
netfilter-persistent save
Для работы Teamcity нужен Java. Вы воспользуемся пакетом openjdk. Для его установки вводим:
apt-get install default-jdk
* будет установлена последняя версия, максимально совместимая с используемой версией операционной системы Ubuntu.
Если в системе окажется несколько версий java, выберем последнюю. Для этого вводим команду:
update-alternatives —config java
… и выбираем в списке соответствующий вариант.
Если мы увидим что-то на подобие:
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-openjdk-amd64/bin/java
Nothing to configure.
… то значит, что у нас только одна версия Java — продолжаем настройку сервера.
Посмотрим используемую версию java:
java -version
Мы должны увидеть что-то на подобие:
openjdk version «11.0.10» 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
Java установлен.
Как было сказано выше, для работы Teamcity нужна база данных. Мы воспользуемся MariaDB, которая является форком MySQL.
Для ее установки вводим:
apt-get install mariadb-server
Разрешим автозапуск сервера:
systemctl enable mariadb
Зададим пароль для суперпользователя:
mysqladmin -u root password
Подключимся к командной строке SQL:
mysql -uroot -p
Создаем базу данных для нашего приложения:
> CREATE DATABASE teamcity DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* данной командой мы создадим базу teamcity .
Создадим пользователя для доступа к базе:
> GRANT ALL PRIVILEGES ON teamcity.* TO teamcity@localhost IDENTIFIED BY ‘teamcity123’;
* где:
Выходим из командной оболочки SQL:
> quit
Создадим каталог, где будет размещаться наше приложение:
mkdir /opt/teamcity
Переходим на страницу загрузки Teamcity — начнется загрузка файла — прерываем ее. Копируем ссылку на скачивание архива:
С помощью нашей ссылке, скачиваем архив на компьютер:
wget -O TeamCity.tar.gz https://download.jetbrains.com/teamcity/TeamCity-2020.2.2.tar.gz?_ga=2.175301669.60879802.1613028860-1795692882.1612763354
* в данном примере мы указали опцию -O , чтобы скачанный архив был назван TeamCity.tar.gz .
Распаковываем архив
tar zxf TeamCity.tar.gz -C /opt/teamcity —strip-components 1
* этой командой мы распакуем содержимое архива TeamCity.tar.gz в каталог /opt/teamcity .
Запустим необходимые сервисы для работы приложения:
/opt/teamcity/bin/runAll.sh start
Пробуем открыть браузер и перейти по ссылке http://<IP-адрес нашего сервера>:8111 — мы должны увидеть стартовую страницу установки Teamcity. В форму для каталога данных вводим путь /opt/teamcity/.BuildServer :
После кликаем Proceed . Откроется страница выбора используемой СУБД — мы выбираем MySQL :
Для работы MySQL необходим дополнительный драйвер — просто нажимаем по Download JDBC driver :
Заполняем поля для подключения к базе данных:
* в нашем примере мы создали базу teamcity ; для подключения мы указали пользователя teamcity и пароль teamcity123 .
Нажимаем Proceed — начнется установка и настройка приложения. Ждем:
На следующей странице принимаем лицензионное соглашение и кликаем Continue :
Создаем нового пользователя с правами администратора:
* в данном примере мы создадим пользователя admin .
Откроется стартовая страница Teamcity:
Приложение установлено и работает.
На предыдущем шаге мы смогли запустить приложения, но сделали это вручную. После перезагрузки компьютера, оно не будет стартовать автоматически. Создадим службу в виде юнита в systemd.
Создаем пользователя, от которого будет работать наше приложение:
useradd teamcity -U -s /bin/false -d /opt/teamcity -m
* мы создадим пользователя teamcity с опциями:
Для каталога с нашим приложением установим владельца — нашего созданного пользователя:
chown -R teamcity:teamcity /opt/teamcity
Создаем юнит в systemd:
vi /etc/systemd/system/teamcity.service
[Unit]
Description=Teamcity Service
After=network.target
[Service]
Type=forking
User=teamcity
Group=teamcity
ExecStart=/opt/teamcity/bin/runAll.sh start
ExecStop=/opt/teamcity/bin/runAll.sh stop
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
* где:
Перечитаем конфигурацию systemd:
systemctl daemon-reload
Можно запустить наш сервис и разрешить его автозапуск:
systemctl start teamcity
systemctl enable teamcity
Проверить состояние службы можно командой:
systemctl status teamcity
После пробуем открыть приложение в браузере.
Для сборки кода на удаленной системе, нам необходимо установить на нее агента Teamcity. Мы рассмотрим инструкцию для его развертывания на Linux — Ubuntu, Debian, CentOS.
Сначала установим утилиты, которые нам понадобятся для выполнения установки.
а) Для Ubuntu / Debian:
apt-get install wget unzip default-jdk
б) Для CentOS:
yum install wget unzip java-11-openjdk-devel
* где:
Скачиваем архив с агентом с нашего сервера:
wget http://192.168.1.15:8111/update/buildAgent.zip
* где 192.168.1.15 — это адрес нашего сервера.
* если мы получим сообщение об ошибке, что команда wget не найдена, необходимо установить одноименную утилиту — yum install wget или apt-get install wget .
Распакуем архив в каталог /opt/teamcity-agent :
unzip buildAgent.zip -d /opt/teamcity-agent
Копируем шаблонный файл с конфигурацией:
cp /opt/teamcity-agent/conf/buildAgent.dist.properties /opt/teamcity-agent/conf/buildAgent.properties
Агент готов к работе. Теперь создадим юнит в systemd для его запуска:
vi /etc/systemd/system/teamcity-agent.service
[Unit]
Description=TeamCity Build Agent
After=network.target
[Service]
Type=forking
PIDFile=/opt/teamcity-agent/logs/buildAgent.pid
ExecStart=/opt/teamcity-agent/bin/agent.sh start
ExecStop=/opt/teamcity-agent/bin/agent.sh stop
[Install]
WantedBy=multi-user.target
Перечитываем конфигурацию systemd:
systemctl daemon-reload
Разрешаем автозапуск агента teamcity и стартуем его:
systemctl enable teamcity-agent —now
Проверить состояние выполнения можно командой:
systemctl status teamcity-agent
По умолчанию агент работает на порту 9090. Если необходимо поменять номер, открываем конфигурационный файл:
vi /opt/teamcity-agent/conf/buildAgent.properties
Вставляем строку:
ownPort=9088
* в данном примере мы хотим запустить агента на порту 9088 .
Перезагружаем сервис:
systemctl restart teamcity-agent
Вам могут быть интересны следующие инструкции:
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…