Вопрос по gitlab CI
создать репозиторий в гитлабе и разделить его на несколько веток (mster, dev, pre-relase) dev - ветка разработки pre-relase - ветка подготовки к релизу master - ветка релиза
залить в ветку dev приложение с unittest'ами (можно взять с предмета "тестирование ПО")
создать файл CI/CD (непрерывная интеграция) в котором необходимо реализовать следующую логику:
- вы заливаете код в dev и тут нечего не должно происходить
- вы заливаете код в ветку pre-realse
- gitlab по средством CI/CD должен сделать тесты вашего ПО и если они проходят, то отправить ваш код в master
Ответы (1 шт):
Файл CI/CD делится на stage и job. Stage определяют последовательность. С помощью stage выполняют обычно один тип работы (сборка, тестирование, копирование и т.д.). Если предыдущий stage выполнится с ошибкой (скрипт вернет не 0), то следующий не начнется.
На job могут быть наложены условия выполнения через ключевое слово only. У нас случай простой, поэтому просто указываем имя ветки pre-realse.
С пунктом три самая сложность, т.к. нужно выбрать стратегию как заливать изменения. Самый правильный делать merge, можно через reset. В моем примере я просто отправляю изменения из текущей ветки в ветку master.
stages:
- test
- push
test_job
stage: test
only: pre-realse
script:
- my_test
push_job
stage: push
only: pre-realse
script:
- git push origin pre-realse:master
Можно все действия выполнить в одном этапе, но это идеологически неправильно и ненаглядно.