Skip to content
Takahashi Fumiki edited this page Feb 8, 2024 · 7 revisions

Taroskyのオーガニゼーションで共有しているワークフロー複合アクションです。

ワークフロー

.github/workflowsに格納されています。それ自体で完結します。各オプションはymlファイルの先頭に記載されているinputs項目で確認できます。オプションはjob内のwith指定します。

PHPUnit

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 }}

PHP CodeSniffer

PHPでcomposerをインストールし、スクリプトを実行します。composer lint で動作します。コマンド名を変更する場合は composer_command: lint_php で指定してください。

jobs:
  phpcs:
    uses: tarosky/workflows/.github/workflows/phpcs.yml@main
    with:
      version: 8.0

PHP Short Open Tag

PHP8.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を丸ごとディレクトリに入れている場合など

PHP Lint

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を丸ごとディレクトリに入れている場合など

npmテスト

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

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

自動PR

設定したトリガーから指定するブランチへの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

.distignore ファイルがリポジトリにある場合、記載されているファイルをすべて削除します。リリース前の処理などに便利です。

jobs:
  release:
    steps:
      - name: Clean Package
        uses: tarosky/workflows/actions/distignore@main

wp-readme

README.md をWordPressに対応した readme.txt に変換します。wp-readmeを利用しています。

jobs:
  release:
    steps:
      - name: Generate readme.txt
        uses: tarosky/workflows/actions/wp-readme@main

versioning

GitHubのタグ情報を元に、style.cssなどのタグを書き換えます。prefix を指定すると、 version から削除する文字列を指定できます。

jobs:
  release:
    steps:
      - name: Versioning
        uses: tarosky/workflows/actions/versioning@main
        with:
          version: ${{ github.ref }} # 大体の場合はGitHubのタグを参照します。
          files: style.css # カンマ区切りで記載できます。