bamboo что это за программа
Выполняйте сборку, тестирование и развертывание уверенно
Bamboo Data Center — это конвейер непрерывной поставки, обеспечивающий отказоустойчивость, надежность и масштабируемость для команд любого размера.
Непрерывная поставка ПО, от кода до развертывания
Автоматизация рабочих процессов
Раскройте возможности agile-разработки с помощью автоматизированных рабочих процессов, от написания кода до развертывания.
Встроенное аварийное восстановление
Обеспечивайте непрерывную работу команды благодаря отказоустойчивым сборкам и высокой доступности.
Масштабируйте с уверенностью
Наращивайте ресурсы и поддерживайте производительность по мере роста организации.
Bamboo, Bitbucket и Jira Software полностью интегрированы и позволяют нам отслеживать весь процесс, от получения запроса на функцию до ее развертывания.
—СКОТТ КАРПЕНТЕР, руководитель рабочей программы
Важные интеграции
Процесс разработки
Подключите Bamboo к Bitbucket и Jira для удобного использования при любом типе развертывания.
Непрерывная поставка
Легко выпускайте релизы и доставляйте конечный продукт с помощью Docker и AWS CodeDeploy.
Расследование инцидентов
Интеграция с Opsgenie позволит вашим командам реагирования быстро расследовать инциденты.
Простые тарифные планы, подходящие командам любых размеров
Data Center
Полный контроль над средой
Высокая доступность на основе функции «холодного» резервирования
Лицензия на один год и обслуживание
Оптимизировано для отказоустойчивости сборок
Приоритетная поддержка в комплекте
Начало работы с Bamboo Data Center
Сборка, тест, развертывание
Профессиональные команды выбирают Bamboo Server для непрерывной интеграции, развертывания и поставки ПО
Непрерывная поставка ПО, от кода до развертывания
Объедините автоматизированные сборки, тесты и релизы в единый жизненный цикл
Сборка
Уделяйте внимание коду и положитесь на Bamboo в качестве сервера непрерывной интеграции и сборки. Создавайте многоступенчатые планы сборки, настраивайте триггеры для запуска сборок по результатам коммитов и выделяйте агентов для самых важных сборок и развертываний.
Тестирование — это важнейший этап непрерывной интеграции. Запускайте в Bamboo автоматизированные тесты, чтобы тщательно проверить каждое изменение. Параллельные автоматизированные тесты раскрывают всю мощь agile-разработки и помогают найти баги проще и быстрее.
Развертывание
Bamboo предлагает первоклассную поддержку для непрерывной поставки ПО. Проекты развертывания автоматизируют монотонный процесс релизов в каждую из сред, позволяя при этом контролировать происходящее с помощью различных прав доступа для каждой среды.
Интегрируйте
Bamboo отличается самой эффективной интеграцией с Jira Software, Bitbucket и Fisheye. Расширьте возможности конвейера непрерывной интеграции, выбрав нужные приложения более чем из 150 вариантов в Atlassian Marketplace или создав собственное приложение.
Bamboo или Jenkins
Посетите эту страницу, чтобы узнать подробнее о причинах, по которым стоит перейти на Bamboo
Bamboo, Bitbucket и Jira Software полностью интегрированы и позволяют нам отслеживать весь процесс, от получения запроса на функцию до ее развертывания.
— СКОТТ КАРПЕНТЕР, РУКОВОДИТЕЛЬ РАБОЧЕЙ ПРОГРАММЫ
Вооружаем команды по выпуску продуктов компаний любых размеров по всему миру
Ускорьте свой конвейер релизов
Уровни цен на Bamboo рассчитываются по количеству удаленных агентов, а не рабочих мест лицензии. Чем больше агентов, тем больше процессов могут работать одновременно (это могут быть как разные этапы одной сборки, так и разные сборки).
Небольшие команды
Растущие команды
Хотите запускать сборки в облаке? Зарегистрируйтесь для работы с Bitbucket Pipelines
Создавайте качественные продукты! Делайте это быстро!
Улучшенные процессы непрерывной интеграции/CD
Команды по выпуску ПО различных направлений обновляют свои конвейеры непрерывной интеграции и поставки ПО, используя Bamboo. За счет легкого импорта сборок из популярных решений с открытым исходным кодом и встроенной поддержки Git, Hg и SVN вы станете чемпионами по части сборок и развертываний.
Dev + Ops
Мы знакомы с принципом DevOps и обо всём позаботились! Настройте сборки непрерывной интеграции как обычно и отправляйте артефакты в проекты разработки. Комбинируйте скрипты собственной разработки, smoke-тесты и технологии сторонних разработчиков, чтобы определить последовательность развертывания для каждой среды. Bamboo поддерживает вас на протяжении всего пути, от непрерывной интеграции к развертыванию и поставке.
Инструмент для импорта Jenkins
Переходя с Jenkins на Bamboo, команды могут импортировать в Bamboo свои сборки, резко сократив время перехода. У инженеров по сборке есть занятия поинтересней, чем клик за кликом монотонно воссоздавать настройки.
Сравнение возможностей Jenkins и Bamboo см. по ссылке.
Непрерывное обучение
Разнообразные учебные материалы, рекомендации и ресурсы поддержки — это помощь, которая всегда под рукой. Ищите информацию в руководстве по быстрому старту, блоге Atlassian, справочной документации и ответах Atlassian. К тому же лицензия Bamboo включает доступ к нашей легендарной команде поддержки. Отправьте заявку, и помощь не заставит себя долго ждать!
Полная поддержка SCM
Помимо Git, Bamboo интегрируется с SVN, Mercurial, Perforce, CVS, а также с репозиториями в Bitbucket и Fisheye. Решение связывает сборки с изменениями кода в репозиториях. Сообщения о коммитах, их авторы, ссылки и даты отображаются в результатах каждой сборки, позволяя одним щелчком мыши перейти к просмотру репозитория с последними изменениями, их историей и всем кодом.
Bamboo устраняет проблемы, которые возникают при попытке объединить непрерывную интеграцию (CI) и распределенные системы управления версиями, такие как Git и Mercurial. Новые ветки автоматически приводятся к той же схеме CI, что и главная ветка, и можно настроить автоматическое слияние любых двух веток в репозиторий перед выполнением каждого теста. См. наши подробные руководства по работе с Git.
Bamboo: установка и настройка на CentOS + MySQL/MariaDB
Bamboo – билд-сервер и Сontinuous Integration tool, аналогичен TeamCity, но так как разработчик – Atlassian – то в нём реализована тесная интеграция с Jira и другими продуктами Atlassian.
Именно поэтому на новом проекте решили попробовать мигрировать на Bamboo вместо TeamCity.
Домашняя страница проекта – тут>>>. Установка выполняется на CentOS 6.6 + 10.0.17-MariaDB.
Переключаемся на него:
Создаём директорию для установки:
Создаём директорию для Java:
С сайта http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html качаем подходящую сборку JDK. Так как там необходимо принять условия лицензии – качаем с другой машины браузером, а потом – загружаем на сервер.
Устанавливаем MariaDB – подробно описано тут>>>.
Приступаем к установке Bamboo.
Создаём директорию для данных Bamboo:
Редактируем файл настроек Bamboo:
И устанавливаем строку:
Переходим на страницу http://dev.mysql.com/downloads/connector/j/, логинимся (Oracle, надеюсь – тебе икнулось), загружаем нужный драйвер на локальную машину, распаковываем, и копируем mysql-connector-java-5.1.34-bin.jar на Bamboo сервер в каталог
Запускаем Bamboo:
По умолчанию Bamboo запускает Tomcat на порту 8085 :
Открываем порт на фаерволе:
Заходим на http://bamboo.domain.local:8085
Регистрируемся, и переходим в New Evaluation License:
В списке выбираем Bamboo (server):
Со страницы вашего Bamboo копируем Server ID:
При желании – заполняем простую форму:
Копируем лицензионный ключ:
И добавляем лицензию в вашу установку Bamboo:
Если нажать Express Installation то, по аналогии с TeamCity, предполагаю что будет использоваться какая-то локальная база типа SQLite или HSQLDB.Так как мы используем MariaDB – то выбираем Custom.
В первом окне можно ничего не менять:
В следующем окне выбираем MySQL (MariaDB):
Ждём, пока будут созданы все таблицы:
Оставляем без изменений:
CI/CD с помощью AWS и Bamboo
Наша команда состоит из одного разработчика и одного DevOps инженера. Я отвечаю за разворачивание приложения в кластере Amazon ECS. В качестве CI/CD сервера я использую Bamboo. В этой статье я подробно расскажу, как я осуществляю разворачивание приложения в dev-среде.
Сборка Docker образа
Здесь я выполняю следующие шаги:
Шаг 1: Установка и настройка Docker
Сначала я обновляю сервер, на котором установлен Bamboo, устанавливаю необходимые пакеты и настраиваю репозиторий Docker. Здесь надо отметить, что Bamboo я установил на операционной системе CentOS 7. Информацию по установке docker на других операционных системах можно найти на сайте www.docker.com.
Затем я устанавливаю приложение Docker и запускаю сервис:
Потом добавляю пользователя bamboo в группу Docker:
Если после запуска этих команд docker отвечает сообщением «Hello from Docker!», то это означает, что моя установка работает правильно.
Шаг 2. Настройка артефактов в Bamboo
Разработка приложения ведется на Grails. При компиляции приложения создается файл с расширением war. Данный файл, в терминологии Bamboo, является артефактом. Настроим Bamboo для использования данного файла в последующих задачах. Для этого я перехожу во вкладку Tasks:
И настраиваю задачу Grails, как показано ниже:
Мы видим, что Grails сначала очищает папку сборки, затем запускает тесты и, наконец, создает war-файл для dev среды.
После этого я нажимаю вкладку Artifacts и кнопку Create artifact:
Я задаю артефакт, как показано ниже:
Grails помещает war-файл в каталог build/libs. Поставлю галочку для параметра Shared, так как этот артефакт мне понадобится позже.
Теперь я создаю проект развертывания (deployment project) и указываю артефакт для использования в своем плане сборки:
Ещё я настраиваю задачу Artifact download в проекте развертывания:
Таким образом, Bamboo теперь настроен на использование war-файла.
Шаг 3. Настройка репозитария Amazon ECR
Amazon ECR – это сервис хранения Docker образов, а также управления ими. Для настройки необходимо открыть консоль AWS и выбрать ECR:
Создав репозитарий, я получаю такой адрес:
После окончания настройки здесь же можно найти инструкцию о том, как залогиниться, как загрузить образ с репозитария и загрузить образ на репозитарий.
Шаг 4: Сборка Docker образа в Bamboo
Теперь мне необходимо настроить тригер для запуска сборки Docker образа. Для этого я перехожу во вкладку Triggers и нажимаю на кнопку Add trigger:
Здесь я выбираю опцию Build after successfully building the plan для того, чтобы Docker образ собирался после компиляции проекта.
Теперь надо добавить задание сборки Docker образа. Для этого переходим во вкладку Tasks, нажинаем Add task, выбираем тип Docker. Вводим описание и выбираем Build a Docker image из списка раскрывающегося меню. В поле Repository вводим
Что же касается Dockerfile, то он может быть таким, как показано ниже:
При запуске приложения необходимо указать базу данных. Переменные среды DATASOURCE_URL, DATASOURCE_USERNAME, DATASOURCE_PASSWORD служат для передачи этой информации приложению, но их значения задаются во время запуска контейнера.
На этом настройка процесса сборки Docker образа с приложением завершена. Следующим шагом является настройки загрузки этого образа на репозитарий Amazon ECR.
Загрузка образа в Elastic Container Registry
Для хранения образов, собранных с помощью Bamboo, можно использовать Elastic Container Registry. Для достижения этой цели я выполняю следующие шаги:
Шаг 1. Установка Amazon ECR Docker Credential Helper
Для загрузки Docker образов на Amazon ECR нужно иметь учетные данные. Такие учетные данные можно получить, выполнив команду
Однако эти учетные данные действительны только в течение 12 часов. Поэтому можно либо каждый раз перед загрузкой образа на ECR выполнять вышеуказанную команду, либо установить ECR Docker Credential Helper, который держит в актуальном состоянии временные учетные данные и логинится на ECR. Для установки ECR Docker Credential Helper необходимо выполнить следующие шаги.
Для начала надо установить git, а затем склонировать github репозитарий:
Потом надо поместить следующие строки в файл /home/bamboo/.docker/config.json:
И скопировать собранное приложение в каталог /usr/bin:
Шаг 2. Подключение IAM роли к серверу Bamboo
Для того, чтобы сервер Bamboo смог использовать ECR, надо создать роль, добавить к этой роли политику AmazonEC2ContainerRegistryPowerUser, а затем прикрепить эту роль к EC2 инстансу Bamboo. Открываем консоль AWS и выбираем IAM. Далее нажимаем кнопку Create role, выбираем AWS service и EC2, как показано ниже:
Затем нажимаем кнопку Next: Permissions и на следующем экране находим и выбираем политику AmazonEC2ContainerRegistryPowerUser. После этого заканчиваем создание роли и присоединяем ее к своему серверу Bamboo.
Шаг 3: Настройка задания загрузки Docker образа
Приложение мы собрали и собрали Docker образ с war-файлом. Теперь надо этот образ загрузить в репозитарий. Для этого добавляю еще одно задание Docker, в этот раз для загрузки образа в ECR репозитарий. Перехожу во вкладку Tasks, нажимаю Add task, выбираю тип Docker. Ввожу описание и выбираю Push a Docker image to a Docker registry из списка раскрывающегося меню. Выбираю Custom registry и вписываю адрес репозитория в поле Repository. В качестве типа аутентификации (Authentication type) я выбираю Use the agent’s native credentials.
На этом настройка процесса загрузки Docker образа на репозитарий Amazon ECR завершена. В следующих шагах описывается процесс настройки кластера и сервиса для запуска контейнерного приложения. Но перед этим надо настроить параметры запуска контейнера. Этим мы сейчас и займемся.
Создание Amazon ECS Task Definition
Task Definition – здесь записываются параметры исполнения контейнеров. Наше приложение использует базу данных, параметры которого указываются при запуске контейнера, поэтому в этом разделе мы еще создадим базу данных. В качестве базы данных я использую Amazon RDS, а пароль для доступа к базе в зашифрованном виде я храню в AWS Systems Manager Parameter Store. Следующие шаги я выполняю для того, чтобы создать Task Definition:
Шаг 1. Создание базы данных на инстансе Amazon RDS
Наше приложение использует базу данных PostgreSQL. Для создания базы данных открываю консоль AWS, выбираю сервис Amazon RDS, нажимаю кнопку Create database, затем в качестве движка базы данных выбираю PostgreSQL. На следующей странице я выбираю Dev/Test в качестве рабочей среды и нажимаю кнопку Next. Затем обозначаю DB instance identifier как onboard-dev-db, и master username как devdbadmin. Потом я перехожу на следующую страницу, чтобы настроить VPC, группу подсетей (subnet group) и группу безопасности (security group). Эта база данных будет использоваться в частной сети, поэтому для параметра Public accessibility выбираю No. В поле Database name ввожу devdb и нажимаю кнопку Create database.
Шаг 2. Настройка AWS Systems Manager Parameter Store
Пароль базы данных я храню в зашифрованном виде. Для этого открываю AWS консоль и перехожу в AWS Systems Manager → Shared Resources → Parameter Store → Create Parameter. В качестве имени параметра ввожу devdbpassword и выбираю SecureString для типа параметра, затем ввожу пароль базы данных в поле Value.
Шаг 3. Создание Task Definition
Amazon ECS – это кластер, в котором запускаются контейнерные приложения. Он использует Task Definition для указания параметров выполнения контейнерного приложения. Для задания таких параметров нажимаю кнопку Create new Task Definition. Затем выбираю в качестве типа запуска Fargate и перехожу к следующему шагу. Здесь я задаю имя как onboard-dev-taskdef. Для параметра Task execution IAM role field выбираю Create new role. Что же касается выделенных для данного приложения ресурсов, я обозначаю 2 ГБ памяти и 1 vCPU. Теперь необходимо добавить параметры запуска контейнера. Контейнер я назову onboard-dev-container. Имя образа обозначу так:
aws_account_id.dkr.ecr.us-east-2.amazonaws.com/onboard:latest. Приложение Amazon ECR Docker Credential Helper будет заботиться об аутентификации на ECR, поэтому опцию Private repository authentication оставляю неотмеченным. В dev-среде приложение доступно по порту 8080, поэтому для параметра port mappings записываю 8080 и выбираю протокол tcp. Параметры URL базы данных, имя пользователя и пароль передаются в контейнер с помощью переменных среды. Эти параметры я задаю в разделе Environment variables. Для того, чтобы получить значение параметра devdbpassword из Parameter Store указываю тип ValueFrom. Последнее, что я настраиваю – это Log configuration, здесь выбираю Auto-configure CloudWatch Logs. Теперь создание Task Definition завершено.
Однако, для роли ecsTaskExecutionRole нужна политика для получения devdbpassword из Parameter Store. Для этого перехожу в IAM Roles и выбираю ecsTaskExecutionRole, нажимаю Add inline policy. В данном случае я добавляю с помощью визуального редактора. Поэтому в поле Service ввожу Systems Manager, в поле Actions — GetParameters. Затем нажимаю Add ARN для поля Resources и заполняю свои значения:
В конце просматриваю значения задаваемых параметров, нажав Review policy, даю ему имя и завершаю работу с конфигурацией ecsTaskExecutionRole.
На этом настройка параметров запуска контейнерного приложения завершена. Теперь надо создать кластер ECS и сервис.
Создание сервиса Amazon ECS
Наше контейнерное приложение запускается в виде сервиса в кластере ECS. Для настройки необходимо выполнить следующие шаги:
Шаг 1. Создание кластера Amazon ECS
Для создания кластера ECS надо перейти в консоль AWS и выбрать сервис ECS. Затем нажать Create Cluster и выбрать кластерный шаблон Networking only. На следующей странице я называю кластер как onboard-dev-cluster и завершаю создание кластера. Теперь у меня есть кластер ECS основанный на Fargate.
Шаг 2: Создание сервиса
Чтобы создать сервис, я нажимаю на ссылку onboard-dev-cluster, затем перехожу во вкладку Services и нажимаю кнопку Create. Для параметра launch type выбираю Fargate, для Task Definition выбираю onboard-dev-taskdef. Кроме того, я выбираю onboard-dev-cluster в поле Cluster. В поле Service name я прописываю onboard-dev. Устанавливаю параметр Number of tasks на ноль, так как я не хочу запускать приложение прямо сейчас. Я оставляю значения параметров Minimum healthy percent равным 100, а Maximum percent – 200. Для параметра Deployment type выбираю Rolling update и перехожу к следующему шагу.
На странице Configure Network для параметра Cluster VPC я выбираю ранее созданный VPC, который называется Development VPC. Приложение в стадии разработки доступно только в частной сети, поэтому я выбираю две частные подсети. Для настройки групп безопасности я нажимаю кнопку Edit, затем выбираю Select existing security group, затем группу безопасности default и нажимаю кнопку Save. Для параметра Auto-assign public IP я выбираю Disabled. Далее, для параметра Load balancer type я выбираю None и оставляю невыбранным опцию Enable service discovery integration. Затем я нажимаю Next, Next и Create service.
Теперь у меня есть сервис, в котором количество запущенных заданий равно нулю. Настройку запуска приложения выполним в следующем шаге.
Обновление сервиса
Как только разработчик обновляет код приложения, наше развертывание проходит через создание Docker-образа, его загрузка в Elastic Container Registry и, наконец, запуск контейнерного приложения в виде сервиса в кластере ECS Fargate. На данный момент количество заданий, запущенных в кластере равно нулю. Чтобы приложение запустилось нужно обновить сервис, указав количество равным одному. Я выполняю следующие шаги для достижения этой цели:
Шаг 1. Установка плагина Tasks for AWS Bamboo
Tasks for AWS Bamboo – это плагин, который упрощает подготовку и эксплуатацию ресурсов AWS из проектов сборки и развертывания Bamboo. Для установки этого плагина перехожу в проект развертывания, нажимаю Add task, захожу на Atlassian Marketplace и устанавливаю Tasks for AWS (Bamboo).
Шаг 2. Обновление сервиса ECS
Теперь в проекте развертывания я добавляю задание Amazon ECS Service. Затем записываю в поле описания задания Update Service for onBoard-dev. В поле Action выбираю Update Service и Force new deployment. Потом в качестве региона запуска приложения выбираю US East (Ohio). Затем записываю в соответствующих полях ARN (Amazon Resource Name) для Task Definiton, кластера и сервиса. В этом задании я обновляю желаемое количество запущенных заданий до одного. Далее я заполняю текстовое поле конфигурации развертывания следующими значениями:
Я настраиваю сеть без публичного IP следующим образом:
В разделе Source для параметра AWS Security Credentials я выбираю IAM Role for EC2.
Мне нужно иметь возможность обновлять службу ECS, поэтому я присоединяю политику AmazonECS_FullAccess к своему экземпляру Bamboo EC2. Для этого открываю консоль AWS, выбираю IAM. Затем я выбираю роль, которую использую для своего сервера Bamboo. Нажимаю кнопку Attach policies, нахожу политику AmazonECS_FullAccess, устанавливаю флажок слева и заканчиваю прикреплять политику.
На этом заканчивается настройка CI/CD с использованием AWS и Bamboo. Таким образом, при обновлении кода приложения разработчиком, загрузки этого кода в репозитарий, запускается тестирование, сборка приложения. Затем выполняется сборка Docker образа с war-файлом приложения, и этот образ копируется на репозитарий Amazon ECR. Далее в кластере Amazon ECS запускается в виде сервиса контейнерное приложение, которое обновляет текущее приложение, если оно не было остановлено. Если же приложение было остановлено для экономии ресурсов, то приложение просто запускается. После завершения проверки приложения в dev-среде можно приложение остановить, указав количество заданий, запущенных в кластере равным нулю.
Если вам понравилась статья и есть идеи для улучшения, напишите в комментариях.