Не всем нравится подрывная деятельность. Если вы используете Git для управления разработкой плагинов WordPress, синхронизировать репозиторий Git и репозиторий WordPress.org SVN утомительно. К счастью, мы можем использовать поставщика развертывания TravisCI для автоматизации развертывания SVN после тестов.
Предпосылки
Вам нужно это, прежде чем двигаться дальше:
- GitHub аккаунт
- Счет TravisCI
- Исходный код плагина
- Плагин WordPress.org SVN репо (Вы получаете это после одобрения обзора плагина.)
Первый толчок к GitHub
Чтобы использовать TravisCI, мы должны разместить репозиторий плагинов на GitHub.
Сначала создайте новый репозиторий на GitHub, зайдя на эту страницу и указав имя репозитория.
Затем мы собираемся зафиксировать все файлы плагинов в 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
|
Подключение TravisCI
Свяжите свой репозиторий GitHub с TravisCI, перейдя на страницу своего аккаунта TravisCI и включив свой репозиторий. Нажмите Синхронизировать учетную запись в правом верхнем углу, если ваш недавно созданный репозиторий не отображается в списке.
Вы все готово. Каждый раз, когда вы отправляете новые коммиты или кто-то отправляет запросы на получение GitHub, он запускает сборку TravisCI.
Первая сборка на 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
|
Добавление конфигурации поставщика развертывания
Провайдеры развертывания запускаются, если пройдены тесты и выполнены предварительно определенные условия (раздел 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
В разделе before_deploy
три файла копируются в каталог build
который необходимо проверить в хранилище подрывной деятельности WordPress.org. В реальном мире это именно то место, где вы хотите запускать задачи gulp
или grunt
чтобы подготовить готовый к работе плагин.
Не копируйте тестовые файлы или любые ненужные файлы в build
поскольку весь каталог build
предоставляется пользователям, и пользователям не нужны ваши тестовые файлы.
provider
и edge
Мы просим TravisCI установить моего провайдера из ветки add-wordpress-plugin-deployment
deploy https://github.com/TypistTech/dpl . После объединения запроса на вытягивание edge
часть становится ненужной.
on
Раздел on
контролирует, следует ли выполнять развертывание. Развертывание запускается только при соблюдении всех требований.
В приведенном выше примере мы развертываем на WordPress.org только когда:
- это сборка PHP
7.1
- это помеченный коммит
- он запускается репозиторием TangRufus / tutsplus-dpl-demo (разветвления и запросы извлечения не будут запускать развертывание)
slug
Плагин слизняк.
Если URL вашего плагина — https://wordpress.org/plugins/my-awesome-plugin/ , то my-awesome-plugin
— это плагин плагина.
username
Ваше имя пользователя учетной записи WordPress.org, с которым вы отправили плагин для проверки отзыва.
password
Пароль учетной записи WordPress.org. Никогда не сохраняйте этот пароль в .travis.yml
в виде обычного текста!
В приведенном выше примере мы используем переменную среды $WORDPRESS_ORG_PASSWORD
, которую можно установить на веб-панели TravisCI. Выберите « Настройки» в меню «Cog» и нажмите « Добавить» в разделе « Переменные среды ». Никогда не включайте опцию «Отображать значение в журнале сборки»!
build_dir
Все в этом каталоге будет передано в хранилище подрывной деятельности WordPress.org, т.е. будет включено в загружаемый zip-файл.
Мы установили это для build
потому что мы скопировали файлы плагинов в build
во время before_deploy
.
Tagging
Предположим, что мы исправили некоторые ошибки и готовы опубликовать новую версию на 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>):
Предостережения
svn commit
дважды
Так как TravisCI поставляется со старой версией subversion
которая не очень хорошо работает с подкаталогами, я делаю svn commit
дважды.
Первый svn commit
удаляет все внутри trunk
. Второй svn commit
копирует все от build_dir
до trunk
.
экспериментальный
Этот провайдер все еще экспериментален и еще не включен в официальный репозиторий TravisCI. Вы можете отслеживать отзывы TravisCI о его запросе .
Использование edge
не объединяет мою ветку с ведущим. Есть вероятность, что моя ветка стоит за официальным репо. Когда это происходит, вы можете разветвить мою ветку и перебазировать ее, а затем изменить source
в .travis.yml
в свой репозиторий GitHub.
Завершение
Чтобы использовать этот поставщик развертывания :
- Разместите репозиторий плагинов на GitHub.
- Подключите GitHub и TravisCI.
- Добавьте конфигурацию в
.travis.yml
. - Нажмите тег.
Я надеюсь, что все вышеперечисленное поможет вам быстрее развернуть плагины для WordPress.org.
WordPress обладает невероятно активной экономикой. Существуют темы, плагины, библиотеки и многие другие продукты, которые помогут вам создать свой сайт и проект. Платформа с открытым исходным кодом также делает ее отличным вариантом для улучшения ваших навыков программирования. В любом случае, вы можете увидеть все, что у нас есть на рынке Envato .
Спасибо за прочтение!