ΠΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ jenkins ΠΊ bitbucket
Jenkins. Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Bitbucket
Π ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΏΠΎΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Jenkins Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Linux-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Debian. Π ΡΡΠΎΠΌ ΠΆΠ΅ Ρ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡΠΈΡΡ Jenkins Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ (pushβΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²) Π² Π²Π΅ΡΠΊΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Bitbucket.
ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΠ²ΡΠ·ΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π΄Π²Π° ΡΡΠ°ΠΏΠ°: ΡΠ½Π°ΡΠ°Π»Π° ΠΌΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΡΠΈΠ³Π³Π΅Ρ, Π° ΠΏΠΎΡΠΎΠΌ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Ρ ΡΠΊ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΡ Π² Jenkins
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π² ΠΏΠ°Π½Π΅Π»ΠΈ Β«ConfigureΒ». ΠΠ΄Π΅ΡΡ, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Build TriggersΒ» Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΡΡΠΌ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π³Π°Π»ΠΊΠΈ Β«Trigger builds remotely (e.g., from scripts)Β» ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠΊΠ΅Π½Π°. Π’ΠΎΠΊΠ΅Π½ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ Π±ΠΎΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ Π°Π΄ΡΠ΅ΡΠ° Π½Π΅ Π±ΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΡΡΠΎΠΈΡΡ Π²Π°ΠΌ DoS. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ. ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΡΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ. ΠΠ°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Ρ ΡΠΊΠ° Π² Bitbucket
ΠΠ°ΠΉΠ΄ΡΠΌ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π» Β«HooksΒ», Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ Ρ ΡΠΊ ΡΠΈΠΏΠ° Β«JenkinsΒ». ΠΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π½Π΅Ρ Β«ΠΎΠΊΠΎΡΠΊΠΎΒ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅:
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Ρ ΡΠΊ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΡΠ·ΠΊΡ Π² Π΄Π΅Π»Π΅.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ
ΠΠΏΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π½Π° Π·Π°ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΎΠΏΡΠΈΡ Β«Poll SCMΒ» Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Build TriggersΒ» Π·Π°Π΄Π°Π½ΠΈΡ Jenkins. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CRON ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π²ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
BitBucket Plugin
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Ρ ΡΠΊΠΈ Ρ POST-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π½Π° Bitbucket. ΠΠ³ΠΎ ΠΌΠΈΠ½ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½ ΠΈ, Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. Π₯ΠΎΡΡ, Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»ΡΡΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡ ΡΠ°ΠΊΠΈΠΌ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Jenkins ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Bitbucket. ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ΄Π°Π»ΡΠ½Π½ΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ ΠΈ Π²Ρ Π±Π΅Π· ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΡΡΠ΄Π° ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ Π½Π° Github ΠΈΠ»ΠΈ ΠΆΠ΅ Π²ΠΎΠ²ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Ρ.
OpenShift + Jenkins + Bitbucket, Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ OpenShift Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ PHP ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΡΠ΄Ρ OpenShift online, Π½ΠΎ Π²ΡΡ ΡΡΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΈ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΈΠ»ΠΈ Π² VirtualBox (Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²Π°Ρ ΡΠ±ΠΎΡΠΊΠ°). Git-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ Bitbucket.
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎ ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π² ΡΠ²ΡΠ·ΠΊΠ΅. Π ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π² Π΄ΠΎΠΌΠ΅Π½Π΅ rhcloud.com, Π²ΠΈΠ΄Π° application-username.rhcloud.com. ΠΡΠΎΠ³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ². Π₯ΠΎΡΡ Ρ ΠΈ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π» PHP-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π½ΠΎ OpenShift ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΠΊΠΈΠΌ-ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ². Π Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΠΌΠ΅ΡΡΠΎ Bitbucket-Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GitHub ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ. ΠΠ½ΡΡΡΠΈ ΠΎΠ±Π»Π°ΠΊΠ° ΠΊΡΡΡΡΡΡΡ docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ OpenShift Client Tools, Π½ΠΎ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π OpenShift-Π΅ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ PHP 5.4. Π‘ΡΡΠ°Π½Π½ΠΎ, ΡΡΠΎ ΡΡΠ°ΡΠΎΠ²Π°Ρ, ΠΏΡΠΈ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ OpenShift-Π° Π½Π° ΡΠ²ΠΎΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ²Π΅ΠΆΠ΅Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ².
ΠΠΌΡ Ρ Π½Π΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ php β ΠΎΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ URL ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ.
Π ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΠΆΠ΅Π½ΠΊΠΈΠ½ΡΠΎΠΌ.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΠΆΠ΅Π½ΠΊΠΈΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΡ php-build Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΈ Π±ΡΠ΄Π΅ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ. ΠΠ° ΠΌΠ°ΡΡΠ΅Ρ-Π½ΠΎΠ΄Π΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠ² = 0), Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, Π½ΠΎ Π²ΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ½Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ β Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΡΡΠΈΠ»ΠΈΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠΊΠΎΠΏΠ°Π²ΡΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΡΡΠΊΠ°ΠΌΠΈ (ΠΈ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ).
ΠΠ΄ΡΠΌ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ php-build Π² ΠΠΆΠ΅Π½ΠΊΠΈΠ½ΡΠ΅. ΠΠ½Π° ΡΠΆΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΠΏΠΎΠ΄ ΡΠ±ΠΎΡΠΊΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅-ΡΠ±ΠΎΡΡΠΈΠΊΠ΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ php, Π½ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ bitbucket. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ git Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΈ, Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ Π½ΠΈΠΌ.
ΠΠ΄Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ bitbucket-Π°.
ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΠΏΠΎ ssh ΠΊΠ»ΡΡΠ°ΠΌ, Π½ΠΎ ΡΡΡ ΠΌΠ΅ΡΠ°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° OpenShift, ΠΈ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΊΠ»ΡΡΠΈ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏ ΠΊ Ρ ΠΎΡΡΡ bitbucket-Π°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π΄ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠΊΠΎΠ²ΡΡΡΠ² Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° jenkins.
ΠΠΈΠΆΠ΅, Π² ΠΏΠΎΠ»Π΅ Β«Branches to buildΒ», ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ. ΠΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²Π½ΠΎ ΠΌΠ°ΡΡΠ΅ΡΠ° (*/master).
Π ΠΏΠΎΠ»ΡΡ Β«ΡΡΠΈΠ³Π³Π΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈΒ» Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠΏΡΠΈΠΈ ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎ webhook-Π°ΠΌ; ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ; ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ git Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ, ΡΠΎΠ±ΠΈΡΠ°ΡΡ; ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π΄Π²Π΅ ΠΎΠΏΡΠΈΠΈ ΠΈ, ΠΊΡΠΎΠΌΠ΅ webhook-Π°, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΠΌΠΈΠ½ΡΡ.
Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π‘Π±ΠΎΡΠΊΠ° β Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ shell ΡΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΡΠ°Π±Π»ΠΎΠ½ ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ php.
ΠΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Β« # Run tests here Β» Π½Π°Π΄ΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ, Π»ΠΈΠ±ΠΎ ΠΈΠ΄ΡΠΌ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ, Π»ΠΈΠ±ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ.
ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅βΡΠ±ΠΎΡΡΠΈΠΊΠ΅ Π² Π΅Π³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π΅Π³ΠΎ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π»ΠΎΠΆΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎΠΎΠ±ΡΠ΅, ΠΏΡΠΈ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Jenkins-Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅. Π Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ OpenShift ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ rhc ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΠΆΠ΅Π½ΠΊΠΈΠ½ΡΠ° (Ρ ΠΎΠ·ΡΠΉΠΊΠ΅ Π½Π° Π·Π°ΠΌΠ΅ΡΠΊΡ).
Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ±ΠΎΡΠΊΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°-ΡΠ±ΠΎΡΡΠΈΠΊΠ° Π² ΠΎΠ±Π»Π°ΠΊΠ΅ OpenShift Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ phpbldr, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π·Π°Π΄Π°ΡΠ°. Π’ΡΡ Π΅ΡΡΡ Π½ΡΠ°Π½Ρ: ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ ΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π°, Π·Π°Π΄Π°ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π΅ Π΄ΠΎΠΆΠ΄Π°Π²ΡΠΈΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ°. ΠΠΎ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ Π΅ΡΡ ΡΠ°Π·, ΡΠΎ Π½Π° Π³ΠΎΡΠΎΠ²ΠΎΠΌ ΡΠ±ΠΎΡΡΠΈΠΊΠ΅ Π²ΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΠΉΠ΄ΡΡ. Π ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«Builder TimeoutΒ», Π½ΠΎ ΠΎΠ½ ΠΏΡΠΎ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π° Π½Π΅ ΠΏΡΠΎ ΡΡΠΎ. ΠΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠΏΡΡΠΎΠΊ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ.
Π ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΠΆΠ΅Π½ΠΊΠΈΠ½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 15 ΠΌΠΈΠ½ΡΡ):
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π² 60 ΠΌΠΈΠ½ΡΡ ΠΏΡΠΈΠ±ΠΈΡΠΎ Π³Π²ΠΎΠ·Π΄ΡΠΌΠΈ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ-Π±Ρ Π² ΠΎΠ±Π»Π°ΠΊΠ΅, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ±ΠΎΡΠΊΠΈ, Π±ΡΠ» ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ ΡΠ»ΠΎΡ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ webhook-Π°ΠΌ, Π½ΡΠΆΠ½ΠΎ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² bitbucket-Π΅ Π²ΠΊΠ»ΡΡΠΈΡΡ:
Settings β webhooks β add webhook ΠΈ ΡΠΊΠ°Π·Π°ΡΡ URL Jenkins-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² Π²ΠΈΠ΄Π΅:
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉ Π»ΡΠ½ΠΎΠΏΠ°ΡΠΊ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π Π΅ΡΠ»ΠΈ Π²ΡΡ ΡΡΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π½Π° ΡΠ²ΠΎΠΈΡ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ , ΡΠΎ ΠΎΠ½ Π΅ΡΡ ΠΈ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π° Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌΠΈ.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Continuous Integration Π΄Π»Ρ Jenkins ΠΈ Bitbucket Ρ werf
Π£ΡΠΈΠ»ΠΈΡΠ° werf ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΅Ρ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π»ΡΠ±ΡΠΌΠΈ CI/CD-ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΡΠ°ΠΉΡΠ΅ Π² ΡΠΏΠΈΠ»ΠΎΠ³Π΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ, Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ β ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ CI Π² Jenkins ΠΈ Bitbucket.
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Jenkins
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄ΡΠΌΠ°Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠ°ΡΡΠ΅ Π±ΡΠ΄ΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ:
ΠΡΠ°ΠΊ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ: Manage Jenkins β Configure System β Global Pipeline Libraries.
ΠΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ, Π²Π΅ΡΠ²Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Jenkins Π±ΡΠ΄Π΅Ρ Π·Π°Π±ΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π° Π² Source Code Management ΡΠΊΠ°Π·Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ β SSH-ΠΊΠ»ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ReadOnly).
Π‘ΡΡΡΠΊΡΡΡΠ° Shared Library
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π‘ΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ° ΠΈ ΡΠΎΡΡΠΎΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΈΠ· ΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ:
Π ΡΠΎΠΌΡ ΠΆΠ΅, Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ, ΡΡΠΎΠ±Ρ Π²Π΅ΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π±ΡΠ» ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ Π²Π½ΡΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π° Π² Jenkinsfile ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π΅ΠΏΠ»ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² 99,9% ΡΠ»ΡΡΠ°Π΅Π² Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ.
Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ
ΠΡΠ°ΠΊ, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ 2 ΠΌΠ΅ΡΠΎΠ΄Π°.
Π’ΡΠΈΠ³Π³Π΅ΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ ΠΈΠ· Bitbucket
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Jenkins ΡΠ°ΠΌ Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Bitbucket. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ:
Π’Π°ΠΊΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ, Ρ.ΠΊ. Jenkins Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ Π²Π΅ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· API. ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠ°ΠΊ Π΄Π»Ρ cloud-Π²Π΅ΡΡΠΈΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Bitbucket-ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Jenkins:
ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ source Π² Multibranch Pipeline, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ credentials (Bitbucket ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΈΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ), Jenkins Π½Π°ΠΉΠ΄Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.
Π ΡΠ°ΠΌΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈΡΡ Π½Π° ΠΏΠΎΠΈΡΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΠΎΠΊ, Ρ.ΠΊ. Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅ΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π° Jenkins ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π΄ΠΎΠ»Π³ΠΎ Β«Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡΒ», Π΅ΡΠ»ΠΈ Π½Π°ΡΠ½Π΅Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π²Π΅ΡΠΊΡ. ΠΡΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Ρ.ΠΊ. ΡΠ΅Π³ΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΠΏΠΎΠ΄ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Java Regular Expressions β Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠ΅, ΡΠ°ΠΊ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅Ρ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΏΡΡΡ: Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ΅Π³ΠΈ ΠΎΡ Π²Π΅ΡΠΎΠΊ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Source Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΎΠ².
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Jenkins Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° ΡΠ°ΠΌ ΡΡ ΠΎΠ΄ΠΈΡ Π² Bitbucket ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ webhook:
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ Bitbucket Π±ΡΠ΄Π΅Ρ ΡΡΠΈΠ³Π³Π΅ΡΠΈΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ (Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Ρ Π²Π΅ΡΠΎΠΊ ΠΈ ΡΠ΅Π³ΠΎΠ², ΡΡΠΎ ΠΌΡ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π»ΠΈ) ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΡΠ»Π°ΡΡ ΡΡΠ°ΡΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² Bitbucket Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠ°:
Π‘ΡΠ°ΡΡΡΡ β ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»ΡΠ½ΡΠ΅: ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΈΠ΄ΡΠ²Π°ΡΡ Π² Π½ΡΠΆΠ½ΡΠΉ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π² Jenkins
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΡΠΈΡ β ΠΏΡΠΎ Jenkins, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π° nginx proxy ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ location. Π’ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ location, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°ΠΌ Π·Π½Π°Π», ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΅Π³ΠΎ endpoint:
ΠΠ΅Π· ΡΡΠΎΠ³ΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° pipeline Π² Bitbucket Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ CI Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Jenkins, Bitbucket ΠΈ werf. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΎΠ±ΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°Π½Π°ΡΠ΅Π΅ΠΉ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ CI Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ werf.
ΠΠ°ΠΆΠ½Π°Ρ Π΄Π΅ΡΠ°Π»Ρ: Π΄Π°ΠΆΠ΅ ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ ΡΡΠ°ΡΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΎΡΠ΄Π°Π΅ΡΡΡ Π² Bitbucket, Π½Π°ΠΌ Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Β«Ρ ΠΎΠ΄ΠΈΡΡΒ» Π² Jenkins, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΄Π°ΡΠΈ. ΠΡΠΊΠ°Ρ ΠΏΠΎ ΡΠ΅Π³Ρ ΡΠ΅ΡΠ΅Π· webhook, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·: Π»ΡΠ±ΠΎΠΉ ΠΎΡΠΊΠ°Ρ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ΅Π³ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ Π²ΡΡΡΠ½ΡΡ ΠΈΠ· Jenkins.
Π£ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ»ΡΡ β ΡΡΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡΡ. ΠΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π² CI Π²ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. Π₯ΠΎΡΡ ΠΈ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΡΡ Π²ΡΡΠ΅, ΡΠ΅ΠΌ Ρ Π΄ΡΡΠ³ΠΈΡ CI-ΡΠΈΡΡΠ΅ΠΌ.
ΠΠΏΠΈΠ»ΠΎΠ³: ΠΏΡΠΎ werf ΠΈ CI/CD Π² ΡΠ΅Π»ΠΎΠΌ
ΠΠ±ΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ werf Ρ CI/CD-ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΎΠΏΠΈΡΠ°Π½ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠΊΡΠ°ΡΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ Π»ΡΠ±ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠ°Π³ΠΈ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Bitbucket Server Integration
We’re collecting feedback at issues.jenkins-ci.org. Head there to see what issues have been created, or create a new issue using the component atlassian-bitbucket-server-integration-plugin.
The Bitbucket Server integration plugin is the easiest way to connect Jenkins to Bitbucket Server. With a few simple steps you can configure it to:
The plugin streamlines the entire configuration process and removes the need for multiple plugins to achieve the same workflow.
Plugin featuresRequirements
Note: Bitbucket Server 5.6 to 7.3 are also supported, but they’re not recommended. This is because some plugin features are not available when using these versions. Instead, we recommend using Bitbucket Server 7.4+. With 7.0+ you can make use of pull request triggers for jobs. With 7.4+ you can set up an Application Link to have access to all plugin features.
In this documentInstall the plugin
To install the plugin:
The status will change to Success when the plugin is installed.
Configure the plugin
To configure the plugin:
Add Bitbucket Server instance details
Bitbucket Server instances are added and configured at the system level. Once theyβre added users can select them from the SCM when creating a Jenkins job. You must add at least one Bitbucket Server instance to Jenkins.
When adding a Bitbucket Server instance you must add at least one Bitbucket Server personal access token that is configured with project admin permissions. Doing this allows users to automatically set up build triggers when creating a Jenkins job.
Watch our video to find out how to do this, or see below for written instructions.
To add a Bitbucket Server instance:
Create an Application Link
Creating an Application Link to Jenkins enables additional functionality in Bitbucket Server. Watch our video to find out how to do this, or see below for written instructions. This step is only relevant if youβre on Bitbucket 7.4+.
1. Register Bitbucket Server as a consumer
There are two parts to creating an Application Link. The first is done in Jenkins and involves registering Bitbucket Server as a consumer.
To register a consumer:
After you save, youβll be taken to a page called Application Link details. Itβs a good idea to keep this page open when moving onto part 2 so you can copy the details across to Bitbucket Server.
You can also access the Application Link details page by going to Jenkins > Manage Jenkins > Manage Bitbucket Server consumers, and selecting the Application Link details for the consumer.
2. Create an Application Link to Jenkins
The second part is done in Bitbucket Server and involves creating an Application Link to Jenkins. Many of the details you need to do this are on the Application Link details page mentioned in step 1.
To create the Application Link:
After a moment, your Jenkins instance will appear in the list of linked applications.
Use the pluginSelect a Bitbucket Server instance when creating a Freestyle Job
Once youβve added a Bitbucket Server instance to Jenkins, users will be able to select it when creating a job. This will make it easier for them to select the repo to be cloned. Theyβll also be able to select the Bitbucket Server build trigger to automatically create a webhook.
To select a Bitbucket Server instance when creating a Freestyle job:
Note: A Jenkinsfile is required when creating a Pipeline or Multibranch Pipeline job. Other pipeline scripting methods are not yet supported.
Create a Multibranch Pipeline
To use a different Jenkinsfile for different branches of your Bitbucket Server project, you need to create a Multibranch Pipeline and add the Jenkinsfile to the repo of each branch you want to build. Jenkins will then automatically find, manage, and execute these Pipelines.
Watch our video to find out how to do this, or read more about Multibranch Pipelines on Jenkins.io.
Additional documentationContribute to the pluginPlugin development
Plugin development
This plugin uses Apache Maven for development and releases. It also uses Groovy as part of the presentation layer for the plugin. To build Groovy files you need to install the SDK.
Checkstyle
Alternatively, you can link to the pre-commit hook directly:
Building
To build the plugin run:
Running Jenkins with the plugin enabledDebugging
To start Jenkins (and Maven) in debug mode run:
You can then run Bitbucket Server using AMPS with the following command:
This will start Bitbucket Server on http://localhost:7990/bitbucket.
Running tests
ΠΠΎΡΠΌΠΎΠ½Π°Π²Ρ Π² Π»ΠΎΠ΄ΠΊΠ΅
ΠΠΈΡΠ½ΡΠΉ Π±Π»ΠΎΠ³ ΠΠ»Π΅Π³Π° ΠΠ±ΡΠ°ΠΆΠ°Π΅Π²Π° ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ ΠΈ ΠΎ ΠΆΠΈΠ·Π½ΠΈ
Π ΡΠ±ΡΠΈΠΊΠΈ
ΠΠ±Π»Π°ΠΊΠΎ ΠΌΠ΅ΡΠΎΠΊ
Π‘Π²Π΅ΠΆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
livelib.ru
ΠΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ!
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ jenkins + bitbucket + slack Π΄Π»Ρ php ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π£ΠΊΠ°Π·Π°Π½Π½Π°Ρ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡΠ²ΡΠ·ΠΊΠ° Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ deploy ΠΏΡΠΎΠ΅ΠΊΡΠ°, Ρ.ΠΊ. ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. ΠΡΠ° ΡΠ²ΡΠ·ΠΊΠ° ΡΠΊΠΎΡΠ΅Π΅ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΡΡΠ΅ΠΊΠΈΠ½Π³Π° ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°. Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Slack, ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΠΊΠΎΠ³Π΄Π° Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ².
ΠΠ΄Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Mercirial (hg). Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ 3 Π²Π΅ΡΠΊΠΈ β dev, staging, stable. ΠΠ° ΠΊΠ°ΠΆΠ΄ΡΡ Π²Π΅ΡΠΊΡ Π½Π°ΡΡΡΠΎΠ΅Π½ ΡΠ²ΠΎΠΉ Ρ ΠΎΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠ°Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π΄Π΅ΠΏΠ»ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΈΠ»ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ± ΡΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΡΡ β http://guides.beanstalkapp.com/deployments/best-practices.html
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΌΡΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎ Π² dev Π΄Π΅ΠΏΠ»ΠΎΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π² staging ΡΠ΅, ΡΡΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΎΡΠ½ΠΎΡΠΈΠ»ΡΠ½ΠΎ stable. ΠΡ Π° stable ΡΡΠΎ ΡΠΎ, ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½. Π£ΡΠΈΡΡΠ²Π°Ρ ΡΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ Π°Π²ΡΠΎΠ΄Π΅ΠΏΠ»ΠΎΠΉ Ρ jenkins ΡΡΠΎΠΈΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° staging. ΠΠ»Ρ dev ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, Ρ.ΠΊ. ΠΏΡΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΡΡΠΊΠ°ΠΌΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ Π½Π° dev Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π° Π½Π° staging, Π² ΠΏΡΠ΅Π΄ΡΠ΅Π»ΠΈΠ·Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΡΠΆΠ΅ Π½Π΅Ρ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Jenkins ΠΈ ant
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΠΌ jenkins ΠΈ ant. ΠΠΎΡ Π²Π΅ΡΡΠΈΡ jekins 2.7. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ ant Π±ΡΠ΄ΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠ°Π³ΠΈ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ build ΠΏΡΠΎΡΠ΅Π» ΡΡΠΏΠ΅Π½ΠΎ.
ΠΠ°Π»ΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ slack, ant ΠΈ bitbucket. Π£ ΠΌΠ΅Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ: ant 1.2, bitbucket 1.1.0, cloverphp 0.4, cvs, git 2.3.5, git-client 1.17.1, junit 1.6, maven-plugin 2.10, mercurial 1.54, php 1.0, pmd 3.41, slack 1.8, xunit 1.96
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΏΠΈΡΠΎΠΊ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΡΡ Ρ ΠΎΡΡΠ°Π²ΠΈΠ» ΡΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π»Ρ ΠΌΠ΅Π½Ρ.
ΠΠ°Π»Π΅Π΅ Π΄Π»Ρ php ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ΄Π΅Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Π° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠ»ΠΊΠ° Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ β http://jenkins-php.org/.
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π½Π° ΡΠ°Π³Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
php ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄Π»Ρ jenkins ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ. Π£ ΡΠ΅Π±Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ ant Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ build.xml Ρ ΠΎΡΡΠ°Π²ΠΈΠ» ΡΠΎΠ»ΡΠΊΠΎ lint ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ phpunit, ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ±ΡΠ°Π½ΠΎ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³Π° ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΌ.
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ-ΡΠ°Π±Π»ΠΎΠ½ Π² jenkins ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΡΡΡ. Π ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΎΠ΅ΠΊΡ php-template ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ jenkins.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π² jenkins ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΉ php ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΡΡΠ΅ΠΌ Π²ΡΠ±ΠΎΡΠ° βcopy exiting projectβ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΌ php-template. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°ΠΉΡΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°ΠΌ Π»ΠΈΡΠ½Π΅Π΅ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ.
Π Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ jenkins Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ½ΡΡΠ°Π»ΡΡΠΈΠΉ Π΄Π»Ρ ant ΠΈ mercurial (ΠΈΠ»ΠΈ git). ΠΠ½ΠΈ ΡΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΡΡΠΈ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌΡΡ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ. Π ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ slaΡk ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°, Π±Π΅Π· slack.com) ΠΈ Π°Π΄ΡΠ΅Ρ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ jenkins Π½Π° Π²Π½Π΅ΡΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ip/8080.
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎ ΠΏΠ΅ΡΠ²ΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°Π½ΠΎΡΡΡ, Π΄Π°Π»Π΅Π΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π³Π°Π»ΠΎΡΠΊΠΈ Π½Π° Jenkinsβ own user database ΠΈ Allow users to sign up, ΠΈ Π½ΠΈΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Anyone can do anything ΠΈΠ»ΠΈ Logged-in users can do anything. ΠΠΎΠ½Π΅ΡΠ½ΠΎ Π΅ΡΠ»ΠΈ Π²Π΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° Π²Π½Π΅ΡΠΊΡ, ΡΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΉ ip ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Ρ.ΠΊ. ΠΈΠΌΠ΅Π½Π½ΠΎ api ΡΠΎΠΊΠ΅Π½ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ bitbucket Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΈΠ»Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ΅ΡΠ΅ΠΉΠ΄Ρ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ People ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π½Π°ΠΆΠ°ΡΡ Show api token. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΊΡΠ΄Π°-ΡΠΎ. Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠ΅
user β abrakadabrausertoken
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Jenkins
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Jenkins, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π½ ΠΊΠ°ΠΊ ΠΊΠΎΠΏΠΈΡ ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½Π° php-template, Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: