Bitbucket и WordPress

СВК
Published

Решил я возродить свой старый проект Tcl/Tk Project Manager (IDE для tcl/tk) и для удобства разработки исходники были помещены в git-репозиторий bitbucket.org. Но тут встал вопрос публикации новостей о новых выпусках программы, ссылок на архивы или пакеты для загрузки. И вот возникла идея этот процесс автоматизировать, благо для этого все механизмы и инструменты есть. Первым делом будем автоматизировать упаковку исходников в архив и загрузку его на сайт для скачивания. Паковать исходники будем tar-ом а загружать на сайт по ftp при помощи curl.

В bitbucket для каждого репозитория доступны так называемые «трубопроводы» (pipelines). Это docker-контейнеры, автоматически разворачиваемые и запускаемые на каждую выгрузку (push) исходников, в которых можно выполнить сборку и тестирование приложения. А так как, механизм позволяет использовать любой контейнер, то ничего не мешает взять нужный и выполнить задуманное. Для решения задачи нужен контейнер с поддержкой curl. Стоит немного отступить от повествования и поведать в чём-же эта самая задача состоит: как выше было сказано, требуется упаковка исходников (для этого будем использовать старый добрый tar) и загрузка данного архива из репозитория на сайт (для этого будем использовать консольную утилиту curl). В общем, идём на https://hub.docker.com и через поиск находим искомое appropriate/curl, и запоминаем название. Дальше для управления файлами в WordPress был установлен и настроен плагин Download Manager, можно было и без него. В консоли управления хостингом был добавлен ftp пользователь, которому в качестве домашнего каталога выставлен каталог, используемый Download Manager-ом (что, опять-же не обязательно).

Дальше идём на bitbucket.org в нужный репозиторий и тыкаем в pipelines. Откроется окошко с редактором yml-файла настроек, куда и требуется записать то, что нам необходимо (операции выполняемые с исходниками).

# This is a sample build configuration for Other.
# Check our guides at https://confluence.atlassian.com/x/5Q4SMw for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
#image: efrecon/tcl
image: appropriate/curl

pipelines:
  default:
- step:
        script:
          - tar -czvf projman-last.tgz *
      - curl ftp://nuk-svk.ru --user $FTP_USER:$FTP_PASS --upload-file projman-last.tgz

image: appropriate/curl — это имя нашего докер-контейнера.

Дальше после script: описываются команды, ради которых всё и затевалось. Тут стоит пояснить про $FTPUSER:$FTPPASS. Так как этот файл доступен «всем ветрам» то в целях безопастности учётные данные надо каким-то образом скрыть. Но как это сделать? Оказывается в битбакете в профиле пользователя есть переменные, недоступные никому кроме нужных людей и механизмов. Так вот, там и добавляем две переменных $FTPUSER и $FTPPASS значения которых содержат имя и пароль фтп-юзера на нашем сайте, созданного чуть раньше. Для этого идём в свой профиль на сайте bitbucket.org. Жмём «настройки» и в самом низу будет пункт: Pipelines

Environment variables

В котором и прописываем две искомых переменных.

В принципе на этом все настройки и закончены. После того как Вы сохраните yml файлик настроек «трубопровода» будет автоматически загружен и запущен контейнер и ваши команды. Процедуру выполнения всего этого «добра» можно лицезреть в реальном времени или после. В случае каки-то ошибок на вашу почту (указананную в профиле битбакета) придёт письмо с описанием ошибки, в случае если все нормально на сайте появится искомый файлик.

Дальше остается настроить отображение информации о нашем файле на страничке сайта через раздел администрирования, и наслаждаться «колхозной» непрерывной интеграцией =) — когда на каждый комит в основную ветку репозитория на сайте будет доступен архив с самым свежим кодом. В дальнейшем планируется настроить сборку rpm и deb пакетов.