Konstantin
Вопрос - дальше как с этим тегом оперировать, после слияния веток коммит другой, $BUILD_ID другой, ничего общего к чему бы можно было зацепиться, кроме как где-то хранить отдельно
Konstantin
Собственно - как вы собираете, релизите?)
Pavel
Если я правильн опонимаю вопрос. То вероятно использовать внешнее хранилище. Redis например: Ветка -> tag Но я не знаю зачем такое надо
Pavel
Каждый мерж порождает запуск пайплайна, билдом исходников, сбором артефактов, билдом имаджа контейнера ну и затем с тестами и тп
Konstantin
В каждой билдить?
Pavel
Все зависит от задачи. Если идет мерж в ветку develop (ну или как вы ее назовете), то там еще и в staging выкатка. В master - сразу на прод
Dmytro
Вопрос - дальше как с этим тегом оперировать, после слияния веток коммит другой, $BUILD_ID другой, ничего общего к чему бы можно было зацепиться, кроме как где-то хранить отдельно
После слияния веток хеш коммита не меняется. Если вы мерджите со сквошем или ещё откуда берётся мердж коммит - откуда уверенность что артефакт из этой ветки выйдет такой же как в той что замерджили?
Konstantin
После слияния веток хеш коммита не меняется. Если вы мерджите со сквошем или ещё откуда берётся мердж коммит - откуда уверенность что артефакт из этой ветки выйдет такой же как в той что замерджили?
Ну вот в этом моменте я тоже призадумался, но мерж не пройдёт пока все коммиты не пройдут тесты, как я понимаю. У меня одна ветка рабочая и из неё мерж dev>master
Dmytro
А если тесты пока идут в destination ветку промерджит кто-то другую ветку?
Anton
Почему может вылазить Failed to pull image "someusername/someimage:dev-334": rpc error: code = Canceled desc = context canceled?
Dmytro
Тогда артефакт который сбилдится в source ветке будет несоответствать коду в destination ветке
Dmytro
Поэтому имхо это идея плохая и я бы даже сказал вредная - юзать артефакт который билдился для другой ветки
Dmytro
меняется на хеш мёрж-коммита
Можно мерджить без мердж коммита если не было конфликтов
Andor
это уже будет не мёрж :)
Dmytro
И если не делать сквош
Dmytro
А что?
Andor
хм, был не прав
Konstantin
Тогда артефакт который сбилдится в source ветке будет несоответствать коду в destination ветке
я так понимаю это как-то по разному в разных ci? ибо в gitlab у меня коммиты для мерджа складываются в один реквест. brainfck (
Andor
в любом случае в соседнем чате уже говорили что так себе идея
Rustam.T
Коллеги подскажите пожалуйста как заставить Service принудительно рвать коннект с клиентом. Например если pod на который смотрит service упал поднялся другой pod с другим ip. А клиент об этом ни чего не знает. Что бы заставить клиента переконектится надо разорвать соединение. А оно висит пока не закончится timeout
🦠
в гитлабе вообще сборка идет по бранчу)
Andor
как настроишь
Dmytro
Сервис это правило в iptables
Dmytro
Правило коннекшены рвать не умеет
Dmytro
Вам нужен какой-то прокси перед подами поставить который будет этим заниматься
🦠
фу скип сиай
🦠
Костя, чет мельчаешь)
🦠
dev - это как раз бранч
Konstantin
фу скип сиай
это тестовый проект, нет времени CI гонять, я с мерджем разбираюсь
🦠
поставь точку перед название жобы)
Konstantin
поставь точку перед название жобы)
поставил, у меня там 20 тасков, но часть нужны для "игр с версиями", вопрос блин не в этом же
🦠
https://docs.gitlab.com/ee/ci/yaml/#hidden-keys-jobs
Konstantin
https://docs.gitlab.com/ee/ci/yaml/#hidden-keys-jobs
вопросов больше нет
🦠
squash commits только для элитки, и в целом бажная вещь)
Konstantin
squash commits только для элитки, и в целом бажная вещь)
неужели я что-то сложное-непонятное спросил, что каждый раз советы вообще из другой области?
Konstantin
Поэтому имхо это идея плохая и я бы даже сказал вредная - юзать артефакт который билдился для другой ветки
не поделитесь примером как "надо"? Всё же так все и делают - собирают и гоняют одинаковые тесты на каждой ветке?
🦠
в самом первом жобе пайплайна собираешь
🦠
все остальные используют GIT_STRATEGY: none
🦠
это означает, что ты не трогаешь диск
科斯
не поделитесь примером как "надо"? Всё же так все и делают - собирают и гоняют одинаковые тесты на каждой ветке?
мы гоняем все тесты на каждой ветке в гитлабе. маленькие сервисы, маленькие репозитории, быстрые тесты. вот и профит
🦠
момент
Konstantin
в самом первом жобе пайплайна собираешь
ты троллишь меня или серьёзно это всё пишешь?
Konstantin
спасибо
科斯
видимо и мне туда дорога, но это же не то совсем((
можно попробовать вокруг вот этого поплясать: https://docs.gitlab.com/ee/ci/yaml/#cache но это уже такое, dark magic, имхо
🦠
в смысле
🦠
интеграцию запускаешь на мерже в мастер через only: master
🦠
юниты летают на каждый коммит через only: branches
🦠
cache должен быть в связке с artefacts
🦠
они только так работают)
🦠
артефакты - это как раз тот зашаренный билд
🦠
cache - все, что нужно для запуска, папки с вендором
Konstantin
🦠
в смысле?
🦠
ты можешь дать имя кешу через key
🦠
там есть много переменных - коммит хеш, имя бранча
🦠
или имя проекта
🦠
но в целом это пиздец)
🦠
идея билда - иметь независимый от внешних воздействий процесс
🦠
https://docs.gitlab.com/ee/ci/caching/
🦠
artefacts работает так - объявляешь в первой таске, все следующие за ней этот артефакт наследуют
Dmytro
не поделитесь примером как "надо"? Всё же так все и делают - собирают и гоняют одинаковые тесты на каждой ветке?
Я же писал, брать докер образ ветки мастер или там образ собранный и запушанный для предыдущего коммита и делать докер билд с —cache-from этого образа. Дальше докер уже раздуплит, если правильно слои сделаны то если код не менялся он скипнет шаги копирования и следующие шаги билда
Dmytro
Ну почему, у меня вот так сделано
Dmytro
Кеш фром образ предыдущего коммита
Konstantin
в смысле?
у меня с тобой всё заново, зря имя сменил, я лишь по "троллингу" смог понять кто ты))
Dmytro
У меня контейнер с машин лернинг приложением, он с нуля будет минут 40 билдиться
Dmytro
Кеш фром и правильный порядок слоёв спасает
Konstantin
Кеш фром образ предыдущего коммита
ну тут главный вопрос - что есть предыдуший? я не знаю предыдущую версию, если её явно руками не вести
Дмитрий Харитонов
Подскажите, есть у kubectl какой-то verbose? Мастер очень долго отвечает на любой запрос, хочу посмотреть где именно подвисает.
Дмитрий Харитонов
там такого не нашел