Статьи

Как развернуть плагин WordPress из TravisCI в WordPress.org

Не всем нравится подрывная деятельность. Если вы используете Git для управления разработкой плагинов WordPress, синхронизировать репозиторий Git и репозиторий WordPress.org SVN утомительно. К счастью, мы можем использовать поставщика развертывания TravisCI для автоматизации развертывания SVN после тестов.

Вам нужно это, прежде чем двигаться дальше:

  1. GitHub аккаунт
  2. Счет TravisCI
  3. Исходный код плагина
  4. Плагин WordPress.org SVN репо (Вы получаете это после одобрения обзора плагина.)

Чтобы использовать TravisCI, мы должны разместить репозиторий плагинов на GitHub.

Сначала создайте новый репозиторий на GitHub, зайдя на эту страницу и указав имя репозитория.

create new GitHub repository
GitHub new repository page

Затем мы собираемся зафиксировать все файлы плагинов в Git и отправить их в этот репозиторий GitHub. Не забудьте заменить удаленный URL своим.

1
2
3
4
5
6
$ cd /path/to/plugin/directory
$ git init
$ git add -A
$ git commit -m «first commit»
$ git remote add origin https://github.com/TangRufus/tutsplus-dpl-demo.git
$ git push -u origin master

Свяжите свой репозиторий GitHub с TravisCI, перейдя на страницу своего аккаунта TravisCI и включив свой репозиторий. Нажмите Синхронизировать учетную запись в правом верхнем углу, если ваш недавно созданный репозиторий не отображается в списке.

Настройки аккаунта TravisCI

Вы все готово. Каждый раз, когда вы отправляете новые коммиты или кто-то отправляет запросы на получение GitHub, он запускает сборку TravisCI.

TravisCI использует YAML-файл с именем .travis.yml в корне вашего хранилища для настройки сборок. Узнайте больше из документа настройки сборки, чтобы увидеть, как вы можете контролировать жизненный цикл сборки.

Это базовый файл конфигурации, который инструктирует TravisCI запускать сборки на PHP 7.0 и 7.1 . Поскольку тестирование выходит за рамки данного руководства, я заменил фактические команды тестирования на echo 'Tested' .

01
02
03
04
05
06
07
08
09
10
11
12
13
# .travis.yml
 
language: php
 
sudo: false
 
php:
  — 7.0
  — 7.1
 
script:
  # Run your tests here.
  — echo ‘Tested’

Зафиксируйте этот файл и отправьте его на GitHub. Сборки TravisCI будут запускаться автоматически.

1
2
3
$ git add .travis.yml
$ git ci -am «Add .travis.yml»
$ git push origin master
TravisCI текущая сборка

Провайдеры развертывания запускаются, если пройдены тесты и выполнены предварительно определенные условия (раздел on ). TravisCI предоставляет почти 40 официальных поставщиков услуг развертывания . К сожалению, ни один из них не поддерживает репозитории WordPress.org. Таким образом, я сделал свой собственный провайдер. Вы можете найти его на GitHub и запросить его .

Чтобы использовать его, добавьте эти строки в конец .travis.yml .

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
before_deploy:
  — mkdir build
  — cp LICENSE build
  — cp README.txt build
  — cp remove-medium-cross-links.php build
 
deploy:
  — provider: wordpress-plugin
    edge:
      source: TypistTech/dpl
      branch: add-wordpress-plugin-deployment
    on:
      php: 7.1
      tags: true
      repo: TangRufus/tutsplus-dpl-demo
    slug: remove-medium-cross-links
    username: tangrufus
    password: $WORDPRESS_ORG_PASSWORD
    build_dir: build

В разделе before_deploy три файла копируются в каталог build который необходимо проверить в хранилище подрывной деятельности WordPress.org. В реальном мире это именно то место, где вы хотите запускать задачи gulp или grunt чтобы подготовить готовый к работе плагин.

Не копируйте тестовые файлы или любые ненужные файлы в build поскольку весь каталог build предоставляется пользователям, и пользователям не нужны ваши тестовые файлы.

Мы просим TravisCI установить моего провайдера из ветки add-wordpress-plugin-deployment deploy https://github.com/TypistTech/dpl . После объединения запроса на вытягивание edge часть становится ненужной.

Раздел on контролирует, следует ли выполнять развертывание. Развертывание запускается только при соблюдении всех требований.

В приведенном выше примере мы развертываем на WordPress.org только когда:

  1. это сборка PHP 7.1
  2. это помеченный коммит
  3. он запускается репозиторием TangRufus / tutsplus-dpl-demo (разветвления и запросы извлечения не будут запускать развертывание)

Плагин слизняк.

Если URL вашего плагина — https://wordpress.org/plugins/my-awesome-plugin/ , то my-awesome-plugin — это плагин плагина.

Ваше имя пользователя учетной записи WordPress.org, с которым вы отправили плагин для проверки отзыва.

Пароль учетной записи WordPress.org. Никогда не сохраняйте этот пароль в .travis.yml в виде обычного текста!

В приведенном выше примере мы используем переменную среды $WORDPRESS_ORG_PASSWORD , которую можно установить на веб-панели TravisCI. Выберите « Настройки» в меню «Cog» и нажмите « Добавить» в разделе « Переменные среды ». Никогда не включайте опцию «Отображать значение в журнале сборки»!

TravisCI-переменные окружения-настройка

Все в этом каталоге будет передано в хранилище подрывной деятельности WordPress.org, т.е. будет включено в загружаемый zip-файл.

Мы установили это для build потому что мы скопировали файлы плагинов в build во время before_deploy .

Предположим, что мы исправили некоторые ошибки и готовы опубликовать новую версию на WordPress.org.

Эти команды фиксируют изменения в master ветви, но не запускают развертывание:

1
2
3
$ git add -A
$ git commit -am «Bug fix»
$ git push origin master

Только отмеченные коммиты запускают развертывание:

1
2
$ git tag -a 1.0.17 -m «Version bump 1.0.17»
$ git push origin master —tags

Вернитесь в TravisCI и откройте журнал сборки PHP 7.1 . Вы должны увидеть, что развертывание зарегистрировано.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Building dpl gem locally with source TypistTech/dpl and branch add-wordpress-plugin-deployment
Installing deploy dependencies
 
!!!
 
 
Preparing deploy
Finding configuration for WordPress plugin deployment…
Slug: remove-medium-cross-links
Username: tangrufus
Password found
Build Directory: build
Assets Directory: not found
Validating configuration for WordPress plugin deployment…
Configuration looks good
Going to deloy tag: 1.0.17
Cleaning up git repository with `git stash —all`.
/usr/lib/git-core/git-stash: 186: /usr/lib/git-core/git-stash: cannot create /home/travis/build/TangRufus/tutsplus-dpl-demo/.git/logs/refs/stash: Directory nonexistent
 
Deploying application
Checking out https://plugins.svn.wordpress.org/remove-medium-cross-links
Clearing /tmp/d20170513-3291-1yh7vqo/trunk…
Removing deleted files from subversion…
D /tmp/d20170513-3291-1yh7vqo/trunk
Temporary removing trunk and assets(if assets_dir is set)
Deleting tmp/d20170513-3291-1yh7vqo/trunk
 
Committed revision 1656616.
Copying build to /tmp/d20170513-3291-1yh7vqo/trunk…
Copying /tmp/d20170513-3291-1yh7vqo/trunk to /tmp/d20170513-3291-1yh7vqo/tags/1.0.17…
Adding new files to subversion…
A /tmp/d20170513-3291-1yh7vqo/trunk
A /tmp/d20170513-3291-1yh7vqo/trunk/LICENSE
A /tmp/d20170513-3291-1yh7vqo/trunk/README.txt
A /tmp/d20170513-3291-1yh7vqo/trunk/remove-medium-cross-links.php
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/LICENSE
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/README.txt
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/remove-medium-cross-links.php
Committing 1.0.17
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17/LICENSE
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17/README.txt
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17/remove-medium-cross-links.php
Adding tmp/d20170513-3291-1yh7vqo/trunk
Adding tmp/d20170513-3291-1yh7vqo/trunk/LICENSE
Adding tmp/d20170513-3291-1yh7vqo/trunk/README.txt
Adding tmp/d20170513-3291-1yh7vqo/trunk/remove-medium-cross-links.php
Transmitting file data ……
Committed revision 1656617.

И на трассе WordPress.org ( https://plugins.trac.wordpress.org/browser/ <your-plugin-slug>):

Плагин WordPress

Так как TravisCI поставляется со старой версией subversion которая не очень хорошо работает с подкаталогами, я делаю svn commit дважды.

Первый svn commit удаляет все внутри trunk . Второй svn commit копирует все от build_dir до trunk .

Этот провайдер все еще экспериментален и еще не включен в официальный репозиторий TravisCI. Вы можете отслеживать отзывы TravisCI о его запросе .

Использование edge не объединяет мою ветку с ведущим. Есть вероятность, что моя ветка стоит за официальным репо. Когда это происходит, вы можете разветвить мою ветку и перебазировать ее, а затем изменить source в .travis.yml в свой репозиторий GitHub.

Чтобы использовать этот поставщик развертывания :

  1. Разместите репозиторий плагинов на GitHub.
  2. Подключите GitHub и TravisCI.
  3. Добавьте конфигурацию в .travis.yml .
  4. Нажмите тег.

Я надеюсь, что все вышеперечисленное поможет вам быстрее развернуть плагины для WordPress.org.

WordPress обладает невероятно активной экономикой. Существуют темы, плагины, библиотеки и многие другие продукты, которые помогут вам создать свой сайт и проект. Платформа с открытым исходным кодом также делает ее отличным вариантом для улучшения ваших навыков программирования. В любом случае, вы можете увидеть все, что у нас есть на рынке Envato .

Спасибо за прочтение!