Pengembangan Web dari Awal: Panduan untuk Tim Muda dalam Membangun Infrastruktur CI / CD dan Proses Pengembangan

Lebih dari setahun yang lalu, saya dihadapkan pada fakta bahwa seluruh departemen pengembangan web tumbuh pada proyek internal perusahaan yang sepenuhnya non-IT, yang saya punya kesempatan untuk memimpin. Alur kerja tampak tenang dan baik-baik saja dengan semua orang, tetapi masalah tetap ada:



  • Setiap cabang diperiksa secara lokal. Saya harus memutar kembali pangkalan dari perubahan dari pemeriksaan sebelumnya, membangun depan. Ketika beberapa pengembang akan menyelesaikan pekerjaannya dan itu dibiarkan untuk memeriksa setiap hal kecil - itu berubah menjadi neraka;
  • Lingkungan di jalur produksi dan antara pengembang berbeda, yang menyebabkan kesalahan: "semuanya bekerja untuk saya".


Perfeksionis batiniah ingin sekali mengatur segalanya dengan benar. Saya membagikan hasil pencarian saya untuk sebuah jawaban atas pertanyaan: β€œbagaimana sebenarnyaβ€œ benar ”?



Kami telah mencapai



  • Penyebaran yang mudah dan cepat dalam produksi (demi percobaan, mereka ditampilkan setiap hari selama dua minggu berturut-turut);
  • Jaminan perlindungan terhadap kesalahan karena perbedaan dalam lingkungan aplikasi;
  • Kami dapat mengatur interaksi yang efektif dengan pelanggan:

    • mendemonstrasikan setiap cabang fitur;
    • beri akses kepada tamu untuk membuat tugas dan memantau kemajuan pekerjaan.


, :



  • 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