ΠΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ Π΄Π΅ΡΠ΅ΡΠΈΠ»Π΅ΡΠΈΠ΅ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π½Π°ΠΏΡΠ΅Π΄ΡΠΊ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ (Continuous Integration, CI) ΠΈ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ (Continuous Delivery, CD). Π Π°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅Ρ (Development Operations, DevOps) Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π±ΡΡΠ·ΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π½Π° CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Ρ, ΠΎΠΏΠΈΡΠ²Π°ΠΉΠΊΠΈ ΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ Π² ΠΊΡΠ°ΠΊ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΈΠ·Π»ΠΈΠ·Π°Ρ Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠΌ Π²Π΅ΡΡΠΈΠΈ, Π² ΡΠ²Π΅ΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ° Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ (Quality Assurance, QA) Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ. Π‘ ΡΠ°ΠΊΡΠ² Π±ΠΎΠ³Π°Ρ ΠΈΠ·Π±ΠΎΡ, ΠΈΠ·Π±ΠΎΡΡΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π΅ Π΅ Π»Π΅ΡΠ½Π° Π·Π°Π΄Π°ΡΠ°.
Π‘ΡΠ΅Π΄ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ CI / CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈΠΌΠ° Π΄Π²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠΉ, ΠΊΠΎΠΉΡΠΎ ΡΡΡΡΠΈ Π½Π΅ΡΠΎ ΠΎΡ ΡΠ°Π·ΠΈ ΠΎΠ±Π»Π°ΡΡ. ΠΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Jenkins ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° GitLab CI / CD, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° GitLab. ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ
ΠΠ·Π΅ΠΌΠ΅ΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° G2, ΠΊΠΎΡΡΠΎ Π½Π°ΡΡΡΠΏΠ²Π° ΠΎΡΠ·ΠΈΠ²ΠΈ Π·Π° Π³ΠΎΠ»ΡΠΌΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΈ ΠΎΡΠ΅Π½ΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΈΠΌ Π΄Π°Π²Π°Ρ. ΠΡΠΎ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΠΎΡΠ΅Π½ΠΊΠ°
ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° Jenkins Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π°ΠΌΠ΅, ΡΠ΅ Π½ΠΈΠ΅, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΌΠ΅ ΡΡΠ°ΡΠΈΡ, ΡΡΠ°Π²Π½ΡΠ²Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ Travis CI ΠΈ Jenkins, ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ ΠΏΡΠΎΡΡΠ²Π°Π½Π΅. Π Π½Π΅Π³ΠΎ ΡΡΠ°ΡΡΠ²Π°Ρ Π° 85 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. ΠΠ½ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ Π±ΡΡ Π° ΠΏΠΎΠΌΠΎΠ»Π΅Π½ΠΈ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ°Ρ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠΉΡΠΎ Ρ Π°ΡΠ΅ΡΠ²Π°Ρ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ. 79% ΡΠ° ΠΈΠ·Π±ΡΠ°Π»ΠΈ Jenkins, 5% ΡΠ° ΠΈΠ·Π±ΡΠ°Π»ΠΈ Travis CI, Π° 16% ΡΠ° ΠΏΠΎΡΠΎΡΠΈΠ»ΠΈ, ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ Π°Π½ΠΊΠ΅ΡΠ°ΡΠ°
Π‘ΡΠ΅Π΄ Π΄ΡΡΠ³ΠΈΡΠ΅ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° GitLab CI/CD.
ΠΠΊΠΎ ΡΡΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π·Π° DevOps, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠ°ΡΠΎ Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π΅Π³ΠΎΠ²ΠΈΡ Π±ΡΠ΄ΠΆΠ΅Ρ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ. ΠΠ° Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΈΠ·Π±ΠΎΡ, ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΌΠ΅ Jenkins ΠΈ GitLab CI/CD. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠΎΠ²Π° ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΈΠ·Π±ΠΎΡ.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Jenkins ΡΡΠ·Π΄Π°Π΄ΠΎΡ Π° Π΄ΡΡΠ³ ΠΏΡΠΎΠ΅ΠΊΡ, Jenkins X, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π² ΡΡΠ΅Π΄Π° Π½Π° Kubernetes. Jenkins X ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° Helm, Jenkins CI/CD Server, Kubernetes ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° CI/CD ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ»Π΅Π΄Π²Π°Ρ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π½Π° DevOps. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, GitOps ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠΊ.
ΠΡΠΌ ΡΡΠΊΡΠΎΠ²ΠΈΡΠ½ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° Jenkins ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠ°ΠΊΡΡΡ, ΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ, ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅. ΠΠΊΠΈΠΏΡΡ Π½Π° Jenkins Π΅ ΡΡΠ·Π΄Π°Π» ΠΎΠΊΠΎΠ»ΠΎ 1000 Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΊΡΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° Jenkins Ρ Π³ΠΎΠ»ΡΠΌΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π‘ΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° Π½Π° Jenkins ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π½Π° Π²ΡΡΠΊΠ° ΡΡΡΠΏΠΊΠ°, Π΄Π°Π»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π΅ΡΠ°ΠΏΠΈ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠ° Π·Π°Π²ΡΡΡΠ΅Π½ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³Π»Π΅Π΄Π°ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°, Π½ΠΎ Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°.
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ
Π‘ΡΠ΅Π΄ Π΄ΠΎΠ±ΡΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Jenkins ΡΠ° Π»Π΅ΡΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠ»ΠΈΡΠ½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ DevOps, ΡΠΎΠ³Π°Π²Π° ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ ΡΠ΅ ΡΡΠΈΡΠ° Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΉΡΠΎ, ΠΊΠ°ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½ΡΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ ΠΎΡΠ±Π»ΠΈΠ·ΠΎ ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ»ΡΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. ΠΠ΅ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Jenkins.
β1. ΠΠ΅Π·ΠΏΠ»Π°ΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄
Jenkins ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° macOS, Windows ΠΈ Linux ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ. ΠΠΎΠΆΠ΅ Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΠΈ Π² Docker ΡΡΠ΅Π΄Π°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΠΈ Π±ΡΡΠ·ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ. Π’ΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΈ ΠΊΠ°ΡΠΎ ΡΡΡΠ²Π»Π΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Java ΠΊΠ°ΡΠΎ Apache Tomcat ΠΈ GlassFish. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Jenkins ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ
β2. Π Π°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°
ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ Π½Π° Jenkins ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π·ΡΡΠ»Π° ΠΎΡ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ° Π½Π°Π΄ 1500 Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° Jenkins. Π’Π΅Π·ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ ΡΠ° Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΊΡΠΌ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΠΎΠΊ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ Π·Π°Π΄Π°ΡΠΈ, Ρ ΡΡΡ
Π½Π° ΠΏΠΎΠΌΠΎΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠ·ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΡΠΎ ΠΎΡ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅, ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Jenkins, Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΊΡΠΏΡΠ²Π°ΡΠ΅ ΡΠΊΡΠΏΠΈ ΠΏΠ»Π°ΡΠ΅Π½ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ. ΠΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ
β3. ΠΠ΅ΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Jenkins Π΅ Π΄ΠΎΡΡΠ° Π»Π΅ΡΠ΅Π½ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΡΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π΅Π½. Π’ΡΠΊ ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠΏΠΎΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² Π½Π΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΡΠΏΡΠΎΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Jenkins.
β4. ΠΡΠΈΡΡΠ΅Π»ΡΠΊΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ
ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΌΠ΅, Jenkins Π΅ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΡΠΈΡΡΠΎ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΠΎΠ³ΡΠΎΠΌΠ΅Π½ Π±ΡΠΎΠΉ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ. ΠΠΎΠ»ΡΠΌΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈ ΠΎΠΊΠΎΠ»ΠΎ ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ, Π·Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ±ΡΠ½ΠΎΡΡΡΠ° Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ°ΠΊΡΠΎΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π΄Π²ΠΈΠΆΠ°Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Jenkins.
β5. ΠΠ°Π»ΠΈΡΠΈΠ΅ Π½Π° REST API
ΠΠΎΠΊΠ°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Jenkins, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ REST API, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. API Π·Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π² ΡΡΠΈ Π²Π΅ΡΡΠΈΠΈ: XML, JSON Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° JSONP, Python.
β6. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ
Jenkins ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° DevOps Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° ΡΡΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠ·Π²Π΅ΡΡΠΈΡ Π·Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π·Π°Π΄Π°ΡΠΈΡΠ΅. Π’Π΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΊΠΎΡΠΈ ΡΡΠ΅Π· ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
β7. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Π² ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ
Jenkins Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠΈ. Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠ° Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡ Π΅ΠΌΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΡΠΏΠΎΡΠ΅Π΄ ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ Π³Π»Π°Π²Π΅Π½ Jenkins ΡΡΡΠ²ΡΡ ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ. ΠΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ. Π’Π΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ°Π²Π°Ρ Jenkins ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitLab
GitLab CI/CD ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°Ρ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ, Π½ΠΎ ΠΏΡΠ΅Π· 2015 Π³. ΡΠΎΠ·ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π±Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ Π² GitLab 8.0. ΠΠ΄ΠΈΠ½ GitLab CI/CD ΡΡΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π½Π°Π΄ 25000 XNUMX ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΡΡΠ²ΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π²ΠΈΡΠΎΠΊΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ.
GitLab CI/CD ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° GitLab ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Ruby ΠΈ Go. Π’Π΅ ΡΠ° ΠΏΡΡΠ½Π°ΡΠΈ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Π½Π° MIT. GitLab CI/CD, Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° GitLab CI/CD Π² ΠΏΡΠΎΠ΅ΠΊΡ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅ΡΠ½ΠΎ. ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ GitLab CI/CD, ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΅ΡΠ°ΠΏΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ΅Π΄. ΠΠ°Π΄Π°ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ.
ΠΠ°Π΄Π°ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ. Π‘Π»Π΅Π΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΎΡ Π΅ΡΠ°ΠΏΠΈ ΠΈ Π·Π°Π΄Π°ΡΠΈ, CI/CD ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΡΡ Π΅ Π³ΠΎΡΠΎΠ² Π·Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΠ° ΠΌΡ, ΠΊΠ°ΡΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° GitLab CI / CD Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ.
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° GitLab CI/CD ΠΈ GitLab
GitLab CI/CD Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ DevOps ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° Ρ Π²ΠΈΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΌΡ ΡΠ° Π»Π΅ΡΠ½ΠΈ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. ΠΠΊΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ GitLab CI/CD, ΡΠ»Π΅Π΄Π½ΠΈΡΡ ΡΠΏΠΈΡΡΠΊ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ΅ Π²ΠΈ Π΄Π°Π΄Π΅ ΠΎΠ±ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅ ΠΎΡ Π½Π΅Π³ΠΎ. Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡ ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° GitLab, Π² ΠΊΠΎΡΡΠΎ Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ GitLab CI / CD.
β1. ΠΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡ
GitLab CI/CD Π΅ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Π½ΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π½Π°ΠΌΠ΅ΡΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. GitLab CI/CD Π±Π°Π²Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΠ½Π° Π² ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΡΡΡΠ΅Ρ. ΠΠ΅ΡΠ½ΠΎ ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π²Π³ΡΠ°Π΄Π΅Π½ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° GitLab.
β2. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° GitLab Pages ΠΈ Jekyll
Jekyll Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ ΡΠ°ΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° GitLab Pages Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΡΠΎΠ²Π΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° GitLab. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π²Π·Π΅ΠΌΠ° ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ ΠΈ Π½Π° ΡΡΡ
Π½Π° Π±Π°Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π³ΠΎΡΠΎΠ² ΡΡΠ°ΡΠΈΡΠ΅Π½ ΡΠ°ΠΉΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π²ΡΠ½ΡΠ½ΠΈΡ Π²ΠΈΠ΄ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΠ°ΠΉΡΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΉΠ»Π° _config.yml
, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ Jekyll.
β3. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΡΠΎ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π³ΡΡΠΏΠΈ. Π’ΠΎΠ²Π° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π΄Π°ΡΠ°.
β4. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° CI Π±Π΅Π³Π°ΡΠΈ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π΅Π³Π°ΡΠΈΡΠ΅, ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° Π½Π°Π΅ΠΌΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ΅Π½ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅Ρ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°Π²Π° Π΄ΡΠΌΠ° Π·Π° ΡΡΠ΅Π΄ΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ΡΡΠ²Π°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΡΡΡΡΠΎΡΡΠΈ ΡΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
β5. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ
ΠΠΎΡΠ½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° GitLab Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π°ΠΊΠ°ΡΠ°Ρ Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°. GitLab CI/CD ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ΄Π°. Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π’ΠΎΠ²Π° ΠΎΡΠ»ΠΈΡΠ°Π²Π° GitLab CI/CD ΠΎΡ Jenkins.
β6. ΠΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° GitLab ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠΈ ΡΡΡΡΡΠ΄Π½ΠΈΡΠ°Ρ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠΎΠ»ΠΈ. Π’ΠΎΠ²Π° Π²Π°ΠΆΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π·Π° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
β7. ΠΠΊΡΠΈΠ²Π½Π° ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π° ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°
ΠΠΊΠΎΠ»ΠΎ GitLab ΡΠ΅ ΡΠ°Π·Π²ΠΈ Π°ΠΊΡΠΈΠ²Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π΄ΠΎΠΏΡΠΈΠ½Π°ΡΡ Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΈ Π½Π΅ΠΉΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ GitLab CI / CD. ΠΡΠ»Π±ΠΎΠΊΠ°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° GitLab CI/CD ΠΈ GitLab, Π½Π°ΡΠ΅Π΄ Ρ Π΄ΡΡΠ³ΠΈ Π½Π΅ΡΠ°, ΡΠ»Π΅ΡΠ½ΡΠ²Π° Π½Π°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π½Π° Π²ΡΠΏΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ GitLab CI/CD.
β8. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅
GitLab CI/CD Π΅ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠ΄, Ρ ΠΎΡΡΠ²Π°Π½ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π½Π° GitLab. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ΄ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° GitHub, Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΡΡ CI / CD ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° GitLab Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° GitLab CI / CD.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° Jenkins ΠΈ GitLab CI/CD
Jenkins ΠΈ GitLab CI/CD ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠ°ΡΠΎ ΠΈ Π΄Π²Π°ΡΠ° ΡΠ° Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π° Π½Π°ΠΊΠ°ΡΠ°Ρ CI/CD ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π³Π»Π°Π΄ΠΊΠΎ. ΠΠΎ Π°ΠΊΠΎ Π³ΠΈ ΡΡΠ°Π²Π½ΠΈΡΠ΅, ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ° ΡΡ ΠΎΠ΄Π½ΠΈ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½ΠΈ, ΡΠ΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ Π΅Π΄ΠΈΠ½ ΠΎΡ Π΄ΡΡΠ³ ΠΏΠΎ Π½ΡΠΊΠΎΠΈ Π½Π°ΡΠΈΠ½ΠΈ.
ΠΡ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΠΈΡΠ°Π½Π΅
ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ
GitLab CI/CD
ΠΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄
ΠΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄
ΠΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡ
ΠΠ°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ.
ΠΠ΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° Π΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° GitLab.
Π£Π½ΠΈΠΊΠ°Π»Π½ΠΈ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ
ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ.
ΠΡΠ»Π±ΠΎΠΊΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅.
ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°
ΠΡΠΌΠ°.
ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅
Π’ΡΡΠ΄Π½ΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°Ρ
Π’ΡΡΠ΄Π½ΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°Ρ
Π‘Π°ΠΌΠΎΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°
Π’ΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° CI/CD ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈ
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Jenkins Pipeline.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅.
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΡΠΌΠ°.
ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°
ΠΠΌΠ° Π½Π°Π΄ 1000 Π΄ΠΎΠ±Π°Π²ΠΊΠΈ.
Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° GitLab.
API
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΡΠ²ΡΡΡΠ΅Π½ΡΡΠ²Π°Π½Π° API ΡΠΈΡΡΠ΅ΠΌΠ°.
ΠΡΠ΅Π΄Π»Π°Π³Π° API Π·Π° ΠΏΠΎ-Π΄ΡΠ»Π±ΠΎΠΊΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° JavaScript
ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ (Slack, GitHub).
ΠΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ, ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ - Ρ GitHub ΠΈ Kubernetes.
ΠΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π° SonarQube ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅.
Π Π°Π·Π»ΠΈΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Jenkins ΠΈ GitLab CI/CD
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΎΠΏΠΈΡΠ°Ρ ΠΌΠ΅ ΠΈ ΡΡΠ°Π²Π½ΠΈΡ ΠΌΠ΅ Jenkins ΠΈ GitLab CI/CD, Π½Π΅ΠΊΠ° ΡΠ΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌ Π²ΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π·ΠΈ DevOps ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. ΠΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΏΡΠ΅Π΄ Π΄ΡΡΠ³ΠΈΡ.
- GitLab CI/CD ΠΌΠΎΠΆΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π½Π° Git. ΠΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ Π½ΡΠΊΠΎΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎ Jenkins, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π½Π΅ Π΄Π°Π²Π° ΡΡΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ Ρ ΡΡΡ ΠΊΠ°ΡΠΎ GitLab CI / CD.
- Jenkins Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄. Π’ΠΎΠ·ΠΈ, ΠΊΠΎΠΉΡΠΎ Π³ΠΎ ΠΈΠ·Π±ΠΈΡΠ°, Π³ΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ. Π GitLab CI / CD Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° GitLab, ΡΠΎΠ²Π° Π΅ Π³ΠΎΡΠΎΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
- GitLab CI/CD ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ. Π’Π°Π·ΠΈ ΡΡΡΠ°Π½Π° Π½Π° ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ Π΅ ΠΏΠΎ-ΡΠ»Π°Π±ΠΎ ΡΠ°Π·Π²ΠΈΡΠ°.
Jenkins ΠΈ GitLab CI/CD: ΡΠΈΠ»Π½ΠΈ ΠΈ ΡΠ»Π°Π±ΠΈ ΡΡΡΠ°Π½ΠΈ
ΠΠ΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° Jenkins ΠΈ GitLab CI/CD. Π‘Π΅Π³Π°, Π·Π° Π΄Π° Π²ΠΈ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ ΠΎΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Ρ ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Π½Π΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠΈΠ»Π½ΠΈ ΠΈ ΡΠ»Π°Π±ΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅, ΡΠ΅ Π²Π΅ΡΠ΅ ΡΡΠ΅ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ°Π·Π΄Π΅Π» ΡΠ΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΡΠ΅Π±Π΅ ΡΠΈ.
βΠ‘ΠΈΠ»Π½ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈ Π½Π° ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ
- ΠΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ.
- ΠΡΠ»Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ Ρ ΠΌΠΎΠ½ΡΠ°ΠΆΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°.
- ΠΠ΅ΡΠ½ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π½Π° Π±Π΅Π³Π°ΡΠΈ.
- ΠΠ΅ΡΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π²ΡΠ·Π΅Π».
- ΠΠ΅ΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄.
- ΠΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ.
- ΠΡΠ²ΠΊΠ°Π²ΠΎΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅.
- Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠ° Π½Π° ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ Π½ΠΈΠ²ΠΎ.
βΠ‘Π»Π°Π±ΠΎΡΡΠΈ Π½Π° ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ
- ΠΡΠΈΡΡΠ°Π²ΠΊΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΡΠ΄Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.
- ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Jenkins Π² ΠΌΠ°Π»ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ Π³ΠΎΠ»ΡΠΌΠΎ.
- ΠΠΈΠΏΡΠ° Π½Π° ΠΎΠ±ΡΠ° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° CI/CD Π²Π΅ΡΠΈΠ³ΠΈ.
βΠ‘ΠΈΠ»Π½ΠΈ ΡΡΡΠ°Π½ΠΈ Π½Π° GitLab CI/CD
- ΠΠΎΠ±ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Docker.
- ΠΡΠΎΡΡΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π΅Π³Π°ΡΠΈΡΠ΅.
- ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° CI/CD.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° Π½Π°ΡΠΎΡΠ΅Π½Π° Π°ΡΠΈΠΊΠ»ΠΈΡΠ½Π° Π³ΡΠ°ΡΠΈΠΊΠ° ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ Π½Π° Π·Π°Π΄Π°ΡΠΈ.
- ΠΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ ΠΏΠΎΡΠ°Π΄ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π΅Π³Π°ΡΠΈ.
- ΠΠ΅ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ.
- ΠΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ.
- ΠΠ°Π΄Π΅ΠΆΠ΄Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ.
βΠ‘Π»Π°Π±ΠΎΡΡΠΈ Π½Π° GitLab CI/CD
- ΠΠ° Π²ΡΡΠΊΠ° Π·Π°Π΄Π°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΏΠΈΡΠ΅ΡΠ΅ ΠΈ ΠΊΠ°ΡΠΈΡΠ΅ / ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ.
- ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΠ»ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ»Π΅ΡΠΈ.
- ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π½Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° CI / CD, Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΡ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΅ΡΠ°ΠΏΠΈ Π² ΡΡΡ .
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ
ΠΠ°ΠΊΡΠΎ Jenkins, ΡΠ°ΠΊΠ° ΠΈ GitLab CI/CD ΠΈΠΌΠ°Ρ ΡΠΈΠ»Π½ΠΈ ΠΈ ΡΠ»Π°Π±ΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΡΠ³ΠΎΠ²ΠΎΡΡΡ Π½Π° Π²ΡΠΏΡΠΎΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π½ΡΠΆΠ΄ΠΈΡΠ΅ ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠ΅ΠΊΠΈ ΠΎΡ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°Π½ΠΈΡΠ΅ Π΄Π½Π΅Ρ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Jenkins Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π° GitLab CI / CD Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° ΡΡΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΡΡ Ρ ΠΊΠΎΠ΄.
ΠΡΠΈ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° CI / CD ΡΠΈΡΡΠ΅ΠΌΠ°, Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π½Π΅ΠΉΠ½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΡΡΡΠ²Π° ΡΠΈ Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅Ρ, ΠΈ Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ Π½Π° DevOps, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ° ΡΠ²ΠΈΠΊΠ½Π°Π»ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ.
ΠΠ°ΠΊΠ²ΠΈ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅?
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com