Действия Github с использованием матрицы для запуска нескольких команд в одном задании в циклеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Действия Github с использованием матрицы для запуска нескольких команд в одном задании в цикле

Сообщение Anonymous »

У меня довольно дорогой рабочий процесс действий на 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»