GitLab 13.5から実装されたCI/CDの
Parallel matrix
を使ってみたのでメモっておきます。
GitLab CI/CD matrix
環境
項目 | バージョン | 備考 |
---|---|---|
GitLab | 13.6.1 | |
GitLab Runner | 13.6.0 | |
Docker | 1.13.1 | Runnerの環境 |
matrixで何ができるの?
今までのGitLabで同じテスト内容を複数の環境(バージョン違いなど)で実行しようとした場合、環境毎に記述する必要がありましたが、matrixを使う事で簡易的に書けるようになりました。
他のCIサービスでは出来ていた機能ですが、GitLabでも出来るようになりました。
matrixを使ってみる
matrix
を使う場合は parallel
に記述します。
以下の例では multi-version-test
でmatrixに定義されているバージョンの環境を用意する gitlab-ci.yml
です。
matrixで定義した値はキー名の変数で参照することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
image: fedora:33 stages: - test multi-version-test: stage: test before_script: - dnf -y install $PYTHON - curl https://bootstrap.pypa.io/get-pip.py | $PYTHON - $PYTHON -m pip install ansible==$ANSIBLE_VERSION script: - $PYTHON --version - ansible --version parallel: matrix: - PYTHON: - "python3.6" - "python3.7" ANSIBLE_VERSION: - "2.9.15" - "2.10.3" |
これを実行すると以下の組み合わせの環境が multi-version-test
で構築されます。
Pythonバージョン | Ansibleバージョン |
---|---|
3.6 | 2.9.15 |
3.6 | 2.10.3 |
3.7 | 2.9.15 |
3.7 | 2.10.3 |
実行結果
multi-version-test
で4つのテストが並行して実行されます。
環境も問題なく出来上がってることをが確認できます。
テストの表示名は次のようになります。
同時にジョブを実行させる場合は、gitlab-runnerのconfig.tomlの設定で concurrent
の数をデフォルトの1から変更する必要があります。