У меня довольно дорогой рабочий процесс действий на GitHub, и я пытаюсь сократить общее время, необходимое для его запуска. У меня большая матричная конфигурация, потому что мне нужно протестировать свою библиотеку на разных версиях C++ для разных версий компилятора. Моя конфигурация выглядит следующим образом:
Код: Выделить всё
name: All OS
on: [push, pull_request]
jobs:
linux-clang:
name: Clang ${{ matrix.clang }} Linux C++${{ matrix.cxx }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
clang: [16, 17, 18, 19, 20, 21]
cxx: [20, 23, 26]
exclude:
- clang: 16
cxx: 23
- clang: 17
cxx: 23
- clang: 17
cxx: 26
- clang: 16
cxx: 26
steps:
- uses: actions/checkout@v4
# ... download and install compilers, toolchain tools, package managers and more ...
- name: 'Run CMake' # compile and run tests
uses: lukka/run-cmake@v10
with:
configurePreset: 'ci-linux'
buildPreset: 'ci-linux'
testPreset: 'ci-linux'
configurePresetAdditionalArgs: "['-DCMAKE_CXX_STANDARD=${{ matrix.cxx }}']"
Поскольку для всех значений cxx в матрице я использую одну и ту же машину, один и тот же исходный код и одни и те же компиляторы, я подумал, возможно, я мог бы уменьшить количество дублирования дорогостоящих шагов и, возможно, вызвать последнее действие «Запустить CMake» в цикле для каждого значения cxx в матрице. К сожалению, я не знаю, как это сделать в действиях GitHub. Я мог бы написать это от руки, но это не учло бы исключения (которые очень важны)
Подробнее здесь:
https://stackoverflow.com/questions/797 ... -in-a-loop