Webentwicklung von Grund auf neu: Ein Leitfaden fĂĽr junge Teams zum Aufbau einer CI / CD-Infrastruktur und eines Entwicklungsprozesses

Vor etwas mehr als einem Jahr war ich mit der Tatsache konfrontiert, dass eine gesamte Webentwicklungsabteilung auf einem internen Projekt eines vollständig nicht-IT-Unternehmens aufgewachsen ist, das ich leiten durfte. Der Workflow schien sich zu beruhigen und war für alle in Ordnung, aber es blieben Probleme:



  • Jeder Zweig wurde lokal ĂĽberprĂĽft. Ich musste die Basis von den Ă„nderungen aus der vorherigen PrĂĽfung zurĂĽckrollen, die Front bauen. Als mehrere Entwickler die Arbeit beenden wollten und jeder einzelne im Detail ĂĽberprĂĽft werden musste, wurde es zur Hölle.
  • Die Umgebungen in der Produktion und zwischen den Entwicklern waren unterschiedlich, was zu Fehlern fĂĽhrte: „Alles funktioniert fĂĽr mich“.


Der innere Perfektionist sehnte sich danach, alles richtig zu organisieren. Ich teile die Ergebnisse meiner Suche nach einer Antwort auf die Frage: "Wie ist" richtig "?"



Wir haben erreicht



  • Einfache und schnelle Bereitstellung in der Produktion (aus VersuchsgrĂĽnden wurden sie zwei Wochen hintereinander jeden Tag angezeigt);
  • Eine Garantie fĂĽr den Schutz vor Fehlern aufgrund von Unterschieden in der Anwendungsumgebung;
  • Wir können eine effektive Interaktion mit dem Kunden organisieren:

    • Demonstrieren Sie jeden Feature-Zweig.
    • Geben Sie dem Gast Zugriff, um Aufgaben zu erstellen und den Arbeitsfortschritt zu ĂĽberwachen.


, :



  • IT- ;
  • (workflow);
  • , ;
  • DevOps, CI/CD, , , .




  • ;
  • ;
  • : -;
  • , .




:



  • ;
  • ;
  • -.


,



, , . -, , , (- DevOps).

, , : “, , ?”.



“” , . , . , . .



, , , . , , “best practices”. -.



, , , , -.



, .



:



  • - . , ;
  • , , ;
  • , git, Linux, Docker, GitLab, Traefik.






1. git





A successful Git branching model by Vincent Driessen



— : master, dev feature.



Feature

feature- / , dev-. , dev.



Dev

dev , master.



Master

production-. , , hotfix-, .

Master dev , .



2. . .





. feature , . “, xxx” , , . Merge Request- . wiki , .



, - — .

GitLab, , .



3.



— , . , //.



, IT- , DevOps. . . , . - (LXC), Docker, ...





, . , , . , . , - , . , , , .





, , , , , — . , .





, , . ( ) , , , , , . . , , “ ”. .



/



, - , . , , . . , .



UI/UX



, . ( Microsoft, ).





. . .





, , , , . .





. - .



: , , .., .



(QA / QC)



Quality Control (QC) . , . Quality Assurance (QA) , ( Toyota — ). , docker-, , .



(DevOps)



, . , .







workflow



  1. - (feature) , . .
  2. . . . , .
  3. , ( ), , , . — .
  4. feature- dev , , . , feature-, . , .

    : , , , . , , , merge-request.

  5. merge-request dev-, , feature-.
  6. , . — -, , .
  7. feature- dev.
  8. , dev- merge-request master 5, 6 .
  9. 7, .
  10. , ( changelog-), . .
  11. , production.
  12. . .




:



  • production-ready
  • ( )


: Traefik, GitLab Docker.





  • 3 [Production], [Staging] [Services]. , , . /. , [Production] . [Services] GitLab (, docker registry: Portainer, ELK, Harbor, etc), Services. . Docker-. GitLab , .
  • Traefik DNS- *.dev.company.ru, [Staging] TCP . SSL [Production]. Wildcard (WC) *dev.company.ru letsencrypt-dns, DNS- Traefik. Traefik , SSL http . [Production] App.
  • GitLab [Services] GitLab-runner-, , Merge Request- () dev master, - [Staging] [Production] .gitlab-ci.yml .
  • , [Staging].
  • GitLab Docker Registry, .
  • GitLab, Traefik Gitlab-runner- docker-, .


github-, . , :



https://github.com/Akkarine/demo_cicd





  • , . . , Enterprise Traefik GitLab .
  • , . , , , ..
  • , Traefik GitLab . , Traefik DNS Yandex ( ) . GitLab . , rules.
  • “ ”.




-



https://github.com/Akkarine/demo_cicd_project



-, , :



  • . downtime ( API , ), load-balancer- , — — kubernetes. “ ”
  • ( )
  • production- ( , )
  • root ( )


— .gitlab-ci.yml. pipeline- :



  • base-img-rebuild

    • rebuild-base-backend

      . — , , . ( build), .
  • rebuild-dev-db

    • rebuild-dev-db

      , .
  • build

    • rebuild-proxy-img

      - nginx , latest
    • build-backend

      , ( GitLab)
  • test

    • testing

  • deploy-review

    • deploy_review

      , production, , .
  • skip_review

    , , .
  • review

    • approve-dev

      . Merge-request dev (.. — feature), . .
    • approve-staging

      . Merge-request master (.. — hotfix dev ), build latest . , latest , — .
    • reject

      . . Merge Request- , - .
    • stop_review

      , . .
  • rebuild-approved-db-img

    • rebuild-approved-db-img

      review , latest .
  • deploy-prod

    • deploy-production

      latest. , .
    • deploy-production-wo-containers

      , , .
  • clear

    staging production

    • clean-staging
    • clean-prod
  • restore-db

    • restore-db

      — .


, . — , . , .







Traefik





reverse proxy + SSL nginx





GitLab





GitLab SSL config





GitLab Registry





Gitlab-runner





Docker










All Articles