После долгих экспериментов остановился на следующем 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 довольно сильно проигрывает гитлабу.