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