GitHub Actions
GitHubの各イベントをトリガーとしたワークフローを起動させるものです。当初はBeta版利用の申し込み制だったんですが、いつの間にか正式リリースされてました。
https://github.co.jp/features/actions
やること
今回は、10upが公開しているGitHub Actionsのワークフローを使って、新しいバージョンのタグをpushしたときに公式のSVNリポジトリにも反映させる、ということをやっていきます。 実際にGitHub上で管理しているプラグインでやってみます。GitHub: https://github.com/pressmaninc/change-wp-cron-request-url
新しいバージョンのタグをpushしたときに公式のSVNリポジトリにも反映させる
新しいバージョンのタグをpushしたときに公式リポジトリにアップするactionを使います。GitHub: https://github.com/marketplace/actions/wordpress-plugin-deploy
以下の順序でやっていきます。
- assetsディレクトリを作る
- secretsを用意する
- バージョン管理から除外するファイルの設定をする
- yamlを用意する
- タグ付けしてpushしてみる
assetsディレクトリを作る
assets配下のファイルは指定されたディレクトリに移動する必要があります。デフォルトでは
.wordpress-org
ですが、ASSETS_DIR
で指定することもできます。今回はそのまま
.wordpress-org
にしてます。https://github.com/pressmaninc/change-wp-cron-request-url/tree/master/.wordpress-org
ここに、看板画像やアイコンを配置すると、公式リポジトリのassets配下に配置されます。
secretsを用意する
公式リポジトリのアクセス情報を用意するんですが、GitHubアクションから参照できるようにsectretsに設定しておきます。該当のGitHubリポジトリから、Settingsタブへ移動して、追加しておきます。
バージョン管理から除外するファイルの設定をする
ビルドには使用するけど公式リポジトリのバージョン管理には載せたくないファイルがいくつか存在するかと思います。例えば、以下のようなものが挙げられます。
- gitに関連するファイル (.gitignoreとか)
- テストモジュール
- composerやnpm, yarnなどのビルドに必要なファイル
.gitattributes
に記載することで除外出来ます。# Directories
/.wordpress-org export-ignore
/.github export-ignore
/bin export-ignore
/tests export-ignore
# Files
/.gitattributes export-ignore
/.gitignore export-ignore
/.phpcs.xml.dist export-ignore
/.travis.yml export-ignore
/phpunit.xml.dist export-ignore
yamlを用意する
.github/workflows
配下にワークフローを記述したyamlファイルを配置してあげます。name: Deploy to WordPress.org
on:
push:
tags:
- "*"
jobs:
tag:
name: New tag
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: WordPress Plugin Deploy
uses: 10up/action-wordpress-plugin-deploy@1.5.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
https://github.com/10up/action-wordpress-plugin-deploy/tree/master
タグ付けしてpushしてみる
あとはタグ付けしてpushすれば動作するはずです。Actionsタブからログを確認して動作確認をしてみます。
2020-06-14T07:10:15.9641686Z ##[group]Run 10up/action-wordpress-plugin-deploy@1.5.0
2020-06-14T07:10:15.9641846Z with:
2020-06-14T07:10:15.9641982Z generate-zip: false
2020-06-14T07:10:15.9643230Z env:
2020-06-14T07:10:15.9643814Z GITHUB_TOKEN: ***
2020-06-14T07:10:15.9643968Z SVN_PASSWORD: ***
2020-06-14T07:10:15.9644119Z SVN_USERNAME: ***
(略)
2020-06-14T07:10:25.3950966Z Committing transaction...
2020-06-14T07:10:25.3951242Z Committed revision 2323779.
2020-06-14T07:10:25.4097265Z Generating zip file...
2020-06-14T07:10:25.4109657Z adding: admin/ (stored 0%)
2020-06-14T07:10:25.4113118Z adding: admin/admin.php (deflated 71%)
2020-06-14T07:10:25.4113360Z adding: classes/ (stored 0%)
2020-06-14T07:10:25.4114274Z adding: classes/class-field-validator-interface.php (deflated 21%)
2020-06-14T07:10:25.4114632Z adding: classes/class-domain-validator.php (deflated 44%)
2020-06-14T07:10:25.4114969Z adding: classes/class-port-validator.php (deflated 44%)
2020-06-14T07:10:25.4118352Z adding: README.md (stored 0%)
2020-06-14T07:10:25.4120369Z adding: readme.txt (deflated 40%)
2020-06-14T07:10:25.4120848Z adding: change-wp-cron-request-url.php (deflated 65%)
2020-06-14T07:10:25.4121236Z ✓ Zip file generated!
2020-06-14T07:10:25.4121550Z ✓ Plugin deployed!
Plugin deployed!
となっているので成功です。失敗しているときは大体ここのログを漁っていれば原因がつかめます。
次回予告?
assetsの修正や最新バージョンのWordPressに追従するためにTested up to
を修正するなどは、プラグインをバージョンアップするまでもなかったりします 。その場合に便利なactionも用意されているので、気が向いたら書くかもしれません。。