Сообщество!
Компания, в которой я работаю, движется в направлении Git и Gitlab-CI.У нас довольно большая кодовая база - для загрузки исходников требуется ~ 10 минут, для загрузки дополнительных материалов из nexus - ~ 20 минут, а для сборки - ~ 50 минут.Таким образом, абсолютно необходимо иметь инкрементные сборки - таким образом, мы можем получать исходные коды и создавать только обновленные файлы за несколько минут, а не> 1 ч.
К сожалению, стратегии по умолчанию для CI GitLab (в частности, выборки) не работают для инкрементныхbuild, так как они имеют жестко закодированный 'git clean -ffdx', который удаляет все неотслеживаемые файлы, поэтому требуется полная перестройка.Я закончил разработку своей собственной последовательности обновлений:
- git init
- git fetch --tags $ CI_REPOSITORY_URL + refs /heads / : refs / remotes / origin /
- git config remote.origin.url $ CI_REPOSITORY_URL
- git checkout -B $ CI_BRANCH_NAME origin / $ CI_BRANCH_NAME
Этот скрипт, кажется, работает на свежемкомпьютер (действует как клон), а также обновление существующего репо.В то же время я не уверен, что он работает должным образом, поскольку он работает почти бесшумно.
Вопрос 1: Является ли эта правильная последовательность для проверки на произвольной ветви?Вопрос 2: Требуется ли после него команда git merge или git pull?Вопрос 3: есть ли способ получить список измененных файлов с этим конкретным обновлением (что-то вроде git pull делает).Это было очень удобно в нашей предыдущей системе CI для устранения проблем сборки. Вопрос 4 (относится к # 3): есть ли способ получить список коммитов в текущем обновлении?Это не имеет значения при перемещении между удаленными ветвями, но может быть очень полезно при обновлении одной и той же ветви