Подключение генератора уаз буханка, схема
0:7
Содержание статьи:
0:47
- Установка генератора 90 Амп в УАЗ 469
- Перенос генератора на верх УАЗ-469 (417 Двигатель) УАЗ 3151
- Замена генератора УАЗ 3962
- Генератор ЗиЛ 131 в УАЗ 469
После первого же использования лебёдки родной (СССРовский) генератор на 40А перестал заряжать АКБ. В гараже был найден генератор на 90 А от бычка. Крепление такое же как на Уазе. Этот генератор пролежал 5 лет, и не известно, в каком он состоянии. Не поставишь — не узнаешь. Был куплен регулятор напряжения (далее РН) от Волги (13 3702). Чтобы новый генератор правильно встал на своё место, нужно на него установить шкив со старого гены. Снять шкив с советского генератора вручную и с помощью отвертки не удалось.
0:1315
Купил съемник для подшипников и шкив снят.
0:1396
1:1903
Далее нарезаем провода, крепим клеммы, подсоединяем к РН.
1:2011
2:506
Теперь, устанавливаем и подключаем новый генератор.
2:605
3:1112
Так зачем я переделывал проводку для генератора, а не подключил к новому всё как было раньше?
3:1285
Дело в том, что мой старый генератор схематично выглядел так:
3:1400
4:1905
Старый генератор
4:1940
Новый от бычка на 90 А выглядит немного иначе:
4:2025
5:504
Генератор на 90 А от Бычка
5:553
Т.к. у нас получается разные выводы щеточного узла, то и схемы подключения будут немного отличаться.
5:739
Я пользовался вот такой схемой для подключения:
5:830
6:1335
Схема для подключения генератора с двухконтактным выводом от щеток
6:1463
Результат: напряжение, как и положено, — 14 В. Но, при включении фар падает до 13 В. Грешу на то, что:
1. Генератор Б/У.
2. Шкив я оставил от старого генератора, а он немного меньше в диаметре, это тоже влияет на напряжение в зависимости от оборотов.
3. Холостые обороты Уаза маленькие по сравнению с другими авто.
4. По мнению бывалых, такая проблема (падение напруги) наблюдается почти на всех советских машинах, поэтому многие ставят ходовые огни и днём ездят без ближнего. Думаю, тоже так сделать.
6:2357
Перенос генератора на верх УАЗ-469 (417 Двигатель)УАЗ 3151Было приобретено:
6:144
— Генератор 90А БАТЭ — 1 шт. 4300р.
— Ремень генератора Клиновой 1225/10 200р.
6:275
Старый генератор перестал держать заряд, и я решил его отремонтировать и возить как запасной, а себе купить более мощнее на 90А и поднять сразу же повыше от уровня будущей воды, чтобы прожил он у меня чуточку дольше, чем тот который постоянно плавает в воде, да и зарядка чтобы была, когда в воде по колесо стоишь…
Нашел уголок у друга, купил ремень 1225/10, купил генератор БАТЭ на 90А и вперед! Сначала снял старый генератор, проблем не стояло передо мной, разве, что немного мешалась новая волговская бочка для шноркеля.
Потом друг все это дело сваривает, делает ребро жесткости и дает мне обратно на высверливание четырех отверстий: 2 на двигатель, 2 на генератор. Уже через мин. 10 мы ставим все обратно и подсоединяем проводки. Планку натяжителя установил на родное место, только перевернули теперь к верху — планку пришлось немного подработать в кузне — просто погнули буквой Z, чтобы красиво стояла и ничего не задевала в подкапотном пространстве. Ну вот, все на месте, все подключено, первый запуск и все работает, отлично! водим хороводы вокруг авто 10 мин.
6:4039
Авто не глохнет после поворота и вытаскивания ключа из замка зажигания! Позвонив знакомому электрику, он сказал два заветных слова и все встало на свои места — Поставь лампочку! А лампочку нужно было поставить в разрез красного проводе. Перекусил провод пополам и вставил туда обычную галогеновую маленькую лампочку — временно (потом хочу заменить на диод не на светодиод, а просто на диод — сам в этом не особо разбираюсь, но друг электрик сказал так будет лучше! Фото, к сожалению, в спешке не сделал с этой лампочкой, но я думаю все итак понятно. Когда поехал уже домой, увидел, что на панели приборов борт сеть показывает 12V в рабочем состоянии на холостых.
6:1429
Творите и создавайте!
6:1472
7:1979
Новый гена на месте, осталось помыть подкапотное пространство
7:2097
8:506
Как было — старый гена на месте
8:567
9:1074
Все демонтировано
9:1111
10:1618
зазор нормальный — полет нормальный!
10:1690
11:2197
вот этот провод резался пополам и внедряли в него обычную лампочку
11:125
12:632
12V это из за лампочки, мультиметров под капотом проверяли — показывал 13.7
12:768
Замена генератораУАЗ 3962Решил заменить старый сорока Амперный генератор на более мощный. В магазине сразу подвернулся генератор БАТЭ 3282.3771 (90 Ампер) для двигателя УМЗ-421 под клиновый ремень. Ну раз на 421 подходит, думаю на 417 тоже подойдет.
12:1217
У этого генератора регулятор напряжения уже встроен в щеточный узел самого генератора, а у меня был выносной поэтому старый регулятор напряжения открутил как лишнюю деталь и выкинул лишние провода. С установкой самого генератора проблем не возникло, так как он предназначен для уаза, а вот с проводами пришлось повозиться, так как при подключении в штатном режиме (Аккумулятор на B+, от замка зажигания на D) двигатель отказывается глохнуть (Хорошо хоть фильтр на карбюратор не успел надеть и заглушил как мотоблок, перекрыв подачу воздуха рукой). На уазбуке и вазовском форумах почитал про генераторы с самовозбуждением (у нас питается от бортсети) и попробовал зацепить через контрольную лампочку и шунт, как там было написано. Получил: поворачиваю ключ, загорается контролька, завожу двигатель, контролька гаснет, пытаюсь заглушить и вытаскиваю ключ, контролька загорается, а двигатель продолжает работать. Снова глушу как мотоблок и иду изучать просторы интернета дальше.
На просторах интернета случайно попалась какая та схема зажигания в которой я увидел, что управление на генератор идет через реле и я решил попробовать. Наконец то я достиг правильного результата. Итог: При включенными ближнем свете, противотуманными фарами, дворниками, двумя печками, доп. электропомпой и музыкой — зарядка аккумулятора в плюсе. Вот теперь уже можно думать и о люстре.
Выкладываю схему подключения генератора чтобы не наступали на мои грабли.
12:3851
13:504
Генератор ЗиЛ 131 вУАЗ 469Поскольку автомобиль уже почти восстановлен, начинаю попутную доработку (тюнинг).
Ещё летом было решено установить дополнительную печку, рацию с усилителем, музыку и ПТФки. И это только начало.
Сразу понял, что родной генератор будет работать на пределе своих возможностей даже с такими потребителями.
Решено было установить генератор на 90 А от 131 ЗиЛа. Купил генератор с рук, по «легенде» продавца он стоял на «консервированном» военном грузовике и когда машина пошла в разбор, на одометре был пробег 1000км. Ну, вероятно это правда. Износ щеток минимален, генератор не шибко грязный, осталась заводская окраска.
Установка не заняла много времени, единственное что, переточил шкив от родного генератора, удлинил натяжной «серп» и удлинил регулировочную канавку в заднем кронштейне генератора вчера поставил переточенный шкив меньшего диаметра и за это получил щедрый подарок от генератора: 17,5 вольт на холостом ходу!
Сначала подумал, что «+» не стабильный приходит на щетки, сегодня перепаял провода теперь генератор менее щедр, подарил всего 16 вольт на холостом ходу. Снял генератор снова, разобрал. Обнаружил выгоревший световой диод, ну думаю вот ОНО! Слетал в магазин за новым диодным мостом, установил, никаких изменений! Пошёл смотреть проводку и понял, где ошибся. Плюсовой провод от реле регулятора был отсоединен. Прикрутил провод на место и напряжение стабилизировалось в пределах 13.6- 13.8 В на ХХ. В общем, всю систему я установил так, что установить штатный генератор обратно можно всего лишь за 10-15 минут.
13:3323
14:506
Перебор
14:524
15:1031
Выливаю содержимое ибо не употребляю такую гадость. Теперь имеется отличная алюминиевая банка.
15:1210
16:1717
Отрезаю нужный мне кусок
16:1766
17:2273
Заворачиваю в алюминий кусок термоленты оставшейся в запаснике.
17:121
18:628
Тепловой экран готов. Так, на всякий случай.
18:711
Ремень генератора установлен : 10Х1110.
Да и меня достал постоянно текущий левый бак. Поставил новый, усиленный.
18:914
19:1421
20:1928
21:2435
22:506
23:1013
24:1520
25:2027
26:506
27:1013
28:1520
29:2027
30:506
https://www.drive2.ru/l/245914/, https://www.drive2.ru/l/6502573/, https://www.drive2.ru/l/288230376153050182/, https://www.drive2.ru/l/4920611/
30:654
следующая статья:
Стартер УАЗ 469
Содержание статьи:
Устройство стартера УАЗ
Технические характеристики редукторного стартера «СтартВ
31:1429
56147
От чего поставить генератор? | Автоклуб «М-20 Победа»
- #1
Родной умирает. Ещё один такой маломощный не хочу. Какой выбрать? Желательно чтобы с установкой проблем поменьше и размер генератора тоже небольшой! Волга? Газель? ВАЗ?
Expand signature
Павел Заз
Покататься победе можно тут: Прокат ретро-автомобиля
- #2
Тут все подробненько.
http://gaz-69.com/forum/viewtopic.php?f=66&t=14239
Expand signature
ЖЕЛАЮ ВСЕМ ПОБЕДЫ!
12.2012 в 12:56″>25.12.2012
- #3
Волга, газель (с 402 двигателями), УАЗ, ГАЗ-53, ПАЗ, Бычок… Список можно продолжать. С этих машин генераторы можно поставить, отличие только в шкивах и виде реле-регулятора.
Expand signature
Потихоньку восстанавливаю ГАЗ М20 1953 г.в. (ЗМЗ-24Д, 4ст. КПП, ЗМ ГАЗ-21)
- #4
Москвич2140, зил 130 газ 53 генератор подходит почти без переделок , РР не нужен он всроен, подключаеш + с акб и + от замка зажигания и все.
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
- #5
да больше 40 и не надо если проводка штатная.
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
12.2012″ data-time-string=»21:30″ title=»25.12.2012 в 21:30″>25.12.2012
- #6
При прямых руках 40А для Победы хватит, и на хх будет напряжение не менее 14В, если не ставить много мощных нагрузок
Expand signature
Потихоньку восстанавливаю ГАЗ М20 1953 г.в. (ЗМЗ-24Д, 4ст. КПП, ЗМ ГАЗ-21)
-
- #7
дело в самой проводке и в ее сечении. на 21 уже расчет был иной.
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
- #8
Латыш сказал(а):
Сороковки маловато на холостых, в минус уходит с фарами. Я на Зил 65А из за этого ставил.
Нажмите, чтобы раскрыть…
можно было шкив поменять.
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
12.2012 в 21:51″>25.12.2012
- #9
Латыш сказал(а):
Замена шкива на маленький тоже не помогло.
Нажмите, чтобы раскрыть…
странно .ну в минус если уходит то это не страшно. может проводку переделывали..так бывает при неправильном подключении.
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
- #10
Латыш сказал(а):
В 21 проводка родная, не тронутая, Зил новый, кроме доп.
педалей тама не чего больше не переоборудовали.
Нажмите, чтобы раскрыть…
я про зил имел в виду..просто амперметр такой прибор вот и показывает разрядку..а на победе ни чего мощного ставить не советую.
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
- #11
Поставлю от волги на 60А. У меня спереди лампы то современные в фарах….
Expand signature
Павел Заз
Покататься победе можно тут: Прокат ретро-автомобиля
12.2012″ data-time-string=»09:54″ title=»26.12.2012 в 09:54″>26.12.2012
- #12
10 лет стоит переменник на 60 А. Фары — галоген. Проблем — никаких.
Expand signature
Не велика победа… Но пусть будет «Победа»
- #13
Латыш сказал(а):
На 21 с прямыми руками тоже 40А не хватило, с 65А еще и разгрузочные рылюшки на фары стандартые поставил, что бы в минус не уходило.
Нажмите, чтобы раскрыть…
Есть человек на форуме gaz-club.com.ua, у которого с геной на 40А стабильное напряжение. В качестве доказательства — видео
http://www.youtube.com/watch?feature=pl … E35sbDxidY
http://gaz-club.com.ua/forum/viewtopic. … 17#p246717
Expand signature
Потихоньку восстанавливаю ГАЗ М20 1953 г.в. (ЗМЗ-24Д, 4ст. КПП, ЗМ ГАЗ-21)
- #14
У меня стоит от трактора Г-700А для тракторной техники .Внешне похож на родной и работает без вопросов.
12.2012″ data-time-string=»19:02″ title=»26.12.2012 в 19:02″>26.12.2012
- #15
Дополнительное реле зарядки скорее всего необходимость, чем усовершенствование.
Expand signature
Потихоньку восстанавливаю ГАЗ М20 1953 г.в. (ЗМЗ-24Д, 4ст. КПП, ЗМ ГАЗ-21)
- #16
Поставить Г-273 с РР Я112В. За глаза хватит.
Expand signature
……__|__
___ / **** \=======#
;|HH*T-34*HH:\
(@=@=@=@=@)
В интернетах девушек нет
12.2012″ data-time-string=»20:11″ title=»26.12.2012 в 20:11″>26.12.2012
- #17
Он на 28 вольт 😉
Expand signature
Потихоньку восстанавливаю ГАЗ М20 1953 г.в. (ЗМЗ-24Д, 4ст. КПП, ЗМ ГАЗ-21)
- #18
Makc сказал(а):
Он на 28 вольт 😉
Нажмите, чтобы раскрыть…
Немного не точно на 28 вольт его аналог АТЭ генератор камазовский 28 в 50 а. ..а г-273 тоже камазовский но 24 в 45а
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
- #19
Извиняюсь, у меня Г-275, он как раз на 12 Вольт
Expand signature
……__|__
___ / **** \=======#
;|HH*T-34*HH:\
(@=@=@=@=@)
В интернетах девушек нет
12.2012 в 22:26″>26.12.2012
- #20
Pobedovod26 сказал(а):
Извиняюсь, у меня Г-275, он как раз на 12 Вольт
Нажмите, чтобы раскрыть…
наверное от к-700
Expand signature
Браться за восстановление Победы без приличной материальной базы, бокса, проф. инструмента — настоящее безумие!
Вам необходимо войти или зарегистрироваться, чтобы здесь отвечать.
Gazelle Pilates — Красота и здоровье — Sherman Oaks, CA
Gazelle Pilates — Красота и здоровье — Sherman Oaks, CA — WeddingWire Перейти к основному содержаниюШерман-Оукс, Калифорния Посмотреть карту
Газель ПилатесВид студииВнутри студииМышцыПлоский животОборудованиеУпражненияНевестаЗаинтересовал этот продавец?
1 / 8
О
Gazelle Pilates, LLC — студия пилатеса, расположенная в Шерман-Оукс, Калифорния. Владелец Сара Кэтрин Олдс — танцор и хореограф. Сара использует мягкий подход для достижения устойчивых результатов. Ничто не приведет вас в форму быстрее, чем регулярное посещение ее занятий в дни, недели и месяцы, предшествующие дню вашей свадьбы. Эта тренировка не только поможет вам нарастить мышечную массу, но и уроки, которые преподают здесь, также сосредоточены на соединении разума и тела, чтобы дать вам более здоровое ощущение себя.
Предлагаемые услуги
Занятия в Gazelle Pilates, LLC действительно преобразят ваше тело и идеально подходят для людей всех возрастов и физических способностей. Независимо от того, хотите ли вы пройти групповое занятие или надеетесь на большее внимание один на один с личным тренером, вы можете найти программы, которые приведут вас к более здоровому образу жизни в этой студии.
Часто задаваемые вопросы
Какова начальная цена на услуги фитнеса/здоровья?
Что из следующего включено в цены?
Консультация
Бесплатные
Какие косметические услуги вы предлагаете?
Фитнес/Здоровье
Какие услуги в области фитнеса/здоровья вы предлагаете?
Персональные тренировки
Есть еще вопросы?
Поставщик сообщений
Предложения
36 индивидуальных занятий пилатесом за 1440 долларов. Тренируйтесь с одним из лучших инструкторов по пилатесу в Шерман-Оукс перед важным днем! Напрягите мышцы, обретите четкость и сбросьте несколько дюймов! Каждое занятие длится 55 минут. Жених/невеста должны проводить свидания 2-3 раза в неделю в течение 12-14 недель. Сессии, однажды запланированные, не могут быть перенесены или пропущены без штрафных санкций. Для достижения максимальных результатов клиент должен придерживаться дисциплинированного режима питания, сна и физических упражнений. Вес, размеры и фото документация будут зарегистрированы.
Карта
8188532715
Красота и здоровье Лос-Анджелес
Красота и здоровье Шерман Оукс
Поставщик сообщений
Изменить ваше сообщение
Мы были рады найти вас на WeddingWire! Мы будем рады получить дополнительную информацию о ваших услугах и доступных пакетах. Сообщение
Имя и фамилия
Номер телефона
Планирование моей свадьбы Гость на свадьбе Выбери свою роль
Олбани Альбукерке американское Самоа Анкоридж Ангилья Антигуа и Барбуда Аруба Атланта Остин Багамы Балтимор Барбадос Белиз Бермуды Бирмингем Бойсе Бостон Боулинг Грин Бозман Британские Виргинские острова Баффало Берлингтон Кейп-Код Каймановы острова Сидар-Рапидс Центральный Джерси Чарльстон Чарльстон Шарлотта Шайенн Чикаго Пригороды Чикаго Цинциннати Кливленд Колумбия Колумбус Колумбус Конкорд Коста-Рика Кюрасао Даллас Денвер Де-Мойн Детройт Доминиканская Республика Восточная Мексика Эль-Пасо Юджин Фарго Флорида-Кис Франция Французская Полинезия Фресно Великие пороги Метро Большого Нью-Йорка Греция Зеленая бухта Гренада Гуам Хэмптон Роудс Хартфорд Хилтон Хед Гонолулу Хьюстон Индианаполис Внутренняя Империя Ирландия Италия Джексон Джексонвилл Ямайка Jersey Shore Канзас-Сити Ноксвилл Ланкастер Лас Вегас Лексингтон Маленький камень Длинный остров Лос-Анджелес Маршалловы острова Мемфис Майами Милуоки Миннеаполис Монтерей Монтгомери Долина Напа Неаполь Нэшвилл Жители Нового Орлеана Нью-Йорк Северные Марианские острова Северный Нью-Джерси Оклахома-Сити Омаха округ Ориндж Орландо Внешние банки Палау Попрошайничество Филадельфия Феникс Питтсбург Портленд Портленд Португалия Провиденс Пуэрто-Рико Роли Рино Ричмонд Сакраменто Солт-Лейк-Сити Сан Антонио Сан Диего Сан-Франциско Санта Барбара Саванна Скрэнтон Сиэтл Шривпорт Су-Фолс Саут-Бенд Южный Нью-Джерси Испания Спокан Спрингфилд Спрингфилд Спрингфилд Сен-Бартс Святой Луи Сент-Люсия Сен-Мартен / Сен-Мартен Сиракузы Таллахасси Тампа Толедо Топика Тринидад и Тобаго Тусон Талса Теркс и Кайкос Великобритания Виргинские острова Вашингтон Вестчестер Западная Мексика Уичито Уилмингтон Уилмингтон Локация
Дата мероприятия
Название места проведения
Наняли этого поставщика?
Предпочтительный способ связиЭлектронная почта
Видеочат
Телефон
Нажимая «Отправить», я соглашаюсь с Политикой конфиденциальности и Условиями использования WeddingWire
.![](/800/600/http/yurymerkulov.ru/wp-content/uploads/4/6/5/465db96f2953af222e3e8871dd326c26.jpeg)
Написать отзыв
Свадебные продавцы
- Свадебные фотографы
- Свадебные диджеи
- Организаторы свадеб
- Свадебное обслуживание
- Свадебные флористы
- Свадебные Видеооператоры
- Свадебные Служители
- Свадебная аренда
- Фотобудки
- Обручальные кольца
- Свадебные платья
- Свадебные Торты
- Свадебные лимузины
- Свадебные Музыканты
- Свадебный декор и освещение
- Пригласительные на свадьбу
- Турагенты
- Свадебные ювелиры
- Свадебные сувениры
Фотогалерея
Создание монорепозитория Uber Go с Bazel
В традиционных отраслях, таких как автомобильная или аэрокосмическая, инженеры сначала проектируют продукты, а производственные предприятия производят автомобили или самолеты в соответствии с проектом. В разработке программного обеспечения система сборки похожа на производственные мощности, которые берут исходный код и превращают его в службы, инструменты и приложения. Помимо облегчения компиляции и компоновки программного обеспечения, системам сборки часто требуется генерировать код, загружать внешние пакеты или создавать различные установочные пакеты. Некоторые системы сборки также могут управлять инструментами, такими как компиляторы, компоновщики и генераторы кода, что делает артефакты сборки менее зависимыми от их локальных сред. Когда Uber начал использовать Go для разработки наших внутренних сервисов, мы использовали популярную систему сборки с открытым исходным кодом Make в сочетании с системой сборки Go по умолчанию go build.
После перевода наших проектов Android и iOS в Uber на более эффективную модель монорепозитория команда Go Developer Experience сделала аналогичный шаг для проектов Go и обнаружила, что Make and go build больше не отвечает нашим потребностям. В конце концов мы решили использовать Bazel, который обеспечивает хорошую поддержку языка Go и подкрепляется постоянным вкладом его активного сообщества с открытым исходным кодом.
Поскольку значительная часть нашего технологического стека разработана на Go, монорепозиторий Uber Go, вероятно, является одним из крупнейших репозиториев Go, работающих на Bazel. Мы заметили области, в которых мы могли бы улучшить и внести свой вклад в экосистему Bazel, улучшив создание правил Bazel и интегрировав Bazel с SubmitQueue, системой Uber, чтобы гарантировать, что основная ветвь монорепозитория всегда может быть успешно построена и протестирована.
Мы надеемся, что наш опыт создания большого репозитория с помощью Bazel и наш вклад в экосистему Bazel с открытым исходным кодом помогут другим инженерным группам использовать Bazel для создания своих репозиториев исходного кода.
Монорепозиторий Go от Uber
Uber пишет большую часть своих внутренних сервисов и библиотек на Go. Прежде чем мы решили создать монорепозиторий Go, инженеры Uber разработали эти проекты Go во множестве небольших и изолированных репозиториев (некоторые из которых мы открыли). Мы запустили монорепозиторий Go в начале 2018 года и увидели немедленный рост эффективности сборки среди первых проектов. По мере развития монорепозитория Go мы переносили на него все больше и больше проектов, и использование быстро увеличивалось, как показано на рисунках 1 и 2 ниже:
Рисунок 2. Количество ежемесячно активных инженеров Uber, разрабатывающих наш монорепозиторий Go, значительно увеличилось с менее чем 10 до почти 900. Поскольку мы обычно не фиксируем сгенерированный код, эти файлы Go в основном писались вручную. Массовый рост нашего монорепозитория Go побудил нас оценить новые решения для сборки, такие как Bazel, для удовлетворения наших потребностей в разработке.
Bazel предназначен для работы в масштабе и поддерживает инкрементные герметичные сборки в распределенной инфраструктуре, что необходимо для большой кодовой базы Uber. С официальным набором правил Bazel Go мы можем управлять цепочкой инструментов Go и внешними библиотеками, не завися от локально установленных. Существует также официальный проект Bazel, Gazelle, который мы используем для создания правил Go и Protocol Buffers. С помощью Gazelle мы можем генерировать правила Bazel для большинства пакетов Go в нашем монорепозитории Go с минимальным участием человека. Gazelle также может импортировать версии модулей Go в правила Bazel, чтобы мы могли удобно и эффективно создавать внешние библиотеки.
Благодаря удаленному кешу Bazel наши серверы сборки также могут обмениваться своими артефактами сборки. Пакет создается и тестируется только тогда, когда что-то изменилось либо в пакете, либо в его зависимостях.
Усовершенствования Bazel
Готовые программные решения редко работают с такой большой и сложной кодовой базой, как монорепозиторий Uber Go. Мы добавили и усовершенствовали Bazel, чтобы он лучше соответствовал нашим потребностям, улучшили генератор правил и разработали несколько новых правил и функций Bazel, а также инструменты для создания больших кодовых баз в масштабе. Попутно мы исправили множество ошибок в проектах с открытым исходным кодом Go и Bazel.
Генерация правил Bazel
Bazel требует, чтобы все цели сборки были явно определены с помощью правил сборки. Для каждого пакета Go есть как минимум две цели сборки: одна для сборки в виде библиотеки, чтобы другие пакеты могли ее импортировать, а другая для запуска модульных тестов для этого пакета. Создание и поддержка большого количества правил сборки в репозитории размером с Uber — утомительная и подверженная ошибкам задача. К счастью, большинство конфигураций сборки Go и Protocol Buffers можно вывести из исходного кода, что дает возможность автоматически генерировать эти правила Bazel. Здесь в игру вступает Газель.
Как указывалось ранее, наш монорепозиторий Go, вероятно, является крупнейшим репозиторием Go, использующим Bazel и Gazelle, что приводит к сложным сценариям, которые разработчики Bazel и Gazele не обязательно предвидели при масштабном использовании программного обеспечения. Мы тесно сотрудничали с сообществом открытого исходного кода, чтобы устранить эти препятствия, исправить ошибки и добавить несколько новых функций.
В Bazel внешние модули Go загружаются с использованием правил go_repository. Gazelle создает по одному такому правилу для каждого модуля в файлах go.mod и go.sum, которыми управляет цепочка инструментов Go. В монорепозитории Go у нас более тысячи внешних модулей.
В рамках разработки нашего монорепозитория Go компания Uber добавила в Gazelle несколько функций, чтобы улучшить процесс создания и управления результирующими правилами go_repository. Например, Gazelle могла генерировать все правила go_repository только в файле WORKSPACE Bazel, который также содержал написанные вручную и поддерживаемые правила и макросы рабочей области. Некоторые из этих ручных правил и макросов должны быть размещены перед сгенерированными правилами go_repository, другие — после сгенерированных. Однако Gazelle могла добавлять новые правила go_repository только в конец файла WORKSPACE. Мы добавили функцию (#480, #493) в Газель, чтобы теперь она могла записывать правила go_repository в отдельный файл макроса и загружать его в файл WORKSPACE. В результате все сгенерированные правила хранятся вне файла WORKSPACE, что делает этот файл меньше и упрощает его обслуживание.
Наш монорепозиторий Go также позволяет инженерам добавлять или удалять внешние модули. Когда модуль удаляется, набор инструментов Go удаляет его из файлов go.mod и go.sum. Однако Газель не смогла очистить ненужные правила go_repository. Мы добавили в Gazelle возможность удалять ненужные правила go_repository (#514). После того как правило go_repository загружает модуль Go, оно вызывает Gazelle для создания правил Bazel для сборки этого модуля. Мы также добавили параметры (#603, #649) к правилу go_repository, чтобы настроить поведение Газели внутри внешнего модуля. Благодаря этим улучшениям, а также многим более мелким функциям и исправлениям ошибок, которые наши команды вносили на протяжении многих лет, два инженера Uber заняли второе и третье места в списке участников Gazelle по состоянию на апрель 2020 года.
Gazelle разработан для поддержки правил Bazel для много разных языков. Официальные расширения Gazelle могут генерировать правила Bazel для буферов Go и Protocol Buffers. Однако Uber использует множество других правил в нашем монорепозитории Go, включая правила для Apache Thrift, ThriftRW, Apache Avro и GoMock. Некоторые из этих правил были разработаны сообществом открытого исходного кода, а другие были разработаны внутри Uber. Мы также разработали несколько расширений Gazelle, чтобы охватить эти дополнительные правила, и планируем в ближайшем будущем открыть исходный код как наших новых правил, так и расширений Gazelle.
Поиск и построение измененных целей
Чтобы сохранить ветку master нашего монорепозитория Go в зеленом состоянии, что означает, что весь код в ветке master может быть успешно скомпилирован и протестирован в любое время, мы выполняем серию проверок перед выполнением коммита. мастеру. Эти проверки включают сборку и тестирование всех пакетов, измененных в этом коммите, а также транзитивно всех зависимых пакетов. В зависимости от того, сколько пакетов затронуто фиксацией, проверки могут занять от нескольких минут до нескольких часов.
Если мы размещаем наши коммиты последовательно, каждый коммит должен ждать, пока все предыдущие коммиты не приземлятся перед проверкой, что может привести к длительному времени посадки. Еще больше усложняет ситуацию то, что чем больше становится наш монорепозиторий, тем больше коммитов поступает, накапливаясь и создавая еще более длинные очереди. Мы знали, что в конечном итоге коммиты будут поступать слишком быстро, чтобы мы могли проверять их последовательно.
Чтобы не отставать от нашего высокого уровня коммитов, инженеры Uber используют SubmitQueue для параллельной проверки и отправки коммитов, предотвращая при этом конфликты кода. Для этого SubmitQueue необходимо знать список целей сборки, затронутых данной фиксацией. Другие репозитории Uber, использующие Buck в качестве системы сборки, могут запускать команду «buck target –show-target-hash» для ревизии до и после фиксации, узнавать, какие хэши целей изменились из-за фиксации, и передавать список целей для SubmitQueue. К сожалению, даже несмотря на то, что Bazel знает, какие цели и действия ему нужно построить заново внутри, он не предоставляет хэш-ключи действий или целей из своего интерфейса командной строки.
Обсудив проблему с командой Google Bazel как на Github, так и в автономном режиме, мы решили разработать наше решение за пределами Bazel. Полученный инструмент проходит через граф сборки Bazel, вычисляя хэш для каждой цели сборки в графе, комбинируя определение правила, атрибуты, входные файлы и хэш других целей, от которых он зависит. Имея хеш для каждой цели сборки, мы можем определить список целей сборки, затронутых фиксацией, и передать этот список в SubmitQueue. Мы намерены открыть исходный код этого инструмента в будущем.
Как только SubmitQueue узнает, какие цели сборки затронуты, ему необходимо вызвать Bazel, чтобы построить и протестировать эти цели, чтобы убедиться, что фиксация в ветке master безопасна. Список целей может быть очень большим, когда фиксация обновляет базовую библиотеку, например, обновляет версию набора правил Go. По мере роста монорепозитория список целей сборки увеличивался до такой степени, что он стал слишком длинным, чтобы передавать его через интерфейс командной строки Bazel. После обсуждения проблемы на Github мы изначально смогли обойти ее, передав список целей сборки, используя определенную конфигурацию сборки вместо командной строки. Поскольку монорепозиторий продолжал расти, этот обходной путь снова не сработал.
В конце концов, мы добавили в Bazel функцию, позволяющую считывать список целей сборки из файла. Эта функция была принята и объединена с основным репозиторием Bazel и доступна, начиная с Bazel 3.1.
Улучшенная интеграция Bazel в Uber
Хотя мы успешно внедрили Bazel в качестве системы сборки для монорепозитория Uber Go, предстоит еще много работы. Например, текущие Go IDE не так хорошо поддерживают Bazel, как хотелось бы. Мы обнаружили, что IDE не могут найти пакеты и модули Go, сгенерированные и загруженные во время сборки, и планируем работать с сообществом открытого исходного кода, чтобы закрыть этот пробел.