単一のジョブとして実行される次のパイプラインのバージョンがあり、このすべてに 6 分もかかりませんでした。次に、パイプラインを更新して個別のジョブに分割し、どれが失敗したかを簡単に把握できるようにしました。現在、パイプラインの合計は 15 分以上です。各ジョブは独自のパイプラインと見なされ、ティアアップ/ダウン プロセスには 4 つの異なるジョブで長い時間がかかると想定することしかできません。この GitLab CI をリファクタリングして元の 6 以下の時間に戻す方法についてのアドバイスを探しています。
image: cirrusci/flutter:stable
before_script:
- flutter pub get
- flutter clean
- flutter --version
stages:
- build-aot
- analyze
- format-check
- test-on-machine-with-coverage
build-aot:
stage: build-aot
script:
- flutter build aot
only:
- master
- merge_requests
except:
variables:
- $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master"
analyze:
stage: analyze
script:
- flutter analyze
only:
- master
- merge_requests
except:
variables:
- $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master"
format-check:
stage: format-check
script:
- flutter format --set-exit-if-changed lib test
only:
- master
- merge_requests
except:
variables:
- $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master"
test-on-machine-with-coverage:
stage: test-on-machine-with-coverage
script:
- flutter pub global activate junitreport
- export PATH="$PATH":"$HOME/.pub-cache/bin"
- flutter test --machine | tojunit -o report.xml
- flutter test --coverage ./lib
- lcov -r coverage/lcov.info '*/__test*__/*' -o coverage/lcov_cleaned.info
- genhtml coverage/lcov_cleaned.info --output=coverage
artifacts:
when: always
paths:
- rspec.xml
- coverage
reports:
junit:
- report.xml
only:
- master
- merge_requests
except:
variables:
- $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master"