Сценарий Gitlab условно
В .gitlab-ci.yml
есть 3 этапа - сборка, тестирование и развертывание.
Должен быть проведен ночной этап регрессионного теста - хорошо nightly
:)
Вот соответствующий .gitlab-ci.yml
код:
stages:
- build
- test
- deploy
build_project:
stage: build
script:
- cd ./some-dir
- build-script.sh
except:
- tags
#Run this only when say variable 'NIGHTLY_TEST == True'. But HOW?
nightly_regression_test_project:
stage: test
script:
- cd ./some-dir
- execute test-script
Отметка ежедневных событий only
run test
не предпочтительна.
Любая другая идея?
Ответы
Ответ 1
В случае, если кто-то ищет это сейчас, gitlab теперь реализовал функцию запланированной сборки с перезаписью переменных (невероятно удобно). Документация найдена здесь.
Для тех, кто интересуется инструкциями для этой функции, когда был дан этот ответ, вот оно:
Использование конвейерных расписаний
Чтобы запланировать конвейер:
- Перейдите к своему проекту Конвейеры → Расписания и нажмите кнопку Новое расписание.
- Заполните форму
- Нажмите Сохранить расписание конвейера, чтобы изменения вступили в силу.
Моя любимая особенность - запланированные переменные конвейера.
Документацию по переменным можно найти здесь, но самой полезной для меня информацией был приоритет, который я здесь перепишу:
Приоритет переменных
Переменные могут быть перезаписаны, и они имеют приоритет друг над другом в следующем порядке:
- Переменные или запланированные переменные конвейера (имеют приоритет над всеми)
- Секретные переменные уровня проекта или защищенные секретные переменные
- Секретные переменные на уровне группы или защищенные секретные переменные
- Определенные YAML переменные уровня задания
- Определенные YAML глобальные переменные
- Переменные развертывания
- Предопределенные переменные (самые низкие в цепочке)
Надеюсь это поможет. Я рад, что они добавили эту функцию.
Ответ 2
except
и only
могут указывать переменные, которые будут их запускать.
Вы можете использовать следующее в вашем .gitlab-ci.yml:
build1:
stage: build
script:
- echo "Only when NIGHTLY_TEST is false"
except:
variables:
- $NIGHTLY_TEST
test1:
stage: test
script:
- echo "Only when NIGHTLY_TEST is true"
only:
variables:
- $NIGHTLY_TEST
Ответ 3
В настоящее время нет способа запуска задания в зависимости от переменных среды (вы всегда можете открыть запрос функции!). Вы можете использовать простую команду Bash для немедленного выхода, если переменная среды не существует.
Что-то вроде:
stages:
- build
- test
- deploy
build_project:
stage: build
script:
- cd ./some-dir
- build-script.sh
except:
- tags
# Run this only when NIGHTLY_TEST environment variable exists.
nightly_regression_test_project:
stage: test
script:
- [ -z "$NIGHTLY_TEST" ] && exit 1;
- cd ./some-dir
- execute test-script
Если переменная не существует, последующие тесты не будут выполняться. В противном случае они будут.
Надеюсь, что это поможет!
Ответ 4
Мне нужно строить свое производство только на вышестоящем мастере и только по тегам
Может ли кто-нибудь помочь мне с этим?
Ответ 5
Я только что реализовал эту "функцию", следуя примеру здесь
Используйте crontab и curl (я использую Linux, потому что почему бы и нет?), Чтобы настроить триггер для запуска ваших ночных тестов.
30 0 * * * curl --request POST --form token=TOKEN --form ref=master https://gitlab.example.com/api/v3/projects/9/trigger/builds