Redmine プラグインのテストを実行するためには、Redmine 本体を準備する必要がある。準備自体は難しいことはないが面倒ではある。
というわけで、テスト用の Redmine 環境をセットアップする GitHub Action を作った。
https://github.com/hidakatsuya/action-setup-redmine
使い方は README の通り。
- uses: hidakatsuya/action-setup-redmine@v1
with:
ruby-version: '3.2'
- uses: action/checkout@v4
with:
path: plugins/redmine_your_plugin
- run: |
bundle install
bin/rails redmine:plugins:test NAME=redmine_your_plugin
これだけで、redmine/redmine の master の Redmine でテストを実行することができる。
with にて、いくつかの設定が可能。
repository: Redmine のソースリポジトリ。例えば、ディストリビューションの RedMica の場合は redmica/redmica とする。デフォルトは redmine/redmineversion: リポジトリのタグやブランチ、コミットを指定。デフォルトは masterdatabase: Redmine で使うデータベース。SQLite3 (sqlite3) と PostgreSQL, MySQL (Docker公式のイメージタグ)を設定できる。デフォルトは SQLite3ruby-version: Ruby のバージョン。ruby/setup-ruby の ruby-version と同じ値を設定できるpath: Redmine をセットアップするディレクトリ。例えば redmine-src を設定すると、redmine-src ディレクトリに Redmine がインストールされる。デフォルトはカレントディレクトリ例えば、RedMica の v2.4 系の安定版の最新を PostgreSQL でセットアップしたい場合は次のようにする。
- uses: hidakatsuya/action-setup-redmine@v1
with:
repository: 'redmica/redmica'
version: 'stable-2.4'
database: 'postgres:14'
ruby-version: '3.2'
以上、詳細は README を参照。
元々、redmine_ip_filter のテスト環境を GitHub Action で作って pull request を投げようとしていて、 一通り書いたところで、Redmine のセットアップのステップを composite アクション に切り出してリファクタリングし、 最終的に、その切り出したアクションを単独のアクションにして今に至る。
GitHub Action は本当によくできていて、こういうことが数時間もあればできてしまう。素晴らしい。