ΠΠΎΠ±ΡΡ Π²Π΅ΡΠ΅Ρ, Π₯Π°Π±Ρ!
ΠΠ½Π΅Ρ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Ρ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅, ΠΏΠΎ ΠΊΠΎΠΈΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ Π·Π°Π΄Π°ΡΠ° Π² Jenkins Π½Π°ΠΉ-ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π°ΡΠΈΠ½.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π’Π°ΠΊΠ°Π²Π° Π°Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° ΠΊΠ°ΡΠΎ DevOps ΠΎΡΠ΄Π°Π²Π½Π° Π½Π΅ Π΅ Π½Π΅ΡΠΎ Π½ΠΎΠ²ΠΎ Π·Π° ΠΠ’ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°. ΠΠ° ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΡΡΠ°Π·Π°ΡΠ° Β«ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° DevOpsΒ» Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΡΠΎΠ½, ΠΏΡΠΈ Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΊΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π² ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈ ΡΠ΅ΡΡΠ²Π°Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π²ΡΠΈΡΠΊΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π°Π±ΡΡΡΠ°Ρ ΠΈΡΠ°ΠΌΠ΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ).
Π ΡΠ°ΠΊΠ°, ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ ΠΏΠΎΡΡΡΠΊΠ° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°ΠΊΡΠ² ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΡΠΎΠ½, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ Π΅Π΄Π½ΠΎ ΡΡΠ°ΠΊΠ²Π°Π½Π΅. ΠΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ°: ΠΎΡ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΎΡ Π·Π° Π½ΡΠΊΠΎΠΉ ΠΎΡ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΡΡΠΈΡΠ΅ Π΄ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΡΠ΅Π»ΡΠ° Π½Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° β Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π°ΠΉ-ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ.
Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Jenkins.

ΠΠ°Π΄Π°ΡΠ°
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΄ΠΎΠ±Π½Π° Jenkins ΡΠ°Π±ΠΎΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΈ (ΠΈΠ»ΠΈ) ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·Π±ΡΠ°Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π²Π΅ΡΡΠΈΡ.

ΠΡ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ
Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ.
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅
Π Π½Π°ΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΡΠΏΠ²Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- URL Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Ρ ΠΊΠΎΠ΄Π° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΠΈ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ°.
- ID Π½Π° ΠΊΠΎΠΌΠΈΡΠ°, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ.
AS IS
ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Ρ ΡΠΈΠΏ String.

Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΠ΅ ΡΡΡΠ±Π²Π° ΡΡΡΠ½ΠΎ Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ ΠΏΡΡΡ Π΄ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ id Π½Π° ΠΊΠΎΠΌΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ, ΠΏΡΠΈΠ·Π½Π°ΠΉΡΠ΅, Π½Π΅ Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ.

AS TO BE
Π ΡΠ΅Π³Π° Π΄Π° ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄ΡΡΠ³ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π·Π° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½Π΅Π³ΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°.
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΡΠ²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ ΡΠΈΠΏ Choice Parameter, Π²ΡΠΎΡΠΈ β Active Choices Reactive Reference Parameter. Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Ρ ΡΠΈΠΏ Choice Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΡΡΠ½ΠΎ Π² ΠΏΠΎΠ»Π΅ΡΠΎ Choices ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠ΅, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ.

ΠΠΊΠΎ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Ρ Π°ΡΠ΅ΡΠ° Π½Π° Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡΡΠ°, Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ Π² Jenkins, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π· ΠΊΠΎΠ΄ (Configuration as code), Ρ.Π΅. Π½ΡΠΌΠ° Π΄Π° ΡΡΡΠ±Π²Π° ΡΡΡΠ½ΠΎ Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈΡΠ΅ ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ (Π½Π°ΡΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΡΠΏΠΈΡΡΠΊ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈΡΠ΅ ΠΎΡ SCM ΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ).
Π‘ΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π²ΡΠΎΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ ΡΠ΅ Π·Π°ΠΏΡΠ»Π²Π°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ΅ ΠΏΡΡΠ²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (test1 ΠΈΠ»ΠΈ test2), ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠΌΠ° ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΏΠΈΡΡΠΊ Ρ ΠΊΠΎΠΌΠΈΡΠΈ.
Active Choices Reactive Reference Parameter ΠΈΠΌΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ° Π·Π° ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅:
- Name β ΠΈΠΌΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°.
- Script β ΠΊΠΎΠ΄ΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΠΎΡ ΠΏΠΎΠ»Π΅ΡΠΎ Referenced parameter Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π° (Π² Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ test1 ΠΈ test2).
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ β ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°.
- Choice Type β ΡΠΈΠΏΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°, Π²ΡΡΠ½Π°Ρ ΠΎΡ ΡΠΊΡΠΈΠΏΡΠ° (Π² Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π²ΡΡΡΠ°ΠΌΠ΅ html ΠΊΠΎΠ΄).
- Referenced parameter β ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°, ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ ΠΎΡ ΡΠ΅ΠΊΡΠΈΡΡΠ° Script.

ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅ Π² ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° Π²ΠΈΠ΄Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Groovy Script ΠΈΠ»ΠΈ Scriptler Script.
ΠΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΡΠ²ΠΎΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Scriptler Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠ»ΡΠ³ΠΈΠ½, ΠΊΠΎΠΉΡΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π²Π΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΎΡ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π² Π΄ΡΡΠ³ΠΈ Π·Π°Π΄Π°ΡΠΈ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅.
Groovy ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΈΡΠΈ ΠΎΡ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
AUTH = "Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Π° Π² Base64"
GIT_URL = "url Π΄ΠΎ Π²Π°ΡΠ°ΡΠ° SCM (https://bitbucket.org/)"
PROJECT_NAME = "ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ½Π°ΡΠ° ΠΎΠ±Π»Π°ΡΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈΡΠ΅"
def htmlBuild() {
html = """
<html>
<head>
<meta charset="windows-1251">
<style type="text/css">
div.grayTable {
text-align: left;
border-collapse: collapse;
}
.divTable.grayTable .divTableCell, .divTable.grayTable .divTableHead {
padding: 0px 3px;
}
.divTable.grayTable .divTableBody .divTableCell {
font-size: 13px;
}
</style>
</head>
<body>
"""
def commitOptions = ""
getCommitsForMicroservice(MICROSERVICE_NAME).each {
commitOptions += "<option style='font-style: italic' value='COMMIT=${it.getKey()}'>${it}</option>"
}
html += """<p style="display: inline-block;">
<select id="commit_id" size="1" name="value">
${commitOptions}
</select></p></div>"""
html += """
</div>
</div>
</div>
</body>
</html>
"""
return html
}
def getCommitsForMicroservice(microserviceRepo) {
def commits = [:]
def endpoint = GIT_URL + "\/rest\/api\/1.0\/projects\/${PROJECT_NAME}\/repos\/${microserviceRepo}\/commits"
def conn = new URL(endpoint).openConnection()
conn.setRequestProperty("Authorization", "Basic ${AUTH}")
def response = new groovy.json.JsonSlurper().parseText(conn.content.text)
response.values.each {
commits.put(it.displayId, it.message)
}
return commits
}
return htmlBuild()ΠΠΊΠΎ Π½Π΅ Π½Π°Π²Π»ΠΈΠ·Π°ΠΌΠ΅ Π² Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ, ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° (MICROSERVICE_NAME), ΠΈΠ·ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΎ Bitbucket (ΠΌΠ΅ΡΠΎΠ΄ getCommitsForMicroservice), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ API, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° id ΠΈ commit message Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΈΡΠΈ Π·Π° ΡΠΎΠ·ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ.
ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ
ΠΌΠ΅, ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΡΠ° html, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Build with Parameters Π² Jenkins, Π·Π°ΡΠΎΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ Bitbucket ΠΎΠ±Π²ΠΈΠ²Π°ΠΌΠ΅ Π² ΡΠΏΠΈΡΡΠΊ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π² select.
Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°ΠΊΠ°Π²Π° ΠΊΡΠ°ΡΠΈΠ²Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ° Build with Parameters.
ΠΠΊΠΎ ΡΠΌΠ΅ ΠΈΠ·Π±ΡΠ°Π»ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ test1:

ΠΠΊΠΎ ΡΠΌΠ΅ ΠΈΠ·Π±ΡΠ°Π»ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ test2:

Π‘ΡΠ³Π»Π°ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ Π²Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ° url ΠΈ Π΄Π° ΡΡΡΡΠΈ Π½ΡΠΆΠ½ΠΈΡ commit id.
P.S. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠΎΡΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½ΡΠΌΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΠ·ΠΈ Π²ΠΈΠ΄, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ±ΠΎΡΠΊΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π½ΠΎ ΡΠ΅Π»ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π±Π΅ΡΠ΅ Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, Π° Π½Π΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
P.S.S. ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΏΠΎ-ΡΠ°Π½ΠΎ, Π°ΠΊΠΎ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ Π² Jenkins ΡΡΠ΅Π· ΠΊΠΎΠ΄.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
