Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ enterprise ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
ΠΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ
ΠΠ° Π΄Π½ΡΡ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ Π΄Π»Ρ ΡΡΠ°ΡΡΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΊΠ΅: Π½Π° Π₯Π°Π±ΡΠ΅ Π½ΠΈ ΡΠ°Π·Ρ Π½Π΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ «ΠΎΡ ΠΈ Π΄ΠΎ». Π ΠΏΠ»Π°Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Ρ Π½ΡΠ»Ρ ΠΈ Ρ ΠΎΡΡ Π±Ρ Π΄ΠΎ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ°. ΠΠ° ΠΎΡΠΏΡΠ°Π²Π½ΡΡ ΡΠΎΡΠΊΡ Ρ Π±ΡΠ΄Ρ Π±ΡΠ°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»Π½Π΅ΠΉΡΠ΅Π³ΠΎ Ρ Π°ΠΎΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, Π½Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, Π½Π΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΡΠ΅Π΄, ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΠ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π·Π°Π΄Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ «Π’Π°ΠΊΠΎΠ΅ Π±ΡΠ²Π°Π΅Ρ Π² 2020 Π³ΠΎΠ΄Ρ? Π Π°Π·Π²Π΅ ΠΊΡΠΎ-ΡΠΎ Π΅ΡΠ΅ ΡΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ?» ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΠ°ΡΡΠΈ ΠΏΡΠ°Π²Ρ. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ.
ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π·Π° ΡΠ²ΠΎΠΈ 10+ Π»Π΅Ρ ΠΎΠΏΡΡΠ° Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² (Π½Π° ΠΏΡΠΎΡΠ»ΡΡ ΠΌΠ΅ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ).
Π’ΠΎ Π΅ΡΡΡ ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π½Π°Π±ΡΠΎΡΠ°ΡΡ ΠΏΠ»Π°Π½ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ ΠΎΠΊΠΎΠ»ΠΎΠ½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΡΡ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. Π ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΡΠ°ΡΡΡΡ ΡΡΠ°ΡΡΠ°ΠΏΠΎΠ² ΠΈ Π³Π΅ΠΉΠΌΠ΄Π΅Π² ΡΡΡΠ΄ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΌ ΡΠ²ΠΎΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π₯ΠΎΡΡ Π±ΡΠ²Π°ΡΡ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Ρ Π²ΡΠΏΠΎΠΌΠ½Ρ ΠΏΡΠΎ ΡΡΠ°ΡΡΠ°ΠΏΡ Π² Π³Π»Π°Π²Π΅ ΠΏΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ.
ΠΠ°ΡΠ°Π»ΠΎ Π½Π°ΡΠ°Π» β git
ΠΡΠ°ΠΊ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π²Ρ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠ΅Ρ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΌΠ½ΠΎΠΉ Π²ΠΎ Π²ΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ. Π‘ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ? ΠΠΎΠ½Π΅ΡΠ½ΠΎ Ρ git. ΠΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ, ΡΠ°ΠΌΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, Π»ΡΡΡΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΡΡ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΌΡΡ . ΠΡΠΎΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° ΡΠ²ΠΎΡ ΠΌΠ°ΡΠΈΠ½Ρ, Π·Π°ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π½Π°Π±Π΅ΡΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Ρ Π²Π°Ρ ΡΠ΅ΠΏΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΠ΄ΡΠΈ Π»Π΅ΡΠΎΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅. Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ΅Π½ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ «ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅». Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎ ΡΠΌΡΡΠ»Ρ ΠΏΡΠ°Π²ΠΎΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ°ΡΡΠ²Π°ΡΡ ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π² ΠΈΡΡΠΎΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ°ΠΆΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π±Π΅Π·ΠΎ Π²ΡΡΠΊΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ git ΡΠΆΠ΅ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠΉΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
Π Π°Π±ΠΎΡΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ β GitLab
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°? ΠΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, git Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ. Π Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ 5-7 Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Ρ Π±Ρ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ git Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ GitLab. GitLab ΡΡΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ OpenSource ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΠ΅ Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ.
GitLab β Π²Π΅Π±-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° DevOps Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ git Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π²ΠΈΠΊΠΈ, ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, CI/CD ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² GitLab ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ β ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ²ΠΎΠΉ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ «ΠΊΠ°ΡΠΌΠ°Π½Π½ΡΠΉ» GitHub. Π£ GitLab Π΅ΡΡΡ ΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠΈΡ Π·Π΄Π΅ΡΡ. ΠΠ· ΠΏΡΠΈΡΡΠ½ΠΎΠ³ΠΎ β ΠΏΠ»Π°ΡΠ½ΡΠ΅ ΡΠΈΡΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡ Π² Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.
ΠΡΠ°ΠΊ, GitLab ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΊΡΠ°Π΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠΌ ΠΊΠ°ΠΌΠ½Π΅ΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ «ΠΏΡΠΎΠ΅ΠΊΡ». ΠΡΠΎΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ/Π΄Π΅ΡΠ΅ΠΊΡΠΎΠ² (issues), agile-Π΄ΠΎΡΠΊΡ, wiki ΠΈ Ρ.Π΄. ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΎ ΠΎΠ±ΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ.
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈ ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β GitLab ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅. ΠΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ Github Flow. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, Π° Π΄Π»Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Ρ.Π½. Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈΠ»ΠΈ merge requests (ΡΠ°Π·Π³. ΠΌΠ΅ΡΠ΄ΠΆΡΠ΅ΠΊΠ²Π΅ΡΡ). ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π³ΠΎΠ² ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ: ΠΈΠ· Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°, ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ Π½Π΅ΠΉ merge request. ΠΠ°Π»Π΅Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π° ΡΡΡ Π²Π΅ΡΠΊΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΈΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΠΊΠΎΠΌΠΌΠΈΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΠΏΡΡΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. ΠΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ° Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΠ΅: ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², ΠΏΠΎΡΡΡΠΎΡΠ½ΡΠΉ Π΄ΠΈΡΡ. Π ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ»Π°Π³ «work in progress» (WIP). ΠΠ»Ρ ΡΠΈΠΌΠΌΠ΅ΠΉΡΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ ΠΊ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΡΠ΅Π²ΡΡ. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²ΠΎΠ΄ΠΈΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· Π΄ΠΈΡΡΠ°, ΡΠ°ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΈ ΡΠ°ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ ΡΡΠ°Π·Ρ ΠΏΡΠΈΠ½ΡΡΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΡΠ΅Π²ΡΡ. ΠΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: Π½Π΅Π»ΡΠ·Ρ ΡΠ»ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ° Π²ΡΠ΅ Π΄ΠΈΡΠΊΡΡΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ Π·Π°ΠΊΡΡΡΡ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΡΠΆΠ½ΡΡ ΡΠ΅Π²ΡΡΠ²Π΅ΡΠΎΠ² Π±Π΅Π· Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ.
Π’ΡΠ΅ΠΊΠΈΠ½Π³ Π·Π°Π΄Π°Ρ
ΠΠΎΠ΄ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ½ΠΎΡΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ/Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°/ΠΈΠ΄Π΅ΠΈ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. GitLab ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
ΠΈ Ρ.Π΄.), Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, ΡΠ°ΠΉΠ»Ρ, ΡΠΌΠ°ΠΉΠ»Ρ, Π³ΡΠ°ΡΠΈΠΊΠΈ, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΡΠΌΡΠ»Ρ, mermaid-Π³ΡΠ°ΡΡ ΠΈ Π΄Ρ. ΠΡΠΎ Π²Π΅ΡΠ΅Π»ΠΎ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΌΠΎΠ΄Π½ΠΎ-ΠΌΠΎΠ»ΠΎΠ΄Π΅ΠΆΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅!
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ Π·Π°Π΄Π°Ρ (ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΡΠΈΠ΄Π΅Ρ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ (definion of done, DoD).
ΠΡΠΎΡΠ΅Π΅
Π’Π°ΠΊ ΠΆΠ΅ Π² GitLab ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π²Π΅ΡΡΠΈ wiki ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΈΡΠ½ΠΎ Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΈΠΊΠΈ ΠΊΠ°ΠΊ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π·Π½Π°Π½ΠΈΡ ΠΈΠ· Π³ΠΎΠ»ΠΎΠ² ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ Π²ΠΈΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½Π° Π² GitLab, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ Π²ΡΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², Π·Π°Π΄Π°Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΌΠ΅ΡΠΎΠΊ ΠΈ Ρ.Π΄. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ. Π’Π°ΠΊ ΠΆΠ΅ wiki-ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ Ρ ΡΠ°Π½ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠΎ ΠΎΡΡΡΠ΅Π½ΠΈΡΠΌ, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ Markdown-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π² Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌ git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. Π’Π°ΠΊ ΠΆΠ΅ Wiki ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ. Π Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΊΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ .
ΠΠ°ΠΉΠ»ΡΡΠΎΡΠ½ (milestone) β Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ Π² GitLab, Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠ΅ΠΌ Π·Π°Π΄Π°ΡΠΈ ΠΈ merge request’Ρ. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π² ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ Π³ΡΡΠΏΠΏΡ. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ°ΠΊΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΡΠ°Π²ΠΊΠ° (ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΠ) Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π°ΡΡ.
GitLab ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΌΠ΅Π΅Ρ Π² CI/CD, Π½ΠΎ Π²ΡΡΠ΄ Π»ΠΈ ΡΡΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²Π°ΠΌ ΡΠ΅ΠΉΡΠ°Ρ, Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ Π²ΡΠ΅ΡΠ° ΠΊΠΎΠ΄ Ρ ΡΠ°Π½ΠΈΠ»ΡΡ Π½Π° Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅ΡΡΠΊΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠ± ΡΡΠΎΠΌ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π² Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅.
ΠΡΠ°ΠΉΠ½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π·Π°Π²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ README. Π ΡΠ°ΠΌΠΎΠΉ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅, ΠΈ ΠΊΡΡΠΏΠ½ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ README.md. ΠΡΠ°ΠΊΡΠΈΠΊΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Ρ ΠΎΡΡ ΠΈ ΠΎΡΠ½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ, Π½ΠΎ Π² ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅. GitLab ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ README ΠΊΠ°ΠΊ ΠΈ Π²Π΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ Markdown, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ Π΅Π³ΠΎ Π² ΠΏΡΡΠΌΠΎ Π² Web-IDE.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π΄Π°, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ Π΅ΡΡΡ ΠΎΠΏΡΠΈΡ Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π½Π° GitHub’Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ GitLab’Π° Π²Π½ΡΡΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΡΠ°ΡΡΡΠΌ.
ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ
ΠΠΊ, ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎ ΡΡΠΎ Π½Π°ΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΠ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ? ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠ² ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² ΡΠ°ΠΌΠΎΠΉ ΠΠ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ: Π»ΠΈΠ±ΠΎ ΠΎΠ½ΠΈ «ΡΠ°Π·ΡΠ΅Π΄ΡΡΡΡ» ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΡΡΠ°ΠΌΠΈ, Π»ΠΈΠ±ΠΎ Π±ΡΠ΄Π΅Ρ Π±Π΅Π·Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π½Π° ΠΈΡΡΠΎΡΠΈΡ, Π»ΠΈΠ±ΠΎ Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΎΠ΄Π΅. ΠΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΠ΄ΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ . ΠΠΈΠ³ΡΠ°ΡΠΈΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΠ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π»ΠΈΡΡ ΡΠ°Π½ΡΠ°Π·ΠΈΠ΅ΠΉ ΠΈ ΡΠΌΠ΅ΠΊΠ°Π»ΠΊΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΌΠ½Π΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π½Π°:
ΠΡΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π΅ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΌΠΊΠ°. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ Π»ΠΈΡΠ½ΠΎ ΠΌΠ½Π΅ CREATE-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠΏΠΎΠ½ΠΈΡΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅.
Π₯ΠΎΡΠΎΡΠ°Ρ ΡΡΠ°ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅: ΠΠ΅ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
: ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π±Π°Π·Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΡ
ΡΠ΅Π»ΠΈΠ·ΠΎΠ²: ΠΠ° ΠΏΡΡΠΈ ΠΊ Canary (ΡΠ°ΠΌ ΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡΠΎ ΡΡΠΎΡ ΡΠΈΠΏ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²).
ΠΠΎΡΡΠ°Π²ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΠΏΠΈΡΠ°Π½ Π² Π³Π»Π°Π²Π΅ ΠΏΡΠΎ Docker.
ΠΡΠ°ΠΊ, Ρ ΠΠ°Ρ ΡΠΈΠ²ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΊΠΎΠ΄. ΠΠΎ ΡΡΠΎ Π½Π°ΡΡΠ΅Ρ Π²ΡΠΊΠ»Π°Π΄ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π΄Π»Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ? Π‘ΠΏΠΎΡΠΎΠ± Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Π΅ Π²Π½ΡΡΡΠΈΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π°-Π»Ρ ΠΠ Π) ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΊΠ»Π°Π΄ΠΊΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π° Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΉΡΠ° Π°ΡΡ ΠΈΠ² ΡΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ. ΠΠ°ΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° β ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° ΠΠ, ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠ½ΠΎ, ΡΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΡΡΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ «ΡΠ°ΡΠΊΠ°ΡΠ°ΡΡ» ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡ, ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΡΠ°Π·Ρ Π΄ΠΎΠ²Π΅ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ Π²Π΅ΡΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΡΠ°Π½Π΅Π΅.
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ (Π±ΠΈΠ»Π΄ΡΠ΅ΡΠ²Π΅Ρ). ΠΡΠΈΡΠΈΠ½Π° ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°: Π΅ΡΠ»ΠΈ ΡΠ±ΠΎΡΠΊΠ° «Π±ΠΎΠ΅Π²ΠΎΠ³ΠΎ» Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ°ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π½Π΅Π»Π΅Π³ΠΊΠΎ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡΡ Π² Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΠΊ ΡΠΉΠ΄Π΅Ρ Π² ΠΎΡΠΏΡΡΠΊ ΠΈΠ»ΠΈ ΡΠ²ΠΎΠ»ΠΈΡΡΡ.
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ΅ΠΌΡ Π±ΠΈΠ»Π΄ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ° Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ². Π¨Π°Π³ΠΈ, ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π² ΠΠ ΠΊΠ»Π°ΡΡΠ° Jenkins, GitLab ΠΈΠ»ΠΈ TeamCity. Π ΡΠ·ΠΊΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ° Π±ΠΈΠ»Π΄ΡΠ΅ΡΠ²Π΅Ρ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π°Π³Π΅Π½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π΅ΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°Π³ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ.Π½. Π°ΡΡΠ΅ΡΠ°ΠΊΡ (ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ²), ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ². ΠΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Ρ ΡΠ°Π½ΠΈΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π²Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Nexus/Artifactory. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ Π²ΠΎΠΏΡΠΎΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΉ ΡΠ±ΠΎΡΠΎΠΊ ΡΠΈΡΡΠ΅ΠΌ.
ΠΠ΅ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ
Π Π³Π»Π°Π²Π΅ ΠΏΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ ΠΎΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΡΠΎΠ½ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ. Π€ΠΎΡΠΌΠ°Ρ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ:
ΠΡΠ°Π²ΠΈΠ»ΠΎ: ΠΠ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅. Π TeamCity, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ build counter, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΡΡΡΠΈΠΉΡΡ ΡΡΠ΅ΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π½ΠΎΠΌΠ΅ΡΠΎΠ². ΠΠ· ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΎ:
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΡ, ΡΡΠΎ Π½Π΅ ΡΡΠΎΠΈΡ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΄Π»Ρ ΠΠ, ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ, ΡΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Ρ.Π΄. ΠΠ°ΠΎΠ±ΠΎΡΠΎΡ, Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΎΠ².
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅
ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ: ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ Π² master-Π²Π΅ΡΠΊΡ. ΠΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈΡ Π½Π° ΡΠ΅Π»Π΅Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΠ° ΠΈ Π²ΡΡΡΠ½ΡΡ, Π½ΠΎ Π΄Π°Π»ΡΠ½ΠΎΠ²ΠΈΠ΄Π½Π΅Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ΅Π±ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΠΊΠΎΠ½ΡΡΡΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ). Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TeamCity, GitLab ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ python-ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ. Π― ΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΡ ΠΊΠ΅ΠΉΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ansible/AWX.
ΠΡΠΎΡΠΈΡΠΈΡΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠ°ΡΠ΅ΠΉ ΠΎΠ± Ansible Π½Π° Π₯Π°Π±ΡΠ΅:
Ansible β ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ. ΠΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΠ»Π°Π²Π½ΠΎΠ΅ Π΅Π³ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π² ΡΠΎΠΌ, ΡΡΠΎ Ansible ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ SSH, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ (chef, puppet, ΠΈ ΠΏΡ.) ΡΡΠ΅Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ PKI-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΆΠ½ΠΎ, ΡΡΠΎ Ansible ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ ΠΎΡΡΠ΅. Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π°Π²ΡΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°, ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², Π·Π°ΠΏΡΡΠΊ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΠ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠΎΠ½ΡΡΡΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ inventories, Π·Π°Π²Π΅Π΄Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ½Π²Π΅Π½ΡΠΎΡΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΡΡ.
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅ΠΌΠ΅ Π±ΠΈΠ»Π΄ΡΠ΅ΡΠ²Π΅ΡΠ°: Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ pip Π΄Π»Ρ Python, nuget Π΄Π»Ρ C#, npm Π΄Π»Ρ Node.JS. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠ°Π³ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° Π±ΠΈΠ»Π΄ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ°Π³ΠΈ ΠΏΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ/ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. Π’Π°ΠΊ ΠΆΠ΅ ΡΡΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡ ΠΏΡΠΈΡ ΠΎΠ΄ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ β Π΅ΠΌΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΈΠ½ΡΡ β Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π³ΡΠ΅ΡΠ°Ρ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡΡ, Π½ΠΎ Ρ ΡΡΠΈΠΌ ΠΌΠ°Π»ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»Π°ΡΡ, ΠΏΠΎΠ»ΡΠ·Ρ ΠΎΠ½ΠΈ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΏΡΠΈΠ½ΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅.
Π’Π΅ΡΡΠΎΠ²ΡΠ΅ ΡΡΠ΅Π΄Ρ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΠΏΠΈΡΠ°Π½ Π² Π³Π»Π°Π²Π΅ ΠΏΡΠΎ Docker.
ΠΠΎΠ½ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΎΠ²Π°Ρ ΡΡΠ΅Π΄Π° ΡΡΠΎ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΈ ΡΠΎΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ. Π Π°Π·Π»ΠΈΡΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ: ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΠ° Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π±Π΅Π· ΡΠΈΡΠΊΠ° Π½Π°Π²ΡΠ΅Π΄ΠΈΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΡΠΎΠ²:
Π§Π°ΡΡΠΎ Π½ΡΠΆΠ½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΠ° Π΄Π»Ρ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠΏΡΡΠ½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΡΠ°ΡΠΈΠΈ, ΡΠΈΠΌΡΠ»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π³ΠΎΡΡΠ΅Π²ΠΎΠ³ΠΎ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΠΈΠ΄Π΅Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎ ΡΠ²ΠΎΠΈΠΌ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ΅Π΄Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ. Π£ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΈΠΌ Π²ΡΡΡΠ½ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΄Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠΎΠ΄Π΅ Ansible (ΡΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°Π»Π΅Π΅), chef ΠΈ Π΄Ρ.
ΠΠ°ΠΆΠ½ΠΎ: Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΠ°Ρ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΠ΅ΡΠ΅ΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΈΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ ΡΠ΅ΠΉΠΊΠΎΠ²ΡΠΌΠΈ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΡΠΈΡΠΊΡΠ΅ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΡΠ΅ΡΡ ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Ρ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΠΎΠ².
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΠ΄Π½Π°ΠΆΠ΄Ρ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΌΠΎΠΆΠ΅Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·. ΠΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΌΠΎΡ ΡΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π·Π΄Π΅ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠ΄Π΅Ρ Π² ΡΠ΅Π»ΠΎΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½Π°Ρ: «Π½Π°ΡΠ΅Π·Π°ΡΡ» Π²ΠΈΡΡΡΠ°Π»ΠΎΠΊ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΆΠ΅Π»Π΅Π·Π½ΡΠΉ ΡΠ΅ΡΠ²Π°ΡΠΎΠΊ.
ΠΠ²ΡΠΎΡΠ΅ΡΡΡ
Π― Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ Π½Π΅ ΡΡΠ°Π» ΠΊΠ°ΡΠ°ΡΡΡΡ ΡΠ΅ΠΌΡ unit-ΡΠ΅ΡΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π³Π°Π΄ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΊΠ° Π² Π»Π΅Π±Π΅Π΄Ρ. ΠΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΎΠΏΡΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ unit-ΡΠ΅ΡΡΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡ Π±Π΅Π· ΠΊΡΠ»ΡΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΏΡΠΈΠ½Π΅ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π»Π΅Π³ΠΊΠΈΡ ΠΏΠΎΠ±Π΅Π΄. ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈ Π½Π΅ΠΊΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π² ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΡΡΠΎΠΊΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ². ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΎΡΡ, Π²ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠΊΠ°Ρ QA-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π°ΠΆΠ΅ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² Π½ΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΡΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½Π΅ΡΡΠΈΡΡ ΠΊ ΡΠ΅ΠΌΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
ΠΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ½Π΅Π΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π»ΠΎΠ³Π°ΠΌΠΈ. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ Π²ΠΈΠ΄Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΠΊΠΎΠ΄Π΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΈΡΠ΅ΡΡΡ Π² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΡΠΎΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°), ΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π² Π°ΡΡ ΠΈΠ². ΠΠΎΠΆΠ°Π»ΡΠΉ, Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ (ΠΊΠΎΠ½ΡΡΡΠ΅), ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΈΡ ΠΊΠ°ΠΊ-ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΡΠ΄Π° Π²ΡΡΠ°ΡΠΊΠΈΠ²Π°ΡΡ. ΠΠΎΠΈΡΠΊ ΠΏΠΎ ΠΈΡΡΠΎΡΠΈΠΈ ΠΎΡΠ»ΠΎΠΆΠ½Π΅Π½, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° Π»ΠΎΠ³ΠΎΠ² ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΡΠ»ΠΎΠΆΠ½Π΅Π½Π°. ΠΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΠ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π»ΠΎΠ³Π°ΠΌΠΈ.
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΠΈ β ELK-ΡΡΠ΅ΠΊ ΠΈ Graylog. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²Π½ΡΡΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π² Π½Π΅Π΅ Π»ΠΎΠ³ΠΎΠ² ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ UDP, ΡΡΠΎΠ±Ρ Π½Π΅ Π½Π°ΡΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΊΠ°Π·Π° ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Graylog Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ.Π½. ΡΡΡΠΈΠΌΠ°ΠΌΠΈ β ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ°ΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ Π»ΠΎΠ³Π°ΠΌ ΡΡΠ°Π·Ρ Π½Π° Π²Ρ ΠΎΠ΄Π΅ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π»ΠΎΠ³Π°ΠΌΠΈ. ΠΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΡΡΠΈΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΡΡ.
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΠ· Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΠ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Ρ Π±Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» Grafana. ΠΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π» ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Grafana ΠΈΠ· ΡΡΠ°ΡΡΠΈ:
ΠΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈ ΠΊΡΠ°ΡΠΎΡΡ ΡΡΠΎΠΈΡ Ρ ΠΎΡΡ Π±Ρ ΡΠ°Π· Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°
Π ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Π² «Π·Π΄ΠΎΡΠΎΠ²ΠΎΠΌ» ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΊΡΠΎΠ΅ΡΡΡ ΡΠ΅ΠΊΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π ΠΎΠ±Π΅ΡΡ ΠΠ°ΡΡΠΈΠ½ Π² ΡΠ²ΠΎΠΈΡ Π»Π΅ΠΊΡΠΈΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ ΡΡΠΊΠΎΡΡΡΡΡΡ, ΠΊΠ°ΠΊ Π½Π΅ Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡΡΡ. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΌΠΏΠ° Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Ρ ΠΎΡΠΎΡΠ΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, Π½ΠΎ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Ρ, ΠΏΠΎΡΡΠ°ΠΏΠ½ΠΎΠΌΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³Π°. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π° Π²Π°Ρ, Π½ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Π² Ρ ΠΎΡΠΎΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
Sonarqube
ΠΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΡΠ΅Π²ΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ Π² ΡΠΈΡΡΠΎΡΠ΅ ΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²Π΅ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ β ΡΡΠΎ Π·Π°ΠΉΠΌΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π· ΡΡΠΈΠ»ΠΈΠΉ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ SonarQube:
SonarQube β ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° (Π°Π½Π³Π». continuous inspection) ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ΄Π½Π°ΠΆΠ΄Ρ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠΎΠ½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π° Π² ΡΠ°Π·ΡΠ΅Π·Π΅ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³Π°, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠΎΠ΄Π° «Ρ Π΄ΡΡΠΊΠΎΠΌ» (code smells).
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅, ΠΏΠΎ ΠΈΡΠΎΠ³Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΎΡΡΠ΅Ρ Ρ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΎΡΠ΅Π½ΠΊΠΎΠΉ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΡΠΈΡΠ΅ΡΠΈΡ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ.
Π‘ΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ°ΠΊΡΠΈΠΊΠ° ΡΠΈΠΊΡΠ°ΡΠΈΠΈ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΡΡΡΠ° ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π²ΡΠΈΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ. Code guide, code style β ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅. ΠΡΠΊΡΡΠ²Π°ΡΡ Π»ΠΈ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² if, ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π»ΠΈ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π΅Π»Ρ β Π²ΡΠ΅ ΡΡΠΈ Π½Π΅ΠΎΠ±Π΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΅ΡΠΈΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½Π°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½ΠΎ ΠΈ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ ΠΏΠ»Π°Π½ΠΊΡ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ.
ΠΠΈΠ½ΡΠ΅ΡΡ β ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π² Π½Π΅ΡΠΊΠ»ΠΎΠ½Π½ΠΎΠΌ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠΈ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΏΡΠ°Π²ΠΊΠ°: Lint ΡΡΠΎ ΠΈΠΌΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠ·ΡΠΊΠ° C, «ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΠ±ΡΠ°Π» ΠΎ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ»ΠΈ Π½Π΅ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ». ΠΠ³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠ°Π»ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π°. Π‘Π΅ΠΉΡΠ°Ρ Π»ΠΈΠ½ΡΠ΅ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ, ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΈΡΠ΅ΠΉ IDE. Π‘ΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
Π’Π΅ΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π±ΡΠ»Π° ΠΊΡΠ°ΡΠΊΠΎ Π·Π°ΡΡΠΎΠ½ΡΡΠ° Π² Π³Π»Π°Π²Π΅ ΠΏΠΎ SonarQube. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ChechMarx. ΠΡΠΎ Π³ΠΈΠ±ΠΊΠΎΠ΅ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΎΠ΅ ΠΠ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΠΈΠ΄Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ: Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π²ΡΠ΅Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ ΡΠΎΡΠ΅ΠΊ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΠ) Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ (UI, ΠΎΡΡΠ΅ΡΡ, ΠΠ) Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΠ°Π½ΠΈΡΠ°ΠΉΠ·Π΅ΡΠΎΠ². Π‘Π°Π½ΠΈΡΠ°ΠΉΠ·Π΅ΡΠΎΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π»ΡΠ±Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π²ΠΎΠ΄Π° Π½Π° Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΠΎΡΡΡ. ΠΡΠ»ΠΈ ΡΠ°Π½ΠΈΡΠ°ΠΉΠ·Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ChechMarx ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ , Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ.
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅ ΠΠ ΠΈΠ· ΡΡΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: wapiti, nikto
ΠΠ±ΡΠ΅Π΅ Π½Π΅ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ΅
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΡΡΠΎ ΡΡΠ°ΡΡΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΠ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ Π°ΡΠΏΠ΅ΠΊΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π·Π½Π°ΡΠΈΠΌΠ°Ρ Π΄ΠΎΠ»Ρ Π·Π°Π΄Π°Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ°Π΅ΡΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠ°, Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ΅.
ΠΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ. ΠΡΠ»ΠΈ ΡΠ°Π½Π΅Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ, ΡΠΎ ΡΡΠΎΠΈΡ Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡ ΠΎΠ± Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π½ΠΈΡ . ΠΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΡΠ΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡΡ. ΠΠ½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΈΡΡ ΡΡΠΈ Π΄Π²Π΅: issoft.by ΠΈ geekbrains.ru.
Π ΡΡΠ°ΡΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°ΠΊΡΡ, Π½ΠΎ Π² ΡΡΠΎΠΌ Π°Π±Π·Π°ΡΠ΅ ΡΠ°Π·Π±Π°Π²Π»Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π² ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·Π΅ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ agile. ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Ρ Π°ΡΡ, Π° Π²ΡΠΎΡΠΎΠΉ Π²ΠΎΡΡ Π²Π°Π»ΡΡΡ π ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈ Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π΅Π½, Π΅ΡΠ»ΠΈ ΠΎΠ±ΠΎΠ³Π°ΡΠΈΡΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΏΠ΅. Π, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΡΠΏΠ½ΡΠ΅ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΊΠΈ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π°ΡΠΎΠΉ Π²ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π² ΡΠΈΠ»Ρ, Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΎΡΠ΅ ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄Π΅. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π±ΡΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π΄Π΅Π»Π°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π³ΠΈΠ±ΠΊΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² Π½ΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΠ°ΡΡΠΈΠ΅.
Π Π΅Π»ΠΈΠ·Ρ
ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡΠΌΠΈ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ° ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠ΅Π»ΠΈΠ·Ρ β ΠΏΡΠΈΡΡΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π΄Π°ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΠ. Π Π΅Π»ΠΈΠ· ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΊΡΠΎΡΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.
Π ΡΠ»Π΅ΡΡΠ°Π΅ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²: ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° Π΄Π°Ρ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠΏΡΡΠ½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΡΠ΄Π²ΠΈΠ½ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. Π’Π°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ. Π‘ΡΠ΅Π΄ΠΈ ΠΌΠΈΠ½ΡΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄Π΅ΡΠΆΠ°ΡΡ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ: ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ, ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ (ΠΈ Π΅ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΠΉ).
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π² GitLab Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ½ΠΎΡΡΡ β Release, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² Π² agile-ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Milestone’Ρ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΠ·ΡΡΠΈΡΡ ΠΎΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠ΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΡΠ΅Π²Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠ½Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ «Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅» ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π ΠΏΠ»Π°Π½Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΈ:
ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡΡ Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ «Π½Π° Π±Π΅ΡΠ΅Π³Ρ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°ΡΡ Π·ΡΠ΅Π»ΡΡ ΠΈΠ»ΠΈ Π»Π΅Π³Π°ΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Ρ Π½ΡΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΄Π½ΠΎ (ΠΈ Π½ΡΠΆΠ½ΠΎ Π»ΠΈ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ»ΡΡ Π±Π΅Π· Π½Π΅Π΅?). Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ β ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ½ΠΎΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·Ρ.
Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅ΡΡΠΈ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Π² git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² MarkDown), Π² Π·Π°Π΄Π°ΡΠ°Ρ Π±Π°Π³ΡΡΠ΅ΠΊΠ΅ΡΠ°/agile-Π΄ΠΎΡΠΊΠΈ (GitLab, Jira, Redmine), Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρiki (GitLab, Confluence), Π² Word-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ (Π² Ρ.Ρ. Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sharepoint) ΠΈ Ρ.Π΄. ΠΠ°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ· ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅?
Π ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΆΠ΅ Π½Π΅Π»ΡΠ·Ρ Π½Π°Π·Π²Π°ΡΡ Ρ Π°ΠΎΡΠΈΡΠ½ΡΠΌ: Π²Π΅Π΄Π΅ΡΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π΅ΡΡΡ ΠΊΡΠ»ΡΡΡΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΡΠ΅Π»Π΅Π²ΡΠ΅ ΡΡΠ΅Π΄Ρ, Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π»ΠΎΠ³ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²Π°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ ΠΊΡΠ΄Π° ΡΠ°ΡΡΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π΄Π°Π»Π΅Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΈΡΠΌΠΎΡΡΠ΅ΡΡΡΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΌ ΡΠ΅ΠΌΠ°ΠΌ: CI/CD & DevOps ΠΈ Docker & K8s.
CI/CD & DevOps
ΠΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, CI/CD (Continuous Integration, Continuous Delivery β Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°) ΡΡΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ Π½ΠΎΠ²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠΎΡΠΎΠ½Π°ΠΌ (ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ, ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ). ΠΡΠΈΠ½ΡΠΈΠΏ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ΅ΠΌ-ΡΠΎ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ: ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠ±ΡΠ΅Π΄Π΅Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ, ΡΠ΅Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ β Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ°ΠΆΠ½ΠΎ: ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ CI/CD Π² ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·Π΅ Π½Π΅ Π²ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΅Π±Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π½Π΅Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡΡ Π±ΠΈΠ·Π½Π΅ΡΠ°, ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠ², Π½Π΅Π·ΡΠ΅Π»ΠΎΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠΈΠΉ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡΡΠ΅Ρ (ΠΏΡΡΡΡ Π΄Π°ΠΆΠ΅ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΡΠΎΡΠΈΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ) ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΏΠΎΠ²ΠΎΠ΄ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ².
DevOps (Development Operation) β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΡΠ΅Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΠ ΠΈ ΡΡΠ»ΡΠ³.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ CI/CI Π½Π°Π·ΡΠ²Π°ΡΡ DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ DevOps’Π°ΠΌΠΈ.
Docker & K8s
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (Docker Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ) ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ΅ΠΌΠ°, ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΠΏΠΎΠΊΡΡΡΡ Π΅Ρ Π² Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ ΠΈ ΠΏΡΠΈΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ (Π½Π° Π₯Π°Π±ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΏΠΎ ΡΠ΅ΠΌΠ΅).
ΠΡΠ°ΡΠΊΠ°Ρ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ°
ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ Π±Π΅Π· Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ² Π½Π° Π³ΠΎΡΡΠ΅Π²ΡΡ ΠΠ‘, ΡΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΡ, ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΠ΅ΠΉ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Ρ ΠΎΡΡΠΎΠ²ΠΎΠΉ ΠΠ‘ Π±Π΅Π· ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ°ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ ΡΠΎ ΡΡΠ°ΡΡΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π°.
Π‘Π°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠ²ΠΎΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π°ΡΠΈΡΠ»ΠΈ ΠΎΠ½ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π·ΡΠ΅Π»ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Kubernetes. Π ΠΏΠ»Π°Π½Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (aka ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ²) Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠΎΠ². ΠΠ°, ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°ΡΡΠΎΠ½ΡΡΡ ΡΠ΅ΠΌΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π΄ΠΎΠΊΠ΅ΡΠ° ΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ:
ΠΠΎΠ½ΠΎΠ»ΠΈΡ | ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ |
---|---|
Π‘ΠΎΠ·Π΄Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ/ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° | ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ/ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° |
ΠΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΎΠ΄ΠΈΠ½ Π½Π°Π±ΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ | ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π΄Π°ΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΠ‘ |
ΠΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ°ΡΡΠΎ stateless, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ |
ΠΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ°Π½Π΄Π΅ΠΌ Docker ΠΈ Kubernetes. Docker ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ:
Kubernetes Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ:
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΡΠ΄Ρ ΡΠ°Π΄ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ.