2016-11-25 1 views
2

Я использовал Gitlab некоторое время и теперь настроил сервер сборки. Когда я меняю компьютеры (ноутбук/ПК), я часто фиксирую и нажимаю, чтобы сохранить свою работу на моем сервере gitlab, поскольку содержимое регулярно подкрепляется облаком.Условный прогон Gitlab в зависимости от сообщения фиксации

Сервер сборки отлично работает, но полный проект строится на каждом нажатии. В своей довольно большой, я хотел бы сделать что-то вроде этого:

  • Нажмите совершившее с комментарием «релиз 1.2.3.4» -> Gitlab Триггеры Build
  • Все остальные нажатиях фиксаций игнорируются бегун.

Это нормально, если только комментарий фиксации головы проверен на сборке.

Я искал документацию .gitlab.yml, но не нашел ничего полезного.

+0

Если коммит был только изменением readme, например, вы можете написать '[skip ci]' или '[ci skip]' в сообщении git commit. Я попытался найти это в документах и ​​не был способный найти его. Если ваш push содержит только фиксации, которые имеют этот маркер пропусков, CI-сборки будут пропущены. –

+0

Также пришло время подумать о том, чтобы разбить проект на несколько репозиторий git и несколько целей CI (build_x, build_y, build_z, где x и y и z построены отдельно, и вы можете parellelize ваши конвейеры). И вы можете подумать об использовании кеширования, чтобы стать возможными поэтапные сборки. Кэширование может сэкономить много времени на C/C++, Java и других скомпилированных языках, где инкрементное здание экономит время. –

ответ

2

Основываясь на вашем примере сообщения «release 1.2.3.4», лучший подход заключается в том, чтобы ограничить сборку только тегами.

В файле exinsting gitlab-ci.yml добавьте атрибут «только» в конец шага, который вы хотите ограничить.

job1: 
    stage: build 
script: 
- echo "building..." 
# - Your commands here 
only: 
- tags 

Теперь, каждый раз, когда вам нужно построить его, просто помечать фиксации с помощью:

git tag "release 1.2.3.4" 

Если вам действительно нужно, чтобы увидеть каждый совершить сообщение, вы должны смотреть в CI Variables, есть способ чтобы получить текущий хеш-код фиксации.

+1

Использование Tortoise Я делаю сеть, чтобы запустить это. Я фиксирую, отмечаю и нажимаю, но ничего не происходит, не запускается новый конвейер. – MichaSchumann

+1

Но на основе вашего наконечника я попытался использовать «только: - master», это работает! Поэтому я буду развиваться в филиале и только объединять его с мастером по выпускам. Возможно, тег thingy не работает из-за того, что черепаха обертывает команды git. Тем не менее, я принимаю ваш ответ, поскольку он помог мне найти решение, – MichaSchumann

+1

Вы также нажали на теги, после того, как они совершили использование git push origin -tags? Вы можете проверить его в Gitlab в репозитории -> Теги. Вы также можете создавать теги в этом разделе веб-интерфейса. Но в любом случае, рад, что я мог бы помочь. –

Смежные вопросы