WordPress公式プラグインをGitHubで管理する - Deployerの場合

TL;DR GitHub で WordPress 公式プラグインを管理する方法のうち、サービス Deployer を使ったやり方をメモ

前提

  • ワードプレスの機能的なカスタマイズは、プラグインの形にしておくと管理が楽
  • ワードプレスのプラグインは、公式ディレクトリで公開しておくと使うとき便利 (他の人も便利)
  • 公式プラグインは、指定のSubversion で更新する
  • git に慣れてきて Subversion 思い出すの面倒だなあ

という前提があって、「GitHub で管理しつつ公式 Subversion へ反映」させる方法を探しました。

今回は、外部のwebサービスである Deployer を使うやり方。

Deployer

Arūnas Liuiza さんが作って公開している(現在のところ無料の)webサービス。GitHub で更新した WordPress プラグインを、公式リポジトリの Subversion に反映してくれます。

# こっちのDeployer — Deployment Tool for PHPとは別物です。

昨年2015年9月のWordCampリトアニアで発表されたということです。

実は先行する類似サービスのShip というのがあるのですが、これを使うには Ship に WordPress.org の開発者アカウントのパスワードを渡さないといけない、という問題があって、この「他のサービスに別のサービスのパスワードを渡すの気持ち悪い」という問題を Deployer の方は解消しています。

それでは以下、手順を。

事前準備: 公式プラグインの申請

定められた手順でプラグインを作り、zipでまとめてアップロードして申請、数日待ちます。審査に通ったらメールでリポジトリの場所が送られてきます。

公式(WordPress.org)の SubVersion リポジトリの準備

Deployer も、新規に公式プラグインをリポジトリへ登録するところは対応していません。というかできません。WordPress 側にそのあたりを自動で行うようなAPIがないのです。ですので最初はいつもと同じ手動での登録作業が必要となります。

まずチェックアウト

> svn co https://plugins.svn.wordpress.org/embed-wider-flickr-photo/ embed-wider-flickr-photo

プラグインのコードをtrunk以下に入れて、チェックイン

> svn add trunk/* > svn ci -m "initial version"

GitHub の git レポジトリの準備

GitHub リポジトリに初期プラグインコードをチェックイン

Deployer の登録と GitHub との連携

* Deployer に sign up (または log in) 公式pluginディレクトリでもらったURL (例: https://wordpress.org/plugins/embed-wider-flickr-photo/ )を入れます * 来たメールのリンクを開いて設定画面へ * 設定画面で表示された "Payload URL" と "Secret” を、GitHub Webhook のフィールドへ転記。更新。

Deployerサービスにパスワードはなく、毎回ログインしようとする度に、メールアドレスへログインリンクが送られてくる仕様です。

WordPress.org の自分の plugin 管理の Admin メニュー

# 一度はsvn経由でcheck inしていないと、adminボタンが押せません。

プラグインページで Admin ボタンを押し、Committers に deployer を追加します。このコミッタに deployer ユーザーを追加する、というのが Ship と違う点で、パスワードを渡さずに更新作業は任せられるというサービスのミソの部分になっています。

プラグインを更新してみる

公式に反映させない変更は GitHub で普通に更新します。新バージョンを置く場合の手順は、

* readme.txt 中の Version: を上げる, changelog を追記する

$ git commit -m "version 1.0.3"

タグをつける $ git tag 1.0.3

タグを含めてGitHubへプッシュ $ git push origin master --tags

TortoiseGit(Windows)の場合

tortoisegit-push-with-tags

これで、WebHook が走り、Deployer が新バージョンを送り込んでくれるはずです。もしうまく動かない時は、Settings ページから Deployer の response で WebHook が返すエラーメッセージ等を確認しましょう。

travis-passed

assets の取り扱い

プラグインのスクリーンショットやアイコン画像を入れる assets ですが、GitHub でのルートを公式Subversion の trunk に反映させているため、GitHub 側で assets を置く場所が見当たりません。

Deployer は、git の branch を別に切って、assets ブランチにあるものを svn の /assets にシンクさせる、という仕様になっています。