WordPress プラグインのリリース自動化|10up GitHub Actions で SVN 不要の効率的な更新フロー構築

WordPress のプラグインを効率的に公開・配布するためには、 WordPress.org へのプラグイン公開とアップロードが欠かせません。DigitalCube でも、 Amimoto でご利用頂く機能をC3 Cloudfront Cache ControllerプラグインやAMIMOTO Plugin Dashboardプラグインとして公開しています。

この記事では、WordPress プラグインを WordPress.org にリリースする作業を効率化・自動化するための GitHub Actions をご紹介します。SVN コマンドを利用することなく、また、テストやビルドが成功した時などの特定条件でのみリリースできる仕組みを構築するためにも、ぜひこの GitHub Actions の導入をご検討ください。

WordPress プラグインを WordPress.org に公開するメリット

WordPress の機能を拡張するプラグイン、顧客向けに個別開発したものだけでなく、様々な目的で多くの開発者が WordPress.org にプラグインを公開しています。これは自社プロダクトのプロモーションや有料機能を販売するためだけでなく、多くの案件で実装・採用することの多い機能を効率的に配布するためにも行われています。

WordPress.org にプラグインを公開することで、ユーザーは必要な拡張機能を WordPress 管理画面から1クリックでインストールできます。また、アップデートについても管理画面から1クリックで実施できるため、クライアントに納品した後の複数のサイトに対して脆弱性対応や PHP 最新版への対応などの変更を提供する場合にも、WordPress.org へのプラグインリリースと顧客へのアップグレードの案内のみで完了します。

WordPress.orgへの公開には、SVNの知識が必要

WordPress プラグインをWordPress.org に公開、リリースする際の問題の1つが SVN です。Git を利用したバージョン管理や開発フローに慣れた開発者にとって、プラグインの公開作業でのみ異なるバージョン管理ツールを利用するのは、思わぬミスや手順を思い出すための時間ロスなどにつながります。

また、個人が手動で行うリリース体制は、作業ミスの誘発やリリースタイミングの調整などでよりリリースが複雑になる可能性があります。

これらの問題を解決するのが、GitHub Actions を使った自動化です。

2つの GitHub Actions の紹介

10up が提供する WordPress 向け GitHub Actions は2種類あります。

まず一つ目が WordPress Plugin Deploy Action です。

これは新バージョンリリース時の完全自動デプロイを行います。GitHub でタグを作成した時にトリガーされ、プラグインの新バージョンを WordPress.org に自動デプロイしてくれます。機能追加、バグ修正、メジャーアップデートなどが対象となります。

二つ目は WordPress Plugin Asset Update Action で、readme やアセット更新の自動同期を担当します。指定ブランチへの push でトリガーされ、readme ファイルや画像アセットのみを WordPress.org に更新します。説明文修正、スクリーンショット更新、対応バージョン変更などに活用できるでしょう。

セットアップ方法

必要な準備

まず WordPress.org の SVN 認証情報(SVN ユーザー名と SVN パスワード)を用意してください。作成方法は、WordPress ハンドブックの記事を Google 翻訳などでチェックすることをお勧めします。

次に GitHub Secrets の設定を行います。リポジトリの Settings > Secrets で以下を設定してください。

プラグインデプロイ用ワークフロー

.github/workflows/deploy.yml を作成します。

name: Deploy to WordPress.org
on:
  push:
    tags:
    - "*"
jobs:
  tag:
    name: New tag
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: WordPress Plugin Deploy
      uses: 10up/action-wordpress-plugin-deploy@stable
      env:
        SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
        SVN_USERNAME: ${{ secrets.SVN_USERNAME }}

このアクションを追加すると、git tag v1.2.0 && git push origin v1.2.0 のようにタグを作成 push することで、GitHub Actions が WordPress.org に自動デプロイしてくれます。

アセット更新用ワークフロー

README.txtやスクリーンショットなどを更新するだけのワークフローも作れます。.github/workflows/assets-update.yml を作成しましょう。

name: Plugin asset/readme update
on:
  push:
    branches:
    - master
jobs:
  master:
    name: Push to master
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: WordPress.org plugin asset/readme update
      uses: 10up/action-wordpress-plugin-asset-update@stable
      env:
        SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
        SVN_USERNAME: ${{ secrets.SVN_USERNAME }}

readme.txt や .wordpress-org/ 内の画像を編集した後、git push origin master で master に push してください。GitHub Actions が WordPress.org に自動同期を行います。

ファイル構成のベストプラクティス

プロジェクト構成は以下のようになります。ポイントとなるのは、.wordpress-orgディレクトリです。このディレクトリに、プラグインのバナーやアイコンなどの情報を追加することで、GitHub Actionsを利用したデプロイや更新が可能となります。

your-plugin/

├── your-plugin.php              # メインファイル
├── readme.txt                   # WordPress.org 用 readme
├── .distignore                  # デプロイ除外ファイル指定
├── .wordpress-org/              # WordPress.org 専用アセット
│   ├── banner-1544x500.png     # プラグインバナー
│   ├── icon-128x128.png        # アイコン
│   └── screenshot-1.png        # スクリーンショット
├── .github/
│   └── workflows/
│       ├── deploy.yml          # リリース用
│       └── assets-update.yml   # アセット更新用
└── src/                        # 開発用ファイル

.distignore の活用

WordPress.org にアップロードしたくないファイルは .distignore で指定できます。

/.git
/.github
/node_modules
/src
/tests
.distignore
.gitignore
package.json
webpack.config.js

まとめ

WordPress を利用したサイトの制作や運用保守において、プラグインをどのように開発し、顧客に提供・配布するかは重要な課題です。WordPress.org でのプラグイン公開・配布は多くのクライアントやサービスのユーザーに対して効率的に機能とアップデートを提供することができる手段と言えるでしょう。

しかし一方で使い慣れない SVN の操作や、手動で Git リポジトリの情報を SVN に移すなどの作業は、思わぬミスや作業時間のロスを生み、そこからトラブルにつながる可能性もあります。

今回紹介した 10up の GitHub Actions を活用し、安全かつストレスのないリリースフローを構築しましょう。

参考リンク

あなたの WordPress を最適な設定で運用する方法を提案します!

今回ご紹介した内容を社内で提案・実装する際、専門知識がないと難しいと感じることもあるかもしれません。DigitalCube の提供する LabWorksでは、AWS などを活用した WordPress サイトの柔軟なカスタマイズや安定運用をサポートする様々なサービスを提供しています。

ウェブメディアに特化した提案や事例も複数ございます。開発や運用の支援を依頼する企業をお探しの場合は、ぜひ DigitalCube の LabWorks をご検討ください。

日本協創投資LegalOn Technologies
JOLLY GOOD!mikihouse
株式会社デジタルガレージ旭化成
SmartHRfreee
エピックベース株式会社INFOBAHN GROUP
Internet Society横浜市立大学附属病院 次世代臨床研究センター
有限会社ワグリクルートダイレクトスカウト
SHARPCanCam
日本協創投資LegalOn Technologies
JOLLY GOOD!mikihouse
株式会社デジタルガレージ旭化成
SmartHRfreee
エピックベース株式会社INFOBAHN GROUP
Internet Society横浜市立大学附属病院 次世代臨床研究センター
有限会社ワグリクルートダイレクトスカウト
SHARPCanCam
Contact

当社へご興味をお持ちいただきありがとうございます。
「こんなことやってみたい!」と、ぜひ気軽にご相談ください。
担当者よりご連絡差し上げます。