2019年4月23日火曜日

[Cirrus CI] OSX VM 数制限対策としてマトリックスを直列にしてみた




OSX VM は1つしか使えない制限があり、その制限により CI が FAIL することがあったので対策しました。
もともとの YAML はこんな感じでした(一部抜粋)
cirrus_osx_test_task:
  only_if: *default-condition
  auto_cancellation: true
  osx_instance:
    image: mojave-xcode-10.1
  env:
    matrix:
      STDFLAG: -std=c++14
      STDFLAG: -std=c++17
  test_script: cd test && make -j4 showcxxversion default && make test


c++14 と c++17 コンパイルを並列していました。
単純にどちらかだけにしたら制限に引っかかることはなくなりますが、できれば減らしたくない条件です。
そこで、並列に実行するのではなく、直列で実行するようにしました。
修正した YAML はこんな感じです。
cirrus_osx_14_test_task: &osx_task
  only_if: *default-condition
  auto_cancellation: true
  osx_instance:
    image: mojave-xcode-10.1
  env:
    STDFLAG: -std=c++14
  test_script: cd test && make -j4 showcxxversion default && make test

cirrus_osx_17_test_task:
  <<: *osx_task
  env:
    STDFLAG: -std=c++17
  depends_on:
    - cirrus_osx_14_test
depends_on で依存を貼って、直列にしています。 YAML エイリアスが使えるため直列にしても記述量はさほど増えませんでした。メンテナンス性が問題になることはないでしょう。 ただし、実行時間が長くなるデメリットはあります。が、iutest の現状の開発ペースでは特に問題にならないのでこのようにしました。

今回は、これで以上です。
では。

0 件のコメント:

コメントを投稿