Compare commits

..

83 Commits

Author SHA1 Message Date
93e22c053f Fix 2023-02-17 16:50:38 +03:00
6c34d3a7dc MXE 2022-12-02 13:47:00 +03:00
7d01aa11f9 update 2022-10-10 07:34:34 +03:00
21ad81dd39 update 2022-10-09 22:06:12 +03:00
77c7e231d2 key 2022-10-09 05:14:31 +03:00
4e46683533 key 2022-10-09 05:12:11 +03:00
814bc9e7ee ssh 2022-10-09 05:00:31 +03:00
08839e3edd ??? 2022-10-09 04:49:15 +03:00
f739ead5fc tags 2022-10-09 02:39:23 +03:00
040d974515 Путь к qmake задаётся переменной 2022-10-08 20:45:37 +03:00
7fedc96bed mxe 2022-10-08 20:36:48 +03:00
84b91698a8 Путь к cmake задаётся переменной 2022-10-08 20:06:08 +03:00
9c79f48f64 mxe 2022-10-08 18:58:06 +03:00
239a770d9e uncrustify 2022-10-08 18:28:05 +03:00
dce82aac2c uncrustify 2022-10-08 18:26:08 +03:00
02c8d3c541 Обновление 2022-10-08 17:41:23 +03:00
2b33bd88e6 Тест 2022-10-07 18:21:02 +03:00
e92f4d1491 Тест использования ключа 2022-10-07 16:44:07 +03:00
4db5c48eb3 Правка скрипта для qmake 2022-04-19 19:37:00 +03:00
a68e81fb74 Оптимизация шаблона 2022-04-14 13:14:06 +03:00
948fa3cf78 Правка логики сборщика qmake 2022-04-14 11:41:40 +03:00
07a0d1af32 Проба множественного extends 2022-04-14 11:32:39 +03:00
5492743c91 Сборка с qmake по умолчанию использует Qt5 2022-04-14 11:28:44 +03:00
86167f5197 Путь к файлу ${CI_JOB_NAME}.status 2022-04-14 11:27:06 +03:00
8e5d8923da Обобщённый пример сборки для qmake 2022-04-14 10:29:31 +03:00
f493b6fc27 Параметры для PVS-Studio 2022-04-12 15:10:15 +03:00
a304a9264a Исправлен обобщенный запуск clang-tidy для CMake 2022-04-12 15:02:08 +03:00
deb42b2e49 Путь к файлу PVS-Studio.log 2022-04-12 14:56:27 +03:00
92a86ea9d7 Правка названий целей 2022-04-12 14:51:12 +03:00
86de640b93 Правка аргументов 2022-04-12 14:30:46 +03:00
fedb344df7 Правка аргумента для параллельной компиляции 2022-04-12 14:03:40 +03:00
1a7f20fbc5 Совместимость с CMake 3.6 2022-04-09 03:53:44 +03:00
6edb358fe8 Фильтр для пакетов 2022-04-08 15:15:08 +03:00
2ba91d76f9 Выбор компилятора 2022-04-07 19:14:38 +03:00
1fec1900d5 Ключ для make 2022-04-07 17:32:49 +03:00
78d93cb0a7 Правка синтаксиса 2022-04-07 17:25:44 +03:00
2801ee0c41 Переписаны инструкции для запуска статических анализаторов 2022-04-07 17:09:17 +03:00
6ab3af81b4 Явное указание версии clang-tidy 2022-04-07 13:03:20 +03:00
b343e06dc4 Использование компилятора clang для анализа кода 2022-04-07 13:00:56 +03:00
00f9228041 Поддержка Clang-Tidy 2022-04-07 11:09:36 +03:00
accf5f4dac Настройка анализатора 2022-04-07 10:46:07 +03:00
befdf4a4e0 Поддержка PVS-Studio 2022-04-07 10:18:59 +03:00
b7a4f7f8c1 Сборка в Астра Смоленск 1.7 2022-04-06 17:23:50 +03:00
bbf0a85035 Переименование шаблонного файла 2022-01-30 20:06:21 +03:00
f2ad650fb5 Merge branch 'master' of git.246060.ru:f1x1t/gitlab-ci 2022-01-28 18:40:57 +03:00
42242a8ca5 Поддержка MXE 2022-01-28 18:19:39 +03:00
da946270b9 Поддержка Ubuntu Jammy 2022-01-28 18:17:57 +03:00
b7a1afd4e0 Поддержка Ubuntu Jammy 2022-01-28 16:42:09 +03:00
92dc9a01ad Синтаксис команд скрипта 2022-01-28 10:57:41 +03:00
5f8922409e Дополнительные правила для форматирования 2022-01-28 10:36:37 +03:00
ada2211a20 Использование отдельного runner для проверки форматирования 2022-01-28 09:53:37 +03:00
a24ac1eed8 Установка значений переменных закомментирована 2021-10-13 11:13:51 +03:00
a22839ed83 Разрешение запуска через web 2021-07-06 16:05:34 +03:00
590461f0ad Генератор для cmake задаётся переменной окружения в примере 2021-06-30 16:58:16 +03:00
9524c94242 Явное включение параллельной компиляции 2021-06-30 16:37:32 +03:00
dba70c08c7 Генератор для cmake задаётся переменной окружения 2021-06-30 16:36:43 +03:00
7d6a15d63a Вызов стадий сборки проекта программой cmake 2021-06-30 16:20:00 +03:00
bc6dc12be5 Правило для проверки форматирования кода 2021-02-19 11:12:46 +03:00
7f4501187c Убраны лишние остатки эксперимента 2020-06-28 22:59:20 +03:00
fc757f986e Лишняя команда 2020-06-26 20:34:20 +03:00
469a91014e Автоматическая сборка без оптимизации для ускорения 2020-06-26 05:31:36 +03:00
8acbb12477 Revert "Автоматическая сборка без оптимизации для ускорения"
This reverts commit 3447ad0970.
2020-06-26 05:29:52 +03:00
6f011a5185 Revert "Revert "Правка""
This reverts commit 388fc76cce.
2020-06-26 05:29:19 +03:00
388fc76cce Revert "Правка"
This reverts commit dc26cabe5e.
2020-06-26 05:29:15 +03:00
dc26cabe5e Правка 2020-06-26 05:22:45 +03:00
7c82e200e6 Создание индексов для навигации по коду 2020-06-26 05:18:07 +03:00
3447ad0970 Автоматическая сборка без оптимизации для ускорения 2020-06-26 04:45:45 +03:00
b1d84f790c Возврат к вызову через ninja 2020-06-26 04:40:10 +03:00
00ff2fda15 Revert "Revert "Подробный вывод команд сборки""
This reverts commit 7e7f7418d4.
2020-06-26 04:37:48 +03:00
7e7f7418d4 Revert "Подробный вывод команд сборки"
This reverts commit 9bd15d174f.
2020-06-26 04:37:27 +03:00
5d918af45c Вызов команд через CMake 2020-06-26 04:32:24 +03:00
9bd15d174f Подробный вывод команд сборки 2020-06-26 04:13:20 +03:00
0a7c2107d3 Исходники добавлены к результатам сборки 2020-06-17 08:21:09 +03:00
95bde2fb7a Расширения функционала 2020-05-20 18:24:40 +03:00
5746c80016 Комментарии 2020-05-17 11:01:00 +03:00
9c4cfab6ed Исправлена документация 2020-05-14 10:50:41 +03:00
27e9a6a087 Исправлен пример подключения 2020-05-14 10:49:51 +03:00
f6d0a8d616 Изменён путь к файлу 2020-05-14 10:47:16 +03:00
0995c3b605 Обновление правил 2020-05-14 10:13:49 +03:00
6458cc797d Обновление документации 2020-04-09 15:30:25 +03:00
cf29d92f28 Документация 2020-04-08 17:19:23 +03:00
2a4e0825b0 Merge branch 'master' of gitlab.2:f1x1t/gitlab-ci 2020-04-08 17:17:53 +03:00
3763dc4b78 Возможность вызова команд для установки пакетов 2019-09-25 15:45:43 +03:00
3 changed files with 343 additions and 43 deletions

42
.gitlab-ci.yml.example Normal file
View File

@ -0,0 +1,42 @@
include:
- project: 'f1x1t/gitlab-ci'
ref: master
file: 'scheduled.yml'
smolensk15-nightly:
# variables:
# CMAKE_GENERATOR: Unix Makefiles
# UPDATE_CMD: apt-get update
# INSTALL_CMD: apt-get -y install cmake
# CONFIGURE_CMD: cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=_output -DCPACK_PACKAGING_INSTALL_PREFIX=/opt/rtis ..
# BUILD_CMD: make -j$(nproc)
# PACKAGE_CMD: tar zcf test.tar.gz
extends: .scheduled-smolensk15
orel212-nightly:
extends: .scheduled-orel212
bionic-nightly:
extends: .scheduled-bionic
focal-nightly:
extends: .scheduled-focal
jammy-nightly:
extends: .scheduled-jammy
elbrus-nightly:
extends: .scheduled-elbrus
check-format-sources:
only:
- merge_requests
extends: .check-format-sources
analyze-pvs:
when: manual
extends: .analyze-pvs
analyze-clang-tidy:
when: manual
extends: .analyze-clang-tidy

View File

@ -1,22 +1,19 @@
# Шаблон для автосборки проекта # Шаблон для автосборки проекта
Скопировать файл `scheduled.yml` в каталог проекта `.gitlab-ci` и Скопировать файл `.gitlab-ci.yml` в каталог проекта.
подключить его в файле `.gitlab-ci.yml`. Пример:
```yaml Переменная `UPDATE_CMD` содержит команду для обновления репозитория пакетов
include: в контейнере, выполняющем сборку проекта.
- local: /.gitlab-ci/scheduled.yml
smolensk15-nightly: Переменная `INSTALL_CMD` содержит команду для установки дополнительных пакетов
extends: .scheduled-smolensk15 в контейнер, выполняющий сборку проекта.
orel212-nightly: Переменная `CONFIGURE_CMD` содержит команду конфигурирования проекта,
extends: .scheduled-orel212 если стандатный вариант не подходит.
bionic-nightly: Переменная `BUILD_CMD` содержит команду сборки проекта,
extends: .scheduled-bionic если стандатный вариант не подходит.
elbrus-nightly: Переменная `PACKAGE_CMD` содержит команду упаковки результов сборки проекта,
extends: .scheduled-elbrus если стандатный вариант не подходит.
```

View File

@ -1,11 +1,91 @@
variables: variables:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
GET_SOURCES_ATTEMPTS: 10 GET_SOURCES_ATTEMPTS: 10
CI_SOURCE_DIR: .
CI_BUILD_DIR: _build
CI_OUTPUT_DIR: _output
CI_CMAKE: /usr/bin/cmake
CI_QMAKE5: /usr/bin/qmake
.add-ssh-key:
before_script:
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
.use-clang:
variables:
CXX: clang++-14
CC: clang-14
.use-ninja:
variables:
CMAKE_GENERATOR: Ninja
.qmake-script:
variables:
QT_SELECT: qt5
script:
- >
if [ -f "${CI_JOB_NAME}.status" ]; then
if [ "$(cat ${CI_JOB_NAME}.status)" == "${CI_COMMIT_SHA}" ]; then
echo "=== Commit ${CI_COMMIT_SHORT_SHA} already tested with job ${CI_JOB_NAME} ==="
exit 0
fi
fi
- rm -f ${CI_JOB_NAME}.status
- mkdir -p ${CI_BUILD_DIR}
- ${CI_QMAKE} -o ${CI_BUILD_DIR}/Makefile ${QMAKE_PRO_FILE}
- make -j8 -C ${CI_BUILD_DIR}
- echo "${CI_COMMIT_SHA}" > "${CI_JOB_NAME}.status"
.cmake-script:
extends: .use-ninja
script:
- >
if [ -f "${CI_JOB_NAME}.status" ]; then
if [ "$(cat ${CI_JOB_NAME}.status)" == "${CI_COMMIT_SHA}" ]; then
echo "=== Commit ${CI_COMMIT_SHORT_SHA} already tested with job ${CI_JOB_NAME} ==="
exit 0
fi
fi
- rm -f ${CI_JOB_NAME}.status
- >
if [ -n "${CONFIGURE_CMD}" ]; then
${CONFIGURE_CMD}
else
${CI_CMAKE} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=${CI_OUTPUT_DIR} -DCPACK_PACKAGING_INSTALL_PREFIX=/opt/ecs5 -B${CI_BUILD_DIR} -H.
fi
- >
if [ -n "${BUILD_CMD}" ]; then
${BUILD_CMD}
else
${CI_CMAKE} --build ${CI_BUILD_DIR}
fi
- >
if [ -z "${CI_SHARED_ENVIRONMENT+x}" ]; then
if [ -n "${PACKAGE_CMD}" ]; then
${PACKAGE_CMD}
else
${CI_CMAKE} --install ${CI_BUILD_DIR}
${CI_CMAKE} --build ${CI_BUILD_DIR} --target package || true
${CI_CMAKE} --build ${CI_BUILD_DIR} --target package_source || true
fi
fi
- echo "${CI_COMMIT_SHA}" > "${CI_JOB_NAME}.status"
.scheduled-test: .scheduled-test:
only: extends: .cmake-script
refs: rules:
- schedules - if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_MERGE_REQUEST_ID
when: manual
allow_failure: true
cache: cache:
paths: ['*.status'] paths: ['*.status']
before_script: before_script:
@ -17,62 +97,243 @@ variables:
fi fi
fi fi
- > - >
if [ -n "${APT_UPDATE_CMD}" ]; then if [ -n "${UPDATE_CMD}" ]; then
${APT_UPDATE_CMD} ${UPDATE_CMD}
fi fi
- > - >
if [ -n "${APT_INSTALL_CMD}" ]; then if [ -n "${INSTALL_CMD}" ]; then
${APT_INSTALL_CMD} ${INSTALL_CMD}
fi fi
script:
- >
if [ -f "${CI_JOB_NAME}.status" ]; then
if [ "$(cat ${CI_JOB_NAME}.status)" == "${CI_COMMIT_SHA}" ]; then
echo "=== Commit ${CI_COMMIT_SHORT_SHA} already tested with job ${CI_JOB_NAME} ==="
exit 0
fi
fi
- rm -f ${CI_JOB_NAME}.status
- mkdir build
- cd build
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=_output -DCPACK_PACKAGING_INSTALL_PREFIX=/opt/rtis ..
- ninja
- >
if [ -z "${CI_SHARED_ENVIRONMENT+x}" ]; then
ninja install
ninja package
ninja package_source
fi
- echo "${CI_COMMIT_SHA}" > "../${CI_JOB_NAME}.status"
artifacts: artifacts:
paths: paths:
- build/*.xz - ${CI_BUILD_DIR}/*.gz
- build/*.deb - ${CI_BUILD_DIR}/*.xz
- ${CI_BUILD_DIR}/*.deb
- ${CI_BUILD_DIR}/*.changes
- ${CI_BUILD_DIR}/*.dsc
when: on_success when: on_success
expire_in: 10 days expire_in: 10 days
.scheduled-mxe-focal-shared-large:
variables:
CI_QMAKE: /usr/lib/mxe/usr/bin/x86_64-w64-mingw32.shared-qmake-qt5
CI_CMAKE: /usr/lib/mxe/usr/bin/x86_64-w64-mingw32.shared-cmake
CI_USE_MXE: 1
extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: mxe-focal-shared-large
tags: ['docker']
.scheduled-mxe-focal-static-large:
variables:
CI_QMAKE: /usr/lib/mxe/usr/bin/x86_64-w64-mingw32.static-qmake-qt5
CI_CMAKE: /usr/lib/mxe/usr/bin/x86_64-w64-mingw32.static-cmake
CI_USE_MXE: 1
extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: mxe-focal-static-large
tags: ['docker']
.scheduled-smolensk15: .scheduled-smolensk15:
extends: .scheduled-test extends: .scheduled-test
image: smolensk15-dev image: smolensk15-dev
tags: ['docker'] tags: ['docker']
.scheduled-smolensk16:
extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: smolensk16-dev
tags: ['docker']
.scheduled-smolensk17:
extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: smolensk17-dev
tags: ['docker']
.scheduled-orel212: .scheduled-orel212:
extends: .scheduled-test extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: orel212-dev image: orel212-dev
tags: ['docker'] tags: ['docker']
.scheduled-bionic: .scheduled-bionic:
extends: .scheduled-test extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: bionic-dev image: bionic-dev
tags: ['docker'] tags: ['docker']
.scheduled-focal: .scheduled-focal:
extends: .scheduled-test extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: focal-dev image: focal-dev
tags: ['docker'] tags: ['docker']
.scheduled-jammy:
extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
image: jammy-dev
tags: ['docker']
.scheduled-elbrus: .scheduled-elbrus:
extends: .scheduled-test extends: .scheduled-test
before_script:
- !reference [.add-ssh-key, before_script]
tags: ['elbrus'] tags: ['elbrus']
.check-format-sources:
extends: .use-ninja
before_script:
- !reference [.add-ssh-key, before_script]
image: jammy-dev
tags: ['format']
script:
- ${CI_CMAKE} -B ${CI_BUILD_DIR} .
- ${CI_CMAKE} --build ${CI_BUILD_DIR} --target check-format-sources
.myx-uncrustify-check:
extends: .use-ninja
before_script:
- !reference [.add-ssh-key, before_script]
image: jammy-dev
tags: ['format']
script:
- ${CI_CMAKE} -B ${CI_BUILD_DIR} .
- ${CI_CMAKE} --build ${CI_BUILD_DIR} --target myx-uncrustify-check
.format-sources-check-custom:
extends: .use-ninja
before_script:
- !reference [.add-ssh-key, before_script]
image: jammy-dev
tags: ['format']
script:
- >
if [ -n "${CHECK_FORMAT_SOURCES_CMD}" ]; then
${CHECK_FORMAT_SOURCES_CMD}
fi
.qmake-analyze-pvs-studio:
before_script:
- !reference [.add-ssh-key, before_script]
image: jammy-dev
tags: ['analyze']
script:
- ${CI_QMAKE} ${QMAKE_PRO_FILE}
- bear -- make -k -j$(nproc)
- pvs-studio-analyzer analyze -a 29 -j$(nproc)
- plog-converter -a "GA:1,2,3;64:1;OP:1,2;CS:1,2" -t errorfile PVS-Studio.log
.qmake-analyze-clang-tidy:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-clang
image: jammy-dev
tags: ['analyze']
script:
- ${CI_QMAKE} ${QMAKE_PRO_FILE}
- bear -- make -k -j$(nproc)
- run-clang-tidy-14 -checks=-*,bugprone-*,clang-analyzer-*,misc-*,modernize-*,performance-*,portability-*
.qmake-analyze-clazy:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-clang
image: jammy-dev
tags: ['analyze']
script:
- ${CI_QMAKE} ${QMAKE_PRO_FILE}
- bear -- make -k -j$(nproc)
- find . -name "*.cpp" -print0 | xargs -0 clazy-standalone --ignore-dirs=/usr -checks=level2 -p compile_commands.json
.cmake-analyze-pvs-studio:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-ninja
image: jammy-dev
tags: ['analyze']
script:
- >
if [ -n "${CUSTOM_ANALYZE_PVS}" ]; then
${CUSTOM_ANALYZE_PVS}
else
${CI_CMAKE} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B ${CI_BUILD_DIR} .
pvs-studio-analyzer analyze -a 29 -f ${CI_BUILD_DIR}/compile_commands.json -j -o ${CI_BUILD_DIR}/PVS-Studio.log
plog-converter -a "GA:1,2,3;64:1;OP:1,2;CS:1,2" -t errorfile ${CI_BUILD_DIR}/PVS-Studio.log
fi
.cmake-analyze-clang-tidy:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-ninja
extends: .use-clang
image: jammy-dev
tags: ['analyze']
script:
- >
if [ -n "${CUSTOM_ANALYZE_CLANG_TIDY}" ]; then
${CUSTOM_ANALYZE_CLANG_TIDY}
else
${CI_CMAKE} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B ${CI_BUILD_DIR} .
run-clang-tidy-14 -checks=-*,bugprone-*,clang-analyzer-*,misc-*,modernize-*,performance-*,portability-* -p ${CI_BUILD_DIR}
fi
.cmake-analyze-clazy:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-ninja
extends: .use-clang
image: jammy-dev
tags: ['analyze']
script:
- >
if [ -n "${CUSTOM_ANALYZE_CLAZY}" ]; then
${CUSTOM_ANALYZE_CLAZY}
else
${CI_CMAKE} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B ${CI_BUILD_DIR} .
find . -name "*.cpp" -print0 | xargs -0 clazy-standalone --ignore-dirs=/usr -checks=level2 -p ${CI_BUILD_DIR}/compile_commands.json
fi
.myxx-analyze-pvs-studio:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-ninja
image: jammy-dev
tags: ['analyze']
script:
- ${CI_CMAKE} -B ${CI_BUILD_DIR} .
- ${CI_CMAKE} --build ${CI_BUILD_DIR} --target myxx-analyze-pvs-studio --parallel
.myxx-analyze-clang-tidy:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-ninja
extends: .use-clang
image: jammy-dev
tags: ['analyze']
script:
- ${CI_CMAKE} -B ${CI_BUILD_DIR} .
- ${CI_CMAKE} --build ${CI_BUILD_DIR} --target myxx-analyze-clang-tidy --parallel
.myxx-analyze-clazy:
before_script:
- !reference [.add-ssh-key, before_script]
extends: .use-ninja
image: jammy-dev
tags: ['analyze']
script:
- ${CI_CMAKE} -B ${CI_BUILD_DIR} .
- ${CI_CMAKE} --build ${CI_BUILD_DIR} --target myxx-analyze-clazy --parallel