Что такое Bamboo?

Bamboo — это сервер непрерывной интеграции и развертывания от Atlassian, который автоматизирует процессы сборки, тестирования и развертывания приложений. Тесно интегрирован с другими продуктами Atlassian как Jira и Bitbucket.

Основные возможности Bamboo

  • Atlassian Integration — глубокая интеграция с Jira, Bitbucket, Confluence
  • Build plans — гибкие планы сборки с множественными стадиями
  • Deployment projects — управление развертываниями в разные окружения
  • Parallel builds — параллельное выполнение на множественных агентах
  • Branch detection — автоматическое обнаружение новых веток
  • Docker support — встроенная поддержка Docker контейнеров
  • REST API — программный доступ ко всем функциям

Установка Bamboo

 1# Установка через Docker
 2docker run -d --name bamboo \
 3  -p 8085:8085 \
 4  -v bamboo_data:/var/atlassian/application-data/bamboo \
 5  atlassian/bamboo-server
 6
 7# Установка на Ubuntu/Debian
 8wget https://www.atlassian.com/software/bamboo/downloads/binary/atlassian-bamboo-9.2.0.tar.gz
 9tar -xzf atlassian-bamboo-9.2.0.tar.gz
10cd atlassian-bamboo-9.2.0/bin
11./start-bamboo.sh
12
13# Установка Remote Agent
14wget https://bamboo.example.com/agentServer/agentInstaller/atlassian-bamboo-agent-installer-9.2.0.jar
15java -jar atlassian-bamboo-agent-installer-9.2.0.jar http://bamboo.example.com/agentServer/

Создание Build Plan

 1# Пример конфигурации через Bamboo Specs (Java)
 2@BambooSpec
 3public class PlanSpec {
 4    public Plan plan() {
 5        final Plan plan = new Plan(new Project()
 6                .oid("MYPROJ")
 7                .key("MP")
 8                .name("My Project"),
 9            "Python Build",
10            "PYTHONBUILD")
11            .oid("123456")
12            .description("Build and test Python application")
13            .pluginConfigurations(new ConcurrentBuilds()
14                    .useSystemWideDefault(false)
15                    .maximumNumberOfConcurrentBuilds(2))
16            .stages(new Stage("Default Stage")
17                    .jobs(new Job("Default Job",
18                            new BambooKey("JOB1"))
19                            .tasks(
20                                new VcsCheckoutTask()
21                                    .description("Checkout Default Repository")
22                                    .checkoutItems(new CheckoutItem().defaultRepository()),
23                                new ScriptTask()
24                                    .description("Install dependencies")
25                                    .inlineBody("pip install -r requirements.txt\n# poetry install"),
26                                new ScriptTask()
27                                    .description("Run tests")
28                                    .inlineBody("pytest tests/ --junitxml=test-results.xml --cov=app --cov-report=xml"),
29                                new TestParserTask(TestParserTaskProperties.TestType.JUNIT)
30                                    .description("Parse test results")
31                                    .resultDirectories("test-results.xml")
32                            )
33                            .requirements(new Requirement("system.docker.executable"))
34                            .artifacts(new Artifact()
35                                    .name("Coverage Report")
36                                    .copyPattern("coverage.xml")
37                                    .shared(false)
38                                    .required(false))
39                    ))
40            .linkedRepositories("myrepo")
41            .triggers(new BitbucketServerTrigger())
42            .variables(
43                new Variable("PYTHON_VERSION", "3.9"),
44                new Variable("TEST_ENV", "ci")
45            )
46            .planBranchManagement(new PlanBranchManagement()
47                    .delete(new BranchCleanup())
48                    .notificationForCommitters()));
49        return plan;
50    }
51}

Deployment Projects

 1# Создание Deployment Project через REST API
 2curl -X POST \
 3  http://bamboo.example.com/rest/api/latest/deploy/project \
 4  -H 'Authorization: Bearer YOUR_TOKEN' \
 5  -H 'Content-Type: application/json' \
 6  -d '{
 7    "name": "MyApp Deployment",
 8    "key": "MYAPP",
 9    "description": "Deploy MyApp to different environments",
10    "planKey": "MP-PYTHONBUILD"
11  }'
12
13# Создание Environment
14curl -X POST \
15  http://bamboo.example.com/rest/api/latest/deploy/project/MYAPP/environment \
16  -H 'Authorization: Bearer YOUR_TOKEN' \
17  -H 'Content-Type: application/json' \
18  -d '{
19    "name": "Production",
20    "description": "Production environment",
21    "configurationState": "ENABLED"
22  }'

Integration с Docker

 1# Docker task в Build Plan
 2# 1. Docker Build and Push task
 3docker build -t myregistry/myapp:${bamboo.buildNumber} .
 4docker push myregistry/myapp:${bamboo.buildNumber}
 5
 6# 2. Docker Run task для тестирования
 7docker run --rm \
 8  -v ${bamboo.build.working.directory}:/workspace \
 9  -w /workspace \
10  python:3.9 \
11  sh -c "pip install -r requirements.txt && pytest tests/"
12
13# 3. Docker Compose для интеграционных тестов
14docker-compose -f docker-compose.test.yml up --abort-on-container-exit

Интеграция с Atlassian Stack

  • Jira Integration — автоматическое обновление статуса задач
  • Bitbucket Integration — автоматические сборки при push
  • Confluence Integration — публикация отчетов в Confluence
  • HipChat/Slack — уведомления о статусе сборок
  • Fisheye/Crucible — интеграция с code review

Когда использовать Bamboo

  • Команда уже использует Atlassian продукты
  • Нужна тесная интеграция с Jira и Bitbucket
  • Требуются enterprise возможности и поддержка
  • Важна простота настройки и использования
  • Нужны deployment projects для управления релизами
  • Команда предпочитает GUI над конфигурационными файлами

Преимущества Bamboo

  • Atlassian Ecosystem — глубокая интеграция с другими продуктами
  • User-friendly — интуитивный веб-интерфейс
  • Deployment Projects — удобное управление развертываниями
  • Branch Management — автоматическое управление ветками
  • Enterprise Support — коммерческая поддержка от Atlassian
  • Docker Integration — хорошая поддержка контейнеров

Недостатки Bamboo

  • Высокая стоимость лицензий
  • Меньше flexibility по сравнению с Jenkins
  • Привязка к Atlassian экосистеме
  • Ограниченная поддержка pipeline as code
  • Меньше плагинов чем у Jenkins
  • Может быть избыточным для простых проектов

Альтернативы Bamboo

  • Jenkins — open source с большей гибкостью
  • GitLab CI/CD — интегрированное решение
  • GitHub Actions — для проектов на GitHub
  • Azure Pipelines — от Microsoft
  • TeamCity — от JetBrains

Best Practices

  • Используй Bamboo Specs для версионирования конфигурации
  • Настрой proper branch management policies
  • Используй deployment projects для управления релизами
  • Мониторь производительность remote agents
  • Интегрируй с Jira для трекинга изменений
  • Настрой уведомления для команды

FAQ

Подходит ли Bamboo для продакшена?

Да, Bamboo широко используется в production средах, особенно в компаниях, использующих Atlassian Stack. Это зрелый продукт с коммерческой поддержкой.

Какие требования к инфраструктуре?

Минимально: 2GB RAM для сервера, 1GB для агента. Для production рекомендуется больше ресурсов в зависимости от нагрузки.

Сколько стоит Bamboo?

Лицензии начинаются от $1200/год за 25 remote agents. Стоимость увеличивается с количеством агентов.