2. Зачем нужна Continuous Integration
• Отслеживать состояние исходников(собирается ли текущий build
или нет, и кто закоммитил изменения которые привели к ошибке)
• Автоматический запуск unit-тестов
• Оповещение о успехе/неудаче всех ответственных и последнего
коммитера
• Автоматическое разворачивание проекта на основе успешного
build-а
8. Deploy после тестов
anynines
Appfog
Atlas
AWS CodeDeploy
AWS OpsWorks
Azure Web Apps
bintray
Boxfuse
Cloud 66
cloudControl
CloudFoundry
Deis
Divshot.io
Engine Yard
RubyGems
Surge.sh
deploy:
provider: script
script: scripts/deploy.sh
on:
branch: stage
GitHub Releases
Google App Engine
Google Cloud Storage
Hackage
Heroku
Launchpad
Modulus
Ninefold
npm
OpenShift
packagecloud.io
PyPI
Rackspace Cloud
Files
S3
Uploading Build
Artifacts
ExoScale
.travis.yml для кастомного деплоя
9. Особенности и ограничения TravisCI
процессор 2 ядра по 2.4GHz 7.5 GB RAM
максимальное время тестов 120 минут
если нет никакого вывода на stdout от скриптов в течении 10 минут, тест прерывается.
Хотя если у Вас ожидается использование подобных скриптов то следует обратить
внимание на параметр travis_wait он поможет увеличить данное время)
Travis для opensource предоставляет бесплатный тариф на котором ваши задачи
ставятся в общую очередь и обрабатываются по мере освобожнения ресурсов.
Интересную информацию можно увидеть на https://www.traviscistatus.com там видно
что в пиковые моменты до 400 задач выполняется для opensource проектов — тоесть
в пики придется ждать своей очереди.
Есть ограничение на количество инстансов — для OpenSource проектов это 2 в
случае платной подписки — максимум 10, тоесть имея 5 PR и тестируя его на 2х
версиях РНР мы загрузим весь доступный максимум — все остальные будут
поставлены в очередь.
Деплой возможен только после билда на внутреннем инстансе
12. Особенности и ограничения CircleCI
процессор 2 ядра по 2.4GHz 4GB RAM
нет встроенной возможности запустить тесты на разных версиях РНР
паралельно(в качестве решения можно использовать circleci-matrix или circleci-
helpers)
Деплой возможен только после билда на внутреннем инстансе по аналогии с
TravisCI
Немного нелогичный интерфейс, требующий привыкания
13.
14. Deploy с помощью ZenCI
deploy:
7.x-1.x: #branch name
server: ocean.vps-private.net #server address
username: mv # user on server
dir: '{home}/github/drupal/{branch}' #dir for git checkout
env_vars: # set up env variables that we can use in scripts
later
docroot: '{home}/domains/test.mv.ocean.vps-private.net' #
www root dir
domain: test.mv.ocean.vps-private.net # domain name
sitename: testsite #site name
sitemail: noreply@test.mv.ocean.vps-private.net #site email
database_name: mv_test # DB name
database_user: mv_test # DB user
scripts:
init: '{deploy_dir}/scripts/install.sh' # install script
#!/bin/sh
echo "Installing drupal to " . $DOCROOT
DATABASE_PASS="test"
cd $DOCROOT
drush dl drupal-7 --drupal-project-rename=drupal
mv drupal/* .
mv drupal/.htaccess .
rm -rf drupal
ln -s $ZENCI_DEPLOY_DIR
sites/all/modules/travis_ci_drupal_module_example
drush --verbose site-install --db-url=mysql://
$DATABASE_USER:
$DATABASE_PASS@127.0.0.1/$DATABASE_NAME --yes
drush --yes pm-enable simpletest
drush --yes pm-enable travis_ci_drupal_module_example
Настройка deploy Скрипт инсталла
С помощью ZenCI происходит deploy drupal.ru
15. Тестирование с помощью ZenCI
test:
php53:
branch:
env_vars:
docroot: '{home}/www/'
box: 'backdrop-php53'
dir: '{home}/github/branch/{branch}'
scripts:
init: '{deploy_dir}/scripts/install_test.sh'
tests:
- '{deploy_dir}/scripts/run_tests.sh'
Настройка секции тестов
#!/bin/sh
SITEPATH="$HOME/www"
echo "Full site path: $SITEPATH"
cd $SITEPATH
php $SITEPATH/scripts/run-tests.sh --php "/usr/bin/php"
--verbose --color --url http://127.0.0.1 --class
"TravisDrupalModuleExampleDrupalUnitTestCase"
Скрипт запуска тестов run_tests.sh
С помощью ZenCI происходит тестирование Backdrop CMS
16. Особенности и ограничения ZenCI
•Цена, нет пакетов:
для opensource ограничения:
1. 250 deploy
2. 500 тестов
3. 2500 минут на Quadro Box
4. 1Gb диска
для private:
1.каждый deploy стоит 0.01$
2.каждый тест стоит 0.01$ + стоимость времени выполнения инстанса
3.Стоимость инстанса от 0.0008$/мин.
4.0.05$ Gb/день
•Независимый от тестов deploy
•Возможность запуска тестов в любом окружении при наличии ssh доступа
•REST JSON API для кастомизированного статуса по деплою и тестам.
•Проверка на CodeStyle(пока в beta по запросу)
•Возможность поднять свой QA сервер с помощью секции pull_request
•Необходимость писать отдельные скрипты для install и для запуска тестов
•Мало документации
•Мы только запустились :)