ΠΠΎΠ±ΡΡ Π΄Π΅Π½, Π₯Π°Π±Ρ!
ΠΠ½Π΅Ρ Π±ΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Ρ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅, ΠΏΠΎ ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² Jenkins Π½Π°ΠΉ-ΡΠ½ΠΈΡΠ°ΡΠ΅Π½ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π‘ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ DevOps ΠΎΡΠ΄Π°Π²Π½Π° Π½Π΅ Π΅ Π½Π΅ΡΠΎ Π½ΠΎΠ²ΠΎ Π·Π° IT ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°. ΠΠ° ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΡΡΠ°Π·Π°ΡΠ° "Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ 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 β ΠΈΠΌΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°.
- Π‘ΠΊΡΠΈΠΏΡ β ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π² ΠΏΠΎΠ»Π΅ΡΠΎ Referenced parameter Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π° (Π² Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ test1 ΠΈ test2).
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ β ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°.
- Π’ΠΈΠΏ ΠΈΠ·Π±ΠΎΡ β ΡΠΈΠΏ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠΊΡΠΈΠΏΡΡΡ ΡΠ΅ Π²ΡΡΠ½Π΅ (Π² Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ html ΠΊΠΎΠ΄).
- Referenced parameter β ΠΈΠΌΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°, ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ ΠΎΡ ΡΠ΅ΠΊΡΠΈΡΡΠ° Π‘ΠΊΡΠΈΠΏΡ.

ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅ Π² ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ° ΠΈΠ·Π±ΠΎΡ Π½ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° 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
