こんにちは、日高です。最近、RedmineのシステムテストをGitHub CIで実行するようにしました。今回はその経緯についてお話しします。
Redmineには、以前から CI (Continuous Integration) がありますが、Feature #30069 Use GitHub Actions as a secondary CI solution to run tests through the existing mirroring によって、GitHubのミラーリポジトリ のGitHub Actionsが正式にセカンダリCIとして運用されるようになりました。
以降本記事では、そのセカンダリCIを「GitHub CI」と呼称します。
Redmineにはシステムテストのテストコードが含まれていますが、これまではいずれのCIでも実行されていませんでした。そのため、テストコードがメンテナンスされず、いざローカルでテストを実行すると失敗することがよくありました。
そうなってしまうと、Redmineの動作が間違っているのか、システムテストのテストコードが間違っているのかを過去に遡って調べる必要があります。さらに、システムテストの失敗が常態化すると、本当の問題を見落とすリスクも高まります。
この状態を改善するために、GitHub CIでシステムテストを実行する提案を投稿しました。
システムテスト導入の主な方針は次の2点です。
当初は、既存のテストと同じように、RedmineがサポートするデータベースとRubyバージョンの全ての組み合わせに対してシステムテストを実行しようとしていました。しかし、コミッターの方と相談した結果、それらの組み合わせによってRedmineの動作が変わることはないと判断し、1つの組み合わせのみで実行する方針としました。
また、システムテストの実行には現状2〜3分ほどかかりますが、この方針により、他のテストと独立して並列実行できるため、全体のテスト時間が増えることもありません。
以前の記事 Redmineの不安定なシステムテストを修正した でも取り上げたように、コミュニティでは日々システムテストの改善が行われてきました。そのおかげで、システムテストは概ね安定して実行できるようになりました。
しかし、それでもまだー部のテストが失敗する可能性がある状態でした。そのため、しばらくの間はシステムテストの失敗を許容し、システムテストが失敗してもテスト全体が失敗にならないようにすることにしました。
- name: Run system tests run: bin/rails test:system env: GOOGLE_CHROME_OPTS_ARGS: headless,disable-gpu,no-sandbox,disable-dev-shm-usage # System tests might still be a bit unstable, so for now, even if a system test fails, # output the results and consider the overall test as successful. continue-on-error: true
システムテスト以外のテストは基本的に安定しており、常にテストがパスする状態が維持されていました。システムテストによって、テスト全体を頻繁に失敗する状態にすることは避けるべきと考えました。
システムテストを導入して2週間が経過しますが、現時点ではシステムテストも概ね安定しており、近く、この設定を解除するパッチを投稿するつもりです。
システムテストがCIで実行され、安定的にパスする状態が維持されるようになったことにより、劇的にRedmineの開発が進めやすくなったと感じています。今後も、本体の開発と同様に"斧を研ぐ"活動にも注力していきたいと思います。
![]() |
Redmineのランダムで失敗する不安定なシステムテストを修正しました。 |
![]() |
OSC2025名古屋でブース出展とセミナーを実施。多くの来場者と交流できました |
![]() |
パスワード管理ツール LastPass からApple標準「パスワード」アプリに移行。無料で複数デバイスで利用できるようになりました。 |
![]() |
Redmineのガントチャートの高速化に取り組み、サーバ側での処理時間を40%短縮できました。 |
![]() |
ファーエンドテクノロジーに入社しました。初めての環境であらゆることへの対応の早さに驚いています。 |
![]() |
RedMica 3.2 バージョンアップのお知らせ My Redmineで提供しているソフトウェアをRedMica(ファーエンドテクノロジー版Redmine) 3.1 から 3.2 へバージョンアップいたします。 |
![]() |
プロジェクト管理ツール「RedMica」バージョン 3.2.0をリリース Redmine互換のオープンソースソフトウェア 今日使える明日のRedmine「RedMica」の最新バージョン3.2.0をリリースしました。 |
![]() |
2025年6月12日 オライリー本の全冊公開日のお知らせ(もくもく勉強会も同時開催) ファーエンドテクノロジーが所蔵するオライリー本(全冊)公開日のご案内です。公開日には「もくもく勉強会」も同時開催します。 |
![]() |
エンタープライズプラン向け「優先サポート」を開始 My Redmineでは、エンタープライズプランをご契約のお客様向けにサポート対応を優先的に行う「優先サポート(プライオリティサポート)」を開始いたしました。 |
![]() |
Redmineの最新情報をメールでお知らせする「Redmine News」配信中 新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け |