redmica / redmica_ui_extension

This plugin adds useful UI improvements to RedMica.
GNU General Public License v2.0
41 stars 12 forks source link

Add GitHub actions configration #15

Closed ishikawa999 closed 3 years ago

ishikawa999 commented 3 years ago

このリポジトリにpushしたとき、forkリポジトリからこのリポジトリに対してプルリクエストを作ったとき、CI実行履歴から手動で再実行を選択したときに

RAILS_ENV=test bundle exec rake test TEST=plugins/redmica_ui_extension/test
RAILS_ENV=test bundle exec rake test

を実行します。

テスト対象:
RedMica:

DB:

の各組み合わせごとにテストを実行します。(6パターン)

これを動かすための環境作りについて説明: 実行速度を上げるためにRedMicaが動くために必要なライブラリが入っているredmica/redmica:latestイメージの上でテストを実行します。 redmica/redmica:latestにはproductionモードで動くためのdatabase.ymlやgem、ライブラリしか入っていないためsetup_redmica.shで必要なコマンドを実行しています。

また、masterブランチ最新のRedMicaはredmica/redmica:latestの/usr/src/redmineディレクトリの中身をまるごとGitHubから取得したmasterブランチ最新のコードに置き換えることで動かしています。(かなり強引で、今後上手く動かなくなる可能性あり) 今後動かなくなったらredmica/redmica:latest上でテストするのをやめ、masterブランチ最新のRedMicaのテストができるDockerfile, docker-compose.ymlを書いてそれをGitHub Actionsで実行する形にするつもりです。 最初からそのやり方でも良いですが、書くコードの量が増えたり実行時間が増えたりするので一旦今の簡単な仕組みで実装してしまいたいと思っています。

ishikawa999 commented 3 years ago

@yui-har

レビューをお願いいたします。急ぎではないです。 意図が伝わらない処理などありましたらご質問ください。

実行したら次のような結果がActionsタブで確認できるようになります。(この結果はGitHubにログインしていないユーザーでも見ることができます) https://github.com/ishikawa999/redmica_ui_extension/actions/runs/776274073

ishikawa999 commented 3 years ago

application_system_test_case.rb を書き換えているのは、他のコンテナ(selenium/standalone-chrome-debug:3.141.59-europium)にChromeを持っている関係で次のような変更を加えないとsystemテストが動かないためです。

@@ -43,13 +43,17 @@ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
                     }
                   }
                 )
-
+  options[:browser] = :remote
+  options[:url] = "http://chrome:4444/wd/hub"
+  Capybara.server_host = IPSocket.getaddress(Socket.gethostname)
+  Capybara.server_port = 3000
   driven_by(
     :selenium, using: :chrome, screen_size: [1024, 900],
     options: options
   )

   setup do
+    Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
     # Allow defining a custom app host (useful when using a remote Selenium hub)
     if ENV['CAPYBARA_APP_HOST']
       Capybara.configure do |config|
ishikawa999 commented 3 years ago

ご確認いただきありがとうございました。マージしました。