Налаштування CI/CD для сайту через Bitbucket Pipelines

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування CI/CD для сайту через Bitbucket Pipelines
Середня
від 1 робочого дня до 3 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування CI/CD для вашого сайту з Bitbucket Pipelines

Bitbucket Pipelines вбудована в Bitbucket Cloud — окремий CI-сервер не потрібен. Конфігурація описується в bitbucket-pipelines.yml у корені сховища. Кожен крок виконується в Docker-контейнері; безплатний план надає 50 хвилин/місяць, платні плани усувають обмеження.

Базова конфігурація

image: node:20-alpine

pipelines:
  branches:
    main:
      - step:
          name: Test
          caches:
            - node
          script:
            - npm ci
            - npm test

      - step:
          name: Build
          caches:
            - node
          script:
            - npm ci
            - npm run build
          artifacts:
            - dist/**

      - step:
          name: Deploy
          deployment: production
          script:
            - apt-get update && apt-get install -y openssh-client rsync
            - mkdir -p ~/.ssh
            - echo "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_rsa
            - chmod 600 ~/.ssh/id_rsa
            - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
            - rsync -avz --delete dist/ deploy@$DEPLOY_HOST:/var/www/mysite/

  pull-requests:
    '**':
      - step:
          name: Test PR
          script:
            - npm ci
            - npm test
            - npm run lint

Артефакти між кроками

- step:
    name: Build
    script:
      - npm run build
    artifacts:
      - dist/**          # шаблон glob
      - .env.production  # конкретний файл

- step:
    name: Deploy
    script:
      - ls dist/  # файли з попереднього кроку доступні

Артефакти автоматично передаються між кроками в одному конвеєрі. Тривалість зберігання становить 14 днів.

Змінні середовища

Настроюються в Repository Settings → Pipelines → Repository variables. Прапор Secured приховує значення в журналах.

Для кількох сховищ — використовуйте Workspace variables (налаштовані на рівні робочої области).

script:
  - echo "$DATABASE_URL"       # з Repository variables
  - echo "$WORKSPACE_TOKEN"    # з Workspace variables

Паралельні кроки

- parallel:
    - step:
        name: Unit Tests
        script:
          - npm test

    - step:
        name: E2E Tests
        image: cypress/base:20
        script:
          - npm ci
          - npm run test:e2e

    - step:
        name: Lint
        script:
          - npm run lint

Паралельні кроки виконуються одночасно; наступний крок чекає завершення всіх.

Середовища розгортання

Bitbucket підтримує названі середовища з ручним затвердженням:

- step:
    name: Deploy to Staging
    deployment: staging
    script:
      - ./deploy.sh staging

- step:
    name: Deploy to Production
    deployment: production
    trigger: manual    # кнопка в UI
    script:
      - ./deploy.sh production

У розділі Deployments (ліва панель Bitbucket) ви можете побачити історію розгортань за середовищами, хто розгортав і коли.

Користувацькі конвеєри (ручний запуск)

pipelines:
  custom:
    rollback:
      - variables:
          - name: RELEASE_TAG
            default: 'v1.0.0'
      - step:
          name: Rollback to tag
          script:
            - git fetch --tags
            - git checkout $RELEASE_TAG
            - npm ci && npm run build
            - ./deploy.sh production

Запустіть: Pipeline → Run pipeline → виберіть rollback → введіть змінну. Корисно для екстрених відкатів.

Docker-складання

image: atlassian/default-image:4

pipelines:
  branches:
    main:
      - step:
          name: Build and push Docker image
          services:
            - docker
          script:
            - docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
            - docker build -t myrepo/mysite:$BITBUCKET_COMMIT .
            - docker push myrepo/mysite:$BITBUCKET_COMMIT
            - docker tag myrepo/mysite:$BITBUCKET_COMMIT myrepo/mysite:latest
            - docker push myrepo/mysite:latest

Сервіс docker підключає Docker daemon до кроку.

PHP/Composer проект

image: php:8.3-cli

definitions:
  caches:
    composer: vendor

pipelines:
  branches:
    main:
      - step:
          caches:
            - composer
          script:
            - apt-get update && apt-get install -y unzip libpq-dev
            - docker-php-ext-install pdo_pgsql
            - curl -sS https://getcomposer.org/installer | php
            - php composer.phar install --no-dev --optimize-autoloader
            - php artisan config:cache
            - php artisan migrate --force

Сповіщення

Bitbucket надсилає електронну пошту при помилці. Для Slack/Telegram — використовуйте Webhook або Pipe:

- step:
    script:
      - npm run build
    after-script:
      - |
        if [ $BITBUCKET_EXIT_CODE -ne 0 ]; then
          curl -s -X POST $SLACK_WEBHOOK \
            -H 'Content-type: application/json' \
            -d '{"text":"Build failed: '"$BITBUCKET_REPO_FULL_NAME"'"}'
        fi

Терміни налаштування

Перший робочий конвеєр — 1 день: bitbucket-pipelines.yml, змінні, SSH-ключі. Паралельні кроки, користувацькі конвеєри, Docker — ще 1–2 дні.