Сценарий 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 теперь реализовал функцию запланированной сборки с перезаписью переменных (невероятно удобно). Документация найдена здесь.

Для тех, кто интересуется инструкциями для этой функции, когда был дан этот ответ, вот оно:

Использование конвейерных расписаний

Чтобы запланировать конвейер:

  1. Перейдите к своему проекту Конвейеры → Расписания и нажмите кнопку Новое расписание.
  2. Заполните форму
  3. Нажмите Сохранить расписание конвейера, чтобы изменения вступили в силу.

Моя любимая особенность - запланированные переменные конвейера.

Документацию по переменным можно найти здесь, но самой полезной для меня информацией был приоритет, который я здесь перепишу:

Приоритет переменных

Переменные могут быть перезаписаны, и они имеют приоритет друг над другом в следующем порядке:

  1. Переменные или запланированные переменные конвейера (имеют приоритет над всеми)
  2. Секретные переменные уровня проекта или защищенные секретные переменные
  3. Секретные переменные на уровне группы или защищенные секретные переменные
  4. Определенные YAML переменные уровня задания
  5. Определенные YAML глобальные переменные
  6. Переменные развертывания
  7. Предопределенные переменные (самые низкие в цепочке)

Надеюсь это поможет. Я рад, что они добавили эту функцию.

Ответ 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