Мазмұнға өту

Көпөңірлік мемлекеттік платформа

Frontend Architect · Lean Solutions · 2022 – қазір

Жаңа функциялар: әр өңірдің репозиторийіне көшіру → бір рет жазылып, барлық өңірге шығады

  • Angular 22
  • Nx
  • TypeScript
  • Tailwind v4
  • Elf
  • Transloco
  • GitLab CI

Платформа сандармен

өңір: әрқайсысында портал мен админка
17
кітапхана
49
менің коммиттерім
1 164
менің біріктірілген MR-ым
436
Angular нұсқасы
6 → 22

Мәселе

Әр өңір алдыңғысынан көшірілген жеке Angular жобасы болды. Бір өңірге жасалған функцияны қалған өңірлердің бәріне қолмен көшіруге тура келетін. CI/CD болмады.

Не істедім

  • Өңірлік қосымшаларды бір Nx монорепозиторийіне біріктірдім: ортақ кітапханалардан (ui, ui-widgets, data-access, feature-*) құралған 10+ қоғамдық портал мен админ-панель, тәуелділік шекаралары бақыланады
  • Tailwind CSS v4 токендерінде ішкі UI кітапханасы мен дизайн-жүйе жасадым
  • GitLab CI-ды нөлден баптадым: бір пайплайн барлық staging қосымшасын линттейді, тестілейді, жинайды және деплойлайды
  • Стекті Angular 6-дан 22-ге жаңарттым (signals, standalone компоненттер, жаңа control flow)

Нәтижелер

код ортақ кітапханаларда; әр өңірлік қосымша — жұқа қабық (~200 мың жолдың ~18 мыңы)
~90%
жаңа өңірді іске қосуға: өз мәтіндері, логотипі мен favicon-ы бар жаңа қосымша қабығы
~5 мин
барлық staging қосымшасына автоматты деплой; бұрын пайплайн болмаған
~7 мин
Код қайда орналасқанбарлығы ~200 мың жол
Ортақ кітапханалар: ~90% 10+ қосымша қабығы: ~18 мың жол
Бұрын → қазір
Бұрын Қазір
Жаңа функция Бұрын: әр өңірлік репозиторийге қолмен көшірілді Қазір: бір рет жазылады, барлық өңірге шығады
Жаңа өңір Бұрын: алдыңғы жобаның көшірмесі Қазір: ~5 минут: жаңа қосымша қабығы
Staging деплойы Бұрын: пайплайн болмаған Қазір: ~7 минут, толық автоматты
Angular Бұрын: 6 Қазір: 22

Медиа

Архитектура сызбасы төменнен жоғары қарай: ui, ui-widgets, data-access, feature-* кітапханалары, олардың үстінде — 10+ қоғамдық портал мен админ-панель.10+ қоғамдық портал мен админ-панель(жұқа қабықтар) feature-* data-access ui-widgets ui
Қосымшалар ортақ кітапханалардан құралған; тәуелділік шекараларын Nx бақылайды.
Жеңілдетілген Nx жоба графы: жоғарыдағы қосымша қабықтары feature-* кітапханаларын пайдаланады, олар — data-access пен ui-widgets-ті, ui-widgets — ui-ды. Кітапхананы таңдағанда оған тәуелді барлық жоба белгіленеді. қосымшалар feature-* data-access ui-widgets ui

Төменнен кітапхана таңдаңыз

Кітапхананы өзгерту:
Жеңілдетілген сызба, нақты жоба графы емес: кітапхананы таңдап, оған қай жобалар тәуелді екенін көріңіз. ui немесе ui-widgets өзгерісі әр қосымшаға жетеді, сондықтан пайплайн көбіне бәрін жинайды.

Блогта толығырақ

  1. Көшірілген 10+ Angular-жобадан бір Nx-монорепозиторийге
  2. Nx-монорепозиторийге нөлден CI: «пайплайн жоқтан» барлық staging-қолданбаларға 7 минутқа дейін
  3. Angular 6 → 22: жаңарту жолы және неден сүрінесің
  4. Үлкен монорепозиторийде Tailwind v3 → v4 миграциясы
  5. Angular-монорепозиторийдегі Sentry: «пайдаланушылар шағымданбайды» дегеннен бір топтағы 6889 оқиғаға дейін
  6. Қайталанатын қателерден қорғаныс ретінде өз ESLint-ережелерің
  7. Өздері жөндейтін ESLint-ережелер: fixer, suggestions және Angular-шаблондар