Установка сервера непрерывной интеграции phpci

В предыдущей статье немного рассказал о прелестях использования continuos integration в своих проектах и немного о самом приложении phpci. Сейчас же краткий мануал о использовании.

Установить довольно легко, об этом подробно написано на страницах gitub в разделе wiki — https://github.com/Block8/PHPCI/wiki/Installing-PHPCI. У меня ci установлена на vps за $5 на digital ocean, стоит debian 7, nginx и mysql. Ничего нестандартного, да и зачем. Скачал через composer.phar create-project block8/phpci phpci --keep-vcs --no-dev и выполнил установку ./console phpci:install, дальше указал виртуал хост на директорию public и вместо cron использовал режим демона nohup php daemonise phpci:daemonise > daemon.log &. Хотя как установить итак написано на страницах wiki. Но установка приложение это не самая важная его часть, сейчас покажу пример конфига из проекта.

Для интеграции в проект можно просто создать файл phpci.yml в корне проекта или же сохранить конфиг при добавлении проекта чтобы не засорять корень проекта. Оба случая по своему удобны. Дальше можно выбрать как существующий git репозиторий из сервисов github, bitbucket, или как в моем случае это свой сервер gitlab, указать ссылку на проект, сгенерированный публичный ключ добавить в deploy keys в гите и считай все будет работать.

phpci create new project page

После создания проекта, в моем случае это были только gitlab проекты, на странице проекта есть ссылка на gitlab webhook, она нужна для того чтобы gitlab оповещал о коммитах и phpci сам запускал сборку. Довольно удобный способ следить за качеством кода, это как git хуки только с веб интерфейсом.

build_settings:
  ignore:
    - "drush"
    - "modules/contrib"
    - "modules/features"

test:
  php_mess_detector:
    path: "code/sites/all"
    rules:
      - "codesize"
      - "unusedcode"
      - "naming"
  php_cpd:
    path: "code/sites/all"
  php_docblock_checker:
    path: "code/sites/all"
  php_code_sniffer:
    path: "code/sites/all"
    standard: "sniffer/Drupal/ruleset.xml"
  php_loc:
      directory: "code/sites/all"

complete:
  xmpp:
    username: "[email protected]"
    password: "***"
    recipients:
        - "[email protected]"
        - "[email protected]"
    server: "domain-xmpp.yandex.net"
    tls: 1
    alias: "makeyoulivebetter.org.ua"
    date_format: "%d/%m/%Y"

failure:
  email:
    committer: true
    cc: ["[email protected]"]

Это пример файла phpci.yml из корня проект. Друпал лежит в директории code относительно корня проекта, правила для код снифера в директории sniffer/Drupal, на самом деле это сниферы из модуля coder, но для других, не drupal проектов, очень удобно их складывать в эту папку, чтобы все могли указать ide использовать одни правила кода.

Настроить очень просто, секцию build_settings и testing объяснять не нужно, а вот в секции complete идет отправка сообщения в jabber. Для отправки нужно на сервер установить утилиту sendxmpp, типа как sendmail только для xmpp, и добавить пользователя из которого отправляешь в список контактов, иначе письма могут не прийти. У меня в настройках используется почта зарегистрированная через Yandex.PDD, так что и настройки соответствующие. Дальше в случае провала будет отправляться письмо тому кто сделал последний, провальный, коммит и еще копия проект менеджеру или тимлиду.

Вот и все, добавляешь phpci.yml файл в проект (или в раздел настроек при создании проекта в phpci), ставишь в phpci плагины phpcs, phpmd, phploc, phpcpd и может еще пару полезных, такие как phing, shell, grunt, и можно смело запускать билд и смотреть кто и где наговнокодил =)

Установка сервера непрерывной интеграции phpci: 1 комментарий

Добавить комментарий

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