Yii2 bitbucket-pipelines docker deployment

После долгих экспериментов остановился на следующем yml файле для bitbucket pipelines CI:

image: sassoftinc/base # base image contains php 7.1

pipelines:
  default:
    - step:
        name: Unit tests & Build
        caches:
          - composer
          - docker
        script:
          - composer install
          - php yii migrate --interactive=0
          - mysql -h 127.0.0.1 -u user --password=some_password db < config/dev.sql #loading fixtures
          - vendor/bin/codecept run
          - ./docker/build.sh # start building docker image
        services:
          - db
          - docker
    - step:
        name: Deploy to staging
        deployment: staging
        trigger: manual
        script:
          - ./docker/deploy.sh # your deployment script, could be also done via ansible
    - step:
        name: Deploy to live
        deployment: live
        trigger: manual
        script:
          - ./docker/deploy.sh # your deployment script, could be also done via ansible

definitions:
  services:
    db:
      image: mysql:5.7.22
      environment:
        MYSQL_DATABASE: 'db'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: 'password'

CI проводит все базовые операции:

  • Установка зависимостей, миграции
  • Запуск unit и integration тестов
  • Сборка docker контейнера, который включает в себя весь проект внутри
  • Деплой на staging и live. Bitbucket pipelines не так давно добавили поддержку Deployments и теперь деплой может происходить прямо из CI.
  • Обязательно используйте кеширование для composer и docker, это помогает ускорить процесс сборки и уменьшить время затраченных минут.

Важно знать ограничения на время сборки для бесплатного аккаунта, в данный момент это 50 минут и это очень мало. Именно за этих ограничений bitbucket-pipelines довольно сильно проигрывает гитлабу.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *