Size: a a a

2021 September 24

PD

Petya Danchuk in pro.git::next
мы на GitLab.  сегодня мы всей командой активно фиксим баги перед деплоем и пушим в одну ветку. перестали отображатся новые коммиты на сайте в той ветке. это перегруз какой-то? не сталкивались?
источник

s

snxx in pro.git::next
возможно ветки устарели у челиков
источник
2021 September 25

RI

Roman Inflianskas in pro.git::next
Всем привет!
Ситуация: используем GitHub для разработки большой системы, тесты запускаются на Jenkins, один прогон стоит много, ибо в тестах запускается где-то полтысячи виртуальных машин в облаках. Иногда запускать тесты при push-е с открытым PR не имеет смысла: это долгострой, review которого открыт, чтобы мнения собирать; другой вариант: разработчик получает комментарии в PR, за это время master уезжает, поэтому делается rebase, push, проходит время, потом человек адресует комментарии в review, делается push с нужными изменениями (два push-а делаются, чтобы можно было посмотреть через GitHub "чистые изменения" и не разгребать rebase).
Вопрос: как наиболее удобно пропускать определённые шаги на CI? В идеале выглядеть должно примерно так: git push -f --skip-tests (да, нужен alias в shell). Можно добавлять что-то в commit message, потом парсить на стороне Jenkins, но это требует модификации commit-ов. Можно dummy commit делать, но будет лишний commit, который будет мешаться при просмотре PR на GItHub. Можно добавлять метку к PR на GitHub и читать её в Jenkins, но это надо заходить на GitHub перед push-ем или ставить консольный клиент GitHub и авторизовываться в нём каждому разработчику, а их больше сотни... (склоняюсь к этому варианту).
Может есть какое-то простое решение, о котором я не подумал?
источник

АК

Александр Караев... in pro.git::next
Для публичных CI нормальной практикой является дописывание к коммитам [skip ci]
источник

RI

Roman Inflianskas in pro.git::next
Ну да, я читал, что недавно GitHub actions в это научился. Печально, если нет более простого способа. Гипотетически никто же не мешает git вместе с commits передавать какие-то метаданные на удалённый сервер, а на стороне сервера уже решать, как обработать их, например, пропустить CI...
источник

А

Алексiй in pro.git::next
У Jenkins есть rest api..
источник

RI

Roman Inflianskas in pro.git::next
Проблема такая же, как и решением PR labels + GitHub CLI: надо аутентифицироваться каждому разработчику. Но таки да, это, наверное, прямее сразу в Jenkins ходить и из него метку добавлять в PR. Видимо, остановлюсь на этом варианте. Спасибо, я что-то действительно забыл довольно очевидный вариант!
источник

s

snxx in pro.git::next
Переслано от snxx
здравствуйте пацаны и пацанессы, я вот отправил PR в гитхабе, и вот такой прикол: The base branch restricts merging to authorized users.

что и как это работает, можете объяснить?
источник

s

snxx in pro.git::next
Переслано от snxx
это я должен что-то настроить, или те кто принимает?
источник

Dv

Dr. Friedrich von Ne... in pro.git::next
Я лично не парюсь, и в любой непонятной ситуации делаю ребейз.
источник

Dv

Dr. Friedrich von Ne... in pro.git::next
А не хотите отключить автоматический запуск CI, и вместо этого попросить девелоперов его запускать руками? Комментариями в PR, или ещё как-то.
источник

Dv

Dr. Friedrich von Ne... in pro.git::next
Кажется, в базовом бранче ограничили список тех, кто может туда пушнуть.
источник

RI

Roman Inflianskas in pro.git::next
Бо́льшая часть push-ей всё-таки требует запуска CI, так что, наверное, нет, так будет неудобно.
источник

RI

Roman Inflianskas in pro.git::next
Всё-таки добавлять ещё один инструмент (я про клиент GitHub или Jenkins) для каждого разработчика не хочется(

Придумал такой костыль: добавлять пустой commit с message "disable ci", который будет находиться Jenkins-ом, drop-аться в rebase, force push-иться обратно на GitHub, после чего CI будет останавливается с выставленной меткой PR "untested" на GitHub. Если надо опять обратно включить CI, то можно добавить commit с "enable ci". Надо написать скрипт, который чистит rebase-ом попарные "disable-enable" и положить его в pre-commit, который мы используем. Плюсы: на стороне разработчика не нужно никаких новых инструментов, никаких существующих commits трогать не надо, PR diff будет чистый, PR будет помечен, в master не попадёт лишних commits. Минусы: выглядит как магия, force push автоматом — звучит фигово (хотя это всё тестируется, плюс вроде бы ничего сложного делать не надо).

Покритикуйте, пожалуйста)
источник

Dv

Dr. Friedrich von Ne... in pro.git::next
Очень сложная система, много где может сломаться, сложно будет отлаживать.
источник

RI

Roman Inflianskas in pro.git::next
Есть такое(
Отвлечённый вопрос: я не очень знаком с внутренностями git и интересно: есть ли фундаментальная проблема в том чтобы передавать вместе с push какое-то свободное тестовое содержимое и обрабатывать его на удалённом сервере?
источник

Dv

Dr. Friedrich von Ne... in pro.git::next
Идеологическая проблема тут. Обычно Гит просто обменивается объектами и синхронизует состояние хранилища в нескольких местах. Очень странно поверх этого натягивается RPC.
источник

RI

Roman Inflianskas in pro.git::next
Понятно, спасибо.
источник

k

k4leg in pro.git::next
Возможно ли это реализовать с помощью -o/--push-option как тут? Или это не то? (Просто интересно)
источник

Dv

Dr. Friedrich von Ne... in pro.git::next
А я не вижу там ничего про push-option.
источник