Bamboo – билд-сервер и Сontinuous Integration tool, аналогичен TeamCity, но так как разработчик – Atlassian – то в нём реализована тесная интеграция с Jira и другими продуктами Atlassian.
Именно поэтому на новом проекте решили попробовать мигрировать на Bamboo вместо TeamCity.
Недостаток – он платный, но для знакомства доступна 30-ти дневная Trial лицензия, а годовая лицензия на 10 локальных билд-агентов обойдётся всего в $10 за год (правда, уже с 1-м агентом на другом хосте – $800).
Домашняя страница проекта – тут>>>.Установка выполняется на CentOS 6.6 + 10.0.17-MariaDB.
Создаём пользователя:
# useradd bamboo
# passwd bamboo Changing password for user bamboo. New password: BAD PASSWORD: it is too short BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully.
Переключаемся на него:
# su -l bamboo
Создаём директорию для установки:
$ mkdir bamboo
Создаём директорию для Java:
$ mkdir java
$ cd java/
Проверяем архитектуру:
$ uname -i i386
С сайта http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html качаем подходящую сборку JDK. Так как там необходимо принять условия лицензии – качаем с другой машины браузером, а потом – загружаем на сервер.
Распаковываем:
$ tar xfp jdk-7u75-linux-i586.tar.gz
$ ls -l total 140056 drwxr-xr-x. 8 bamboo bamboo 4096 Dec 19 04:32 jdk1.7.0_75
Редактируем .bashrc
(или .profile
или другой файл, в котором у вас прописаны переменные окружения) и добавляем JAVA_HOME
:
$ echo "export JAVA_HOME=$HOME/java/jdk1.7.0_75" >> ~/.bashrc
Перечитаем файл:
$ . ~/.bashrc
$ echo $JAVA_HOME /home/bamboo/java/jdk1.7.0_75
Проверяем:
$ java -version java version "1.7.0_75" OpenJDK Runtime Environment (rhel-2.5.4.0.el6_6-i386 u75-b13) OpenJDK Client VM (build 24.75-b04, mixed mode, sharing)
Устанавливаем MariaDB – подробно описано тут>>>.
Создаём базу:
# mysql -u root -p
MariaDB [(none)]> create database bamboo character set utf8 collate utf8_general_ci; Query OK, 1 row affected (0.00 sec)
Пользователя:
MariaDB [(none)]> grant all on bamboo.* to 'bamboo'@'localhost' identified by 'password'; Query OK, 0 rows affected (0.00 sec)
Приступаем к установке Bamboo.
Со страницы https://www.atlassian.com/software/bamboo/download загружаем нужный релиз:
$ cd ../bamboo/
$ wget https://www.atlassian.com/software/bamboo/downloads/binary/atlassian-bamboo-5.7.2.tar.gz
Распаковываем:
$ tar xfp atlassian-bamboo-5.7.2.tar.gz
Проверяем:
$ ls -l total 181396 drwxr-xr-x. 14 bamboo bamboo 4096 Dec 2 09:12 atlassian-bamboo-5.7.2
$ ls -l atlassian-bamboo-5.7.2 total 96 drwxr-xr-x. 38 bamboo bamboo 4096 Dec 2 09:12 atlassian-bamboo -rwxr-xr-x. 1 bamboo bamboo 1375 Dec 2 09:10 bamboo.sh drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 bin drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 conf drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 lib drwxr-xr-x. 2 bamboo bamboo 40960 Dec 2 09:12 licenses drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 logs -rw-r--r--. 1 bamboo bamboo 1228 Dec 2 09:10 NOTICE -rw-r--r--. 1 bamboo bamboo 3801 Dec 2 09:10 README.html -rw-r--r--. 1 bamboo bamboo 2034 Dec 2 09:10 README.txt drwxr-xr-x. 6 bamboo bamboo 4096 Dec 2 09:12 scripts drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 temp drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 tomcat-docs drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 webapps drwxr-xr-x. 2 bamboo bamboo 4096 Dec 2 09:12 work
Создаём директорию для данных Bamboo:
$ mkdir bamboo_home
Редактируем файл настроек Bamboo:
$ vim atlassian-bamboo-5.7.2/atlassian-bamboo/WEB-INF/classes/bamboo-init.properties
И устанавливаем строку:
bamboo.home=/home/bamboo/bamboo/bamboo_home
Переходим на страницу http://dev.mysql.com/downloads/connector/j/, логинимся (Oracle, надеюсь – тебе икнулось), загружаем нужный драйвер на локальную машину, распаковываем, и копируем mysql-connector-java-5.1.34-bin.jar
на Bamboo сервер в каталог ~/bamboo/atlassian-bamboo-5.7.2/lib/
:
$ ls -l atlassian-bamboo-5.7.2/lib/ | grep sql -rw-r--r--. 1 bamboo bamboo 643727 Dec 2 09:10 hsqldb-1.8.0.7.jar -rw-r--r--. 1 bamboo bamboo 960374 Oct 17 09:05 mysql-connector-java-5.1.34-bin.jar -rw-r--r--. 1 bamboo bamboo 472831 Dec 2 09:10 postgresql-8.4-701.jdbc3.jar
Запускаем Bamboo:
$ ./atlassian-bamboo-5.7.2/bin/startup.sh Bamboo Standalone Edition Version : 5.7.2 Detecting JVM PermGen support... PermGen switch is supported. Setting to 256m ... Using CATALINA_BASE: /home/bamboo/bamboo/atlassian-bamboo-5.7.2 Using CATALINA_HOME: /home/bamboo/bamboo/atlassian-bamboo-5.7.2 Using CATALINA_TMPDIR: /home/bamboo/bamboo/atlassian-bamboo-5.7.2/temp Using JRE_HOME: /home/bamboo/java/jdk1.7.0_75 Using CLASSPATH: /home/bamboo/bamboo/atlassian-bamboo-5.7.2/bin/bootstrap.jar:/home/bamboo/bamboo/atlassian-bamboo-5.7.2/bin/tomcat-juli.jar
По умолчанию Bamboo запускает Tomcat на порту 8085
:
$ netstat -anp | grep java ... tcp 0 0 :::8085 :::* LISTEN 1681/java
$ cat atlassian-bamboo-5.7.2/conf/server.xml | grep port <Server port="8007" shutdown="SHUTDOWN"> <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html --> <Connector port="8085"
Открываем порт на фаерволе:
# iptables -I INPUT 2 -p tcp --dport 8085 -j ACCEPT
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Заходим на http://bamboo.domain.local:8085
Что бы зарегистрировать бесплатную лицензию – переходим на страницу https://id.atlassian.com/login?continue=https%3A%2F%2Fmy.atlassian.com&application=mac.
Регистрируемся, и переходим в New Evaluation License:
В списке выбираем Bamboo (server):
Со страницы вашего Bamboo копируем Server ID:
При желании – заполняем простую форму:
Копируем лицензионный ключ:
И добавляем лицензию в вашу установку Bamboo:
Если нажать Express Installation то, по аналогии с TeamCity, предполагаю что будет использоваться какая-то локальная база типа SQLite или HSQLDB.Так как мы используем MariaDB – то выбираем Custom.
В первом окне можно ничего не менять:
В следующем окне выбираем MySQL (MariaDB):
В поле Database URL добавляем &useUnicode=true&characterEncoding=utf8
, указываем пользователя и пароль:
Ждём, пока будут созданы все таблицы:
Оставляем без изменений:
Создаём администратора:
Готово:
Последний шаг – создадим init
-файл для управления.
В файл /etc/init.d/bamboo
записываем:
#!/bin/sh set -e ### BEGIN INIT INFO # Provides: bamboo # Required-Start: $local_fs $remote_fs $network $time # Required-Stop: $local_fs $remote_fs $network $time # Should-Start: $syslog # Should-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Atlassian Bamboo Server ### END INIT INFO # INIT Script ###################################### APP=bamboo USER=bamboo BASE=/home/bamboo/bamboo/atlassian-bamboo-5.7.2 case "$1" in # Start command start) echo "Starting $APP" /bin/su - $USER -c "export BAMBOO_HOME=${BAMBOO_HOME}; $BASE/bin/startup.sh &> /dev/null" ;; # Stop command stop) echo "Stopping $APP" /bin/su - $USER -c "$BASE/bin/shutdown.sh &> /dev/null" echo "$APP stopped successfully" ;; # Restart command restart) $0 stop sleep 5 $0 start ;; *) echo "Usage: /etc/init.d/$APP {start|restart|stop}" exit 1 ;; esac exit 0
Устанавливаем права на выполнение:
# chmod +x /etc/init.d/bamboo
Проверяем:
# service bamboo stop Stopping bamboo bamboo stopped successfully
# service bamboo start Starting bamboo
Добавляем в автозапуск:
# chkconfig --add bamboo
# chkconfig --list bamboo bamboo 0:off 1:off 2:on 3:on 4:on 5:on 6:off
На этом всё.