SVNにウンザリなあなたへ。WordPressプラグインを公式ディレクトリにGitでデプロイする方法

「WordPress公式プラグインディレクトリへのアップロード、毎回SVNを使うのが面倒くさい…」

「GitとSVN、二重管理になっていてミスが怖い…」

そんな悩み、GitHub Actions を使えば一発で解決します。

一度設定してしまえば、あとはGitHub上で「リリース」ボタンを押すだけ。裏側で自動的にSVNへのコミット作業を行ってくれます。

今回は、業界標準となっている 「10up/action-wordpress-plugin-deploy」 を使った、最も簡単で確実な設定手順を解説します。

必要なもの・準備

作業を始める前に、手元に以下があるか確認してください。

  • GitHubアカウント(プラグインのソースコードがあること)
  • WordPress.orgのアカウント(公式ディレクトリへのコミット権限があること)
  • 掲載済みのプラグインURL(まだ審査に通っていない場合は、審査通過後に行ってください)

手順の全体像

やることは大きく分けて4ステップです。

  1. WordPress.org で「SVN用パスワード」を取得する
  2. GitHub にそのパスワードを登録する
  3. Gitリポジトリ上で必要な設定を行う
  4. GitHubでリリースを作成する

これだけで、次回からWordPress公式リポジトリへの更新が完全自動になります。

Step 1: WordPress.org で SVNパスワードを取得

公式ディレクトリへのログインには、現在セキュリティ強化のため、普段のログインパスワードとは別の「SVN専用パスワード」が必要です。というわけで、最初にこのSVNパスワードを取得していきます。

まずはWordPress.org のプロフィールページ にログインし、Account & Security タブを開きます。

Two-factor app(2要素認証)が設定されていることを確認してください(必須です)。設定されていない場合は先に設定を行なってください。

SVN credentials のセクションをクリックし、Generate New Password をクリックすると、SVNパスワードが生成・表示されます。

表示された長いパスワードは二度と表示されないので、忘れずにメモしてください。 

Step 2: GitHub にパスワードを登録

GitHubのリポジトリに、先ほどのパスワードを安全に保存します。

GitHubのリポジトリを開き、Settings タブをクリック。左サイドバーの Secrets and variables > Actions を選択します。

New repository secret(緑のボタン)をクリックします。

以下の2つを順番に追加してください。

Name (名前)Secret (値)
SVN_USERNAMEあなたのWordPress.orgのユーザー名
SVN_PASSWORDStep 1で取得したSVN専用パスワード

これで、GitHubがあなたの代わりにSVNにログインできるようになります。

Step 3: 除外リスト (.distignore) を作成

Gitには必要だけど、プラグインの利用ユーザーには不要なファイル(開発用データなど)を指定します。

リポジトリの一番上の階層(ルート)に、.distignore という名前でファイルを作成し、WordPressプラグインの公式リポジトリに不要なファイルを記述します。

これはサンプルです。ご自身の環境に合わせて作成してください。

.git
.github/
.gitignore
.distignore
node_modules/
src/
vendor/
composer.json
composer.lock
package.json
pnpm-lock.yaml
vite.config.js
eslint.config.js
prettier.config.js
stylelint.config.js
test/
tests/

Step 4: 自動化ワークフローを作成

最後に、「いつ、何をするか」を書いた指示書(YAMLファイル)を置きます。

リポジトリの中に .github/workflows/ というフォルダを作成します(フォルダの中にフォルダを作る)。

その中に deploy.yml というファイルを作成します。

中身に以下をコピペします。

name: Deploy to WordPress.org
on:
  push:
    tags:
      - 'v*'

jobs:
  tag:
    name: New tag
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: pnpm/action-setup@v3
        with:
          version: 8

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install

      - name: Build
        run: pnpm run build

      - name: WordPress Plugin Deploy
        uses: 10up/action-wordpress-plugin-deploy@stable
        with:
          generate-assets: false
        env:
          SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
          SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}

この例では pnpm を使っていますが、npm をお使いの場合はこんな感じ↓

name: Deploy to WordPress.org
on:
  push:
    tags:
      - 'v*'

jobs:
  tag:
    name: New tag
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: WordPress Plugin Deploy
        uses: 10up/action-wordpress-plugin-deploy@stable
        with:
          generate-assets: false
        env:
          SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
          SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}

Step 5: アイコンやスクリーンショットを保存する

WordPressのプラグインページに表示されるアイコンやスクリーンショットなどは、本来 assets フォルダに入れていましたが、この構成では GitHubリポジトリのルートに .wordpress-org というフォルダを作り、そこにバナーやアイコンを入れておくだけでOKです。

自動デプロイ時に、賢いプログラムが勝手に画像を認識して、SVN側の正しい場所(assetsフォルダ)へアップロードしてくれます。

これで準備完了です!実際に新しいバージョンをリリースしてみましょう。

STEP 6: バージョン番号を更新する(超重要!)

必ず 以下の2箇所 のバージョン番号を揃えて、新しい数字(例: 1.0.1)に書き換えてください。

  • メインのPHPファイル(Version: 1.0.1
  • readme.txtStable tag: 1.0.1

これらを書き換えたら、Gitにコミット&プッシュしてください。

STEP 7: GitHubでリリースを作成する

GitHubリポジトリのトップページ右側にある Releases > Create a new release をクリック。

Select tag から新しいバージョン番号(例: 1.0.1)を入力して「Create new tag」を選択。

タイトルや説明を書いて、Publish release をクリック

STEP 8: 自動デプロイを見守る

Actions タブを開くと、自動的に処理が始まっているのが見えます。

すべてが緑色のチェックマークになれば成功です。数分後にはWordPress公式ディレクトリに反映されています。

失敗した場合はタイトル部分をクリックするとどこでエラーが起こっているか確認することができます。修正して新しくリリースを作成しましょう。

落とし穴: distフォルダの罠

たとえばViteを使っている場合、デフォルトのビルド出力先はdist となっています。しかし、これがデプロイエラーの原因となる罠が潜んでいます。

今回のように「10up/action-wordpress-plugin-deploy 」を使う際、プロジェクトルートにdistというディレクトリが存在すると、デプロイが失敗することがあります。

これは、アクションが「dist があるなら、それがビルド成果物だ」と自動判定し、ルートディレクトリを無視して distの中身だけをデプロイしようとするため。 その結果、ルートにある必須ファイル (readme.txt やメイン PHP ファイル) が欠落し、SVNコミット時にエラーになります。

最もシンプルな解決法は、Viteのビルド出力先を build などに変更する方法です。

import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    // 出力ディレクトリ
    outDir: 'build',
  },
});

おわりに

というわけで以上です。ちょっとの設定で、今後のWordPress公式リポジトリへのアップロードが飛躍的に楽になりますね。WordPressプラグイン開発をされていて、SVNに不便を感じていた方はぜひお試しください。