-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Taroskyのオーガニゼーションで共有しているワークフロー&複合アクションです。
.github/workflowsに格納されています。それ自体で完結します。各オプションはymlファイルの先頭に記載されているinputs項目で確認できます。オプションはjob内のwithで指定します。
PHP+MySQL+WordPressをインストールし、ユニットテストを行います。リポジトリにcomposerが入っており、PHPUnitをcomposer scriptから実行できる必要があります。
デフォルトのコマンドは test です。変更する場合は composer_command: unittest というように指定してください。
jobs:
test:
strategy:
matrix:
php: [ '7.3', '7.4', '8.0' ] # PHP versions to check.
wp: [ 'latest', '5.9' ] # WordPress version to check.
uses: tarosky/workflows/.github/workflows/wp-unit-test.yml@main
with:
php_version: ${{ matrix.php }}
wp_version: ${{ matrix.wp }}WordPressのテスト環境を動作させるためには、WordPressテストスイートを用意しなければならず、WP-CLIチームがメンテナンスしているinstall-wp-tests.shなどを使うことが求められます。
このアクションでは指定したWordPressとPHPのバージョンをインストールし、MySQLを起動してテストのための環境を用意します。
wp-envのようなDockerを使って開発している場合はGitHub ActionsでDockerを動かすことでローカルと同じテスト環境を再現できます。
PHPでcomposerをインストールし、スクリプトを実行します。composer lint で動作します。コマンド名を変更する場合は composer_command: lint_php で指定してください。
jobs:
phpcs:
uses: tarosky/workflows/.github/workflows/phpcs.yml@main
with:
version: 8.0PHP8.0から <? が非推奨となりましが、この記法はPHP_CodeSnifferでは見つけることができないケースがあり、この結果、本番環境でFatal Errorを起こすことがありました。
このワークフローではPHPファイルをスキャンし、ショートオープンタグを見つけるとエラーになります。
pathでスキャンするパスを指定してください。デフォルトはリポジトリルートです。
jobs:
php-shor-open-tag:
uses: tarosky/workflows/.github/workflows/php-short-open-tag.yml@main
with:
path: 'wp-content/themes/my-theme' # WordPressを丸ごとディレクトリに入れている場合などWordpress公式ディレクトリでは、SVNのpre-commitフックでphp -l file.php を全PHPファイルに対して実行し、エラーが起きるとリジェクトします。composerなどを利用している場合、vendorディレクトリの中にある依存ライブラリがひっかかるケースもあり、なおかつデプロイという最終段階になってはじめて露見するので、事前にこのチェックを通過しておくとわかりやすいです。
pathでスキャンするパスを指定してください。デフォルトはリポジトリルートです。
W.I.P ビルドスクリプトの指定などは実装予定です。
jobs:
phplint:
uses: tarosky/workflows/.github/workflows/phplint.yml@main
with:
version: 8.1 # デプロイする際のPHPバージョンがわかっている場合など
path: 'wp-content/themes/my-theme' # WordPressを丸ごとディレクトリに入れている場合などNodeをインストールし、npmでテストを行います。npm スクリプトで lint が動作することが前提です。また、packageにコマンド名を渡すことで、ビルドが成功するかを検証することも可能です。これはdependabotなどを有効にしている場合に活用できます。
jobs:
assets:
uses: tarosky/workflows/.github/workflows/npm.yml@main
with:
node_version: 16 # デフォルトは14
command: test # デフォルトは lint
package: build # この場合、 npm run build を実行。指定なしなら何もしないBacklogの課題番号がコミットメッセージに含まれている場合、通知を行います。
- tarosky-bot というユーザーがBacklogの当該プロジェクトのメンバーになっている必要があります。
-
BACKLOG_API_KEYという名称でAPIキーがプロジェクトまたは組織で利用できる必要があります。 -
secrets: inheritを指定し、BacklogのAPIキーをワークフローが利用できるようにしてください。 -
hostを変更すると、Backlog スペースを変更できます。
jobs:
notify:
uses: tarosky/workflows/.github/workflows/backlog.yml@main
with:
project: PJ_STANDARD
secrets: inheritタグでプロダクションをリリースするような場合、そのタグがメインブランチに所属しているかどうかを確認します。 リリース用のジョブの前に実行してください。
jobs:
# タグ付きコミットなら、それがmainブランチにあるのかチェックする
tags-check:
uses: tarosky/workflows/.github/workflows/check-tag-in-branch.yml@main
if: contains(github.ref, 'refs/tags/')
with:
allowed_branch: "main"
# リリース作業のジョブ
release:
needs: tag-check # mainブランチのタグだけで実行
environment:
name: production
url: https://example.com
steps:
# 以下、リリース作業のステップ 設定したトリガーから指定するブランチへのPRを自動で作成します。デフォルト値では main ブランチへのPRが指定されており、staging ブランチから main ブランチへの自動PR作成を想定しています。PRのマージ先ブランチ名、PRタイトル、PRボディテキスト、付与するラベルを指定できます。
name: Auto PR to main branch from staging
on:
push:
branches: [staging]
jobs:
auto-pr:
uses: tarosky/workflows/.github/workflows/auto-pr.yml@main複合アクションは job.steps で指定します。workflowと同様、オプション項目をwithで指定します。
.distignore ファイルがリポジトリにある場合、記載されているファイルをすべて削除します。リリース前の処理などに便利です。
jobs:
release:
steps:
- name: Clean Package
uses: tarosky/workflows/actions/distignore@mainREADME.md をWordPressに対応した readme.txt に変換します。wp-readmeを利用しています。
jobs:
release:
steps:
- name: Generate readme.txt
uses: tarosky/workflows/actions/wp-readme@mainGitHubのタグ情報を元に、style.cssなどのタグを書き換えます。prefix を指定すると、 version から削除する文字列を指定できます。
jobs:
release:
steps:
- name: Versioning
uses: tarosky/workflows/actions/versioning@main
with:
version: ${{ github.ref }} # 大体の場合はGitHubのタグを参照します。
files: style.css # カンマ区切りで記載できます。