Size: a a a

1С, БСП, DevOps и Архитектура

2020 November 23

AD

Abramov Dmitry in 1С, БСП, DevOps и Архитектура
Александр Медведько
Можно ещё теоретический вопрос. Вот допустим git flow. Соотвественно, ветки master, develop, куча фич-веток. Задача - собрать код из нескольких веток для интеграционного тестирования не помещая в develop. Как сделать технически - я знаю. А вот как это делается правильно организационно? Стартует новая ветка куда все сливается? Orphan? Черри-пики с последующим ревертом? Да, по условию задачи должен быть задействован удаленный репозиторий, то есть история всей этой возни останется :)
Можно создать отдельную ветку и мерджить необходимые в нее через пулл реквест
источник

AD

Abramov Dmitry in 1С, БСП, DevOps и Архитектура
Если все ок, то уже мердж этой ветки в девелоп
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Александр Медведько
Можно ещё теоретический вопрос. Вот допустим git flow. Соотвественно, ветки master, develop, куча фич-веток. Задача - собрать код из нескольких веток для интеграционного тестирования не помещая в develop. Как сделать технически - я знаю. А вот как это делается правильно организационно? Стартует новая ветка куда все сливается? Orphan? Черри-пики с последующим ревертом? Да, по условию задачи должен быть задействован удаленный репозиторий, то есть история всей этой возни останется :)
> для интеграционного тестирования не помещая в develop

так девелоп и нужен для интеграционного тестирования :)
источник

АМ

Александр Медведько... in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
> для интеграционного тестирования не помещая в develop

так девелоп и нужен для интеграционного тестирования :)
Ну хорошо. Допустим такая схема: задача разбивается на две. В первой предположим идут изменения структуры метаданных, во второй - изменения в коде модулей. Пример условный. Понятно что тестировать второе без первого невозможно. Помещать одно без другого в девелоп смысла нет по нашей схеме в девелоп попадают протестированные задачи.
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Александр Медведько
Ну хорошо. Допустим такая схема: задача разбивается на две. В первой предположим идут изменения структуры метаданных, во второй - изменения в коде модулей. Пример условный. Понятно что тестировать второе без первого невозможно. Помещать одно без другого в девелоп смысла нет по нашей схеме в девелоп попадают протестированные задачи.
тогда их надо мержить между собой
источник

АМ

Александр Медведько... in 1С, БСП, DevOps и Архитектура
Abramov Dmitry
Можно создать отдельную ветку и мерджить необходимые в нее через пулл реквест
Это понятно. А она подвешивается или стартует от develop? Или исходные ветки сливаются в неё, а она уже попадает в develop?
источник

NM

Nikita Mikhaylov in 1С, БСП, DevOps и Архитектура
P Z
Тогда ДФК хитрО кэшируется и не лезет за подгрузкой на сервер неявно.
Один из способов клиент-сервер оптимизации
она не хитро кешируется, а каждые 38 строк бегает на сервер :)
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
но вообще обеспечить 100% стабильность девелопа можно только наяривая на rebase, линейную разработку и/или постоянный обратный мерж из девелопа в фича-ветку. понятное дело, что тесты в фича-бранче должны пройти, но развал девелопа - это не так страшно, как кажется. он и создан для того, чтобы тестировать интеграцию и отлавливать падения над ней
источник

АМ

Александр Медведько... in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
тогда их надо мержить между собой
Технически понятно. Я с точки зрения философии ;)
источник

PZ

P Z in 1С, БСП, DevOps и Архитектура
Nikita Mikhaylov
она не хитро кешируется, а каждые 38 строк бегает на сервер :)
Это если не юзать хак с обходом ДФК при открытии
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
по гитфлоу stable as debian stone должен быть master.
источник

АМ

Александр Медведько... in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
но вообще обеспечить 100% стабильность девелопа можно только наяривая на rebase, линейную разработку и/или постоянный обратный мерж из девелопа в фича-ветку. понятное дело, что тесты в фича-бранче должны пройти, но развал девелопа - это не так страшно, как кажется. он и создан для того, чтобы тестировать интеграцию и отлавливать падения над ней
А как тогда обеспечить качественную поставку? Сейчас у нас от develop стартует релиз в котором гоняются уже только супер-интеграционные тесты ;)
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Александр Медведько
А как тогда обеспечить качественную поставку? Сейчас у нас от develop стартует релиз в котором гоняются уже только супер-интеграционные тесты ;)
ответвлять релиз только от зеленого девелопа
источник

АМ

Александр Медведько... in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
по гитфлоу stable as debian stone должен быть master.
То есть предполагается что после реализации фича-ветка попадает в develop и ошибки интеграции правятся прямо в develop?
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Александр Медведько
То есть предполагается что после реализации фича-ветка попадает в develop и ошибки интеграции правятся прямо в develop?
ну, не то чтобы "предполагается". просто обычно при отсутствии явных конфликтов фича-бранч мержится в девелоп "не глядя". если хочется добавить уверенности, то можно сделать обратный мерж девелопа в фича-бранч и прогнать тесты еще раз. но это все еще не гарантирует, что пока вы будете гонять тесты на актуализированном фича-бранче, кто-то не нагадит в девелоп и на интеграции у вас будет развал
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
а фризить девелоп - это противоестественно самому подходу :)
источник

АМ

Александр Медведько... in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
а фризить девелоп - это противоестественно самому подходу :)
Он не фризится, просто закрыт от всего кроме mr, через которые прогоняются тесты
источник

АМ

Александр Медведько... in 1С, БСП, DevOps и Архитектура
Но я обещаю подумать над вариантами :) спасибо
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Александр Медведько
Он не фризится, просто закрыт от всего кроме mr, через которые прогоняются тесты
висят два МР. оба актуализируются от девелопа. тесты в первом МР проходят, он вливается в девелоп.
дальше развилка - либо вы вливаете МР2 с риском развала девелопа, либо вливаете девелоп в МР2 и снова ждете тестов на МР2
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
а потом кто-то присылает МР3 :)
источник