ΠΠΎΠ±Π°Ρ Π΄Π΅Π½, Ρ Π΅Π±ΡΠ΅ΡΡΠΊΠΈ!
ΠΠ΅Π½Π΅Ρ Π±ΠΈ ΡΠ°ΠΊΠ°Π» Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Π°ΠΌ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠ° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π²ΠΎ ΠΠ΅Π½ΠΊΠΈΠ½Ρ Π½Π°ΡΠΎΠ±Π΅Π΄ΠΈΠ½Π΅ΡΠ° ΠΈ Π½Π°ΡΠΏΡΠΈΡΠ°ΡΠ½Π° Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅.
ΠΠΎΠ²Π΅Π΄
Π’Π°ΠΊΠ²Π°ΡΠ° ΠΊΡΠ°ΡΠ΅Π½ΠΊΠ° ΠΊΠ°ΠΊΠΎ DevOps Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π½Π΅ΡΡΠΎ Π½ΠΎΠ²ΠΎ Π·Π° ΠΠ’ Π·Π°Π΅Π΄Π½ΠΈΡΠ°ΡΠ°. ΠΠ° ΠΌΠ½ΠΎΠ³Ρ Π»ΡΡΠ΅, ΡΡΠ°Π·Π°ΡΠ° βΠ½Π°ΠΏΡΠ°Π²ΠΈ DevOpsβ Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½Π° ΡΠΎ Π½Π΅ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠ°Π³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΏΡΠ΅, ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΊΠ»ΠΈΠΊΠ½Π΅, ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ° Π²ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½Π° ΠΈ ΡΠ΅ΡΡΠΈΡΠ°Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° (ΡΓ¨ Π΅ Π²ΡΡΡΠ½ΠΎΡΡ ΠΏΠΎΠΊΠΎΠΌΠΏΠ»ΠΈΡΠΈΡΠ°Π½ΠΎ, Π½ΠΎ Π½ΠΈΠ΅ ΡΠ΅ Π°ΠΏΡΡΡΠ°Ρ ΠΈΡΠ°ΠΌΠ΅ ΠΎΠ΄ ΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ).
Π’Π°ΠΊΠ°, Π΄ΠΎΠ±ΠΈΠ²ΠΌΠ΅ Π½Π°ΡΠ΅Π΄Π±Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ°ΠΊΠ²ΠΎ ΠΌΠ°Π³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΏΡΠ΅ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π΄Π° ΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠΎ Π΅Π΄Π΅Π½ ΠΊΠ»ΠΈΠΊ. ΠΠΎΡΡΠΎΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΎΠ²Π°Π° Π·Π°Π΄Π°ΡΠ°: ΠΎΠ΄ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π±ΠΎΡ Π·Π° ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΠΎΠ΄ ΠΈΠ½ΡΡΠ°Π½Ρ-ΠΌΠ΅ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ Π΄ΠΎ ΡΠ°Π·Π²ΠΎΡ Π½Π° ΠΏΠΎΡΠ΅Π±Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. Π‘Π΅ΠΏΠ°ΠΊ, ΡΠ΅ΡΠΎ ΠΎΠ²Π° ΡΠ° ΠΈΠΌΠ° ΠΈΡΡΠ°ΡΠ° ΡΠ΅Π» - Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ° ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ½ΠΎ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ.
ΠΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΠ΅Π½ΠΊΠΈΠ½Ρ.

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

ΠΠ½Π΅ΡΠ΅Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ
ΠΠΌΠ°ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° ΠΊΠΎΠΈ Π³ΠΎ ΡΠΎΠ΄ΡΠΆΠ°Ρ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ.
ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
Π‘Π»Π΅Π΄Π½ΠΈΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ°Ρ ΠΊΠ°ΠΊΠΎ Π²Π»Π΅Π· Π²ΠΎ Π½Π°ΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ°:
- URL-ΡΠΎ Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ ΡΠΎ ΠΊΠΎΠ΄ΠΎΡ Π·Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΡΡΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌΠ΅ ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ°.
- ID Π½Π° Π·Π°Π»ΠΎΠΆΠ±Π°ΡΠ° ΠΎΠ΄ ΠΊΠΎΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ°.
ΠΠΠΠ Π¨Π’Π Π
ΠΠ°ΡΠ»Π΅ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΎΠ²Π°Π° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π°Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ String.

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

ΠΠΠΠ ΠΠ ΠΠΠΠΠ’Π
Π‘Π΅Π³Π° Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠΎΠ±Π°ΠΌΠ΅ Π΄ΡΡΠ³ ΡΠΈΠΏ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° Π΄Π° Π³ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΈΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈ.
ΠΡΠ΄Π΅ Π΄Π° Π³ΠΎ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΡΠ²ΠΈΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠΎ ΡΠΈΠΏΠΎΡ ΠΠ·Π±ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ, Π²ΡΠΎΡΠΈΠΎΡ - Active Choices Π Π΅Π°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ. ΠΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ ΡΠΎ ΡΠΈΠΏ ΠΠ·Π±ΠΎΡ, Π²ΠΎ ΠΏΠΎΠ»Π΅ΡΠΎ ΠΠ·Π±ΠΎΡΠΈ ΡΠ°ΡΠ½ΠΎ ΡΠ΅ Π³ΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ ΠΈΠΌΠΈΡΠ°ΡΠ° Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ°ΡΠ° ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π΅ Π·Π°ΡΡΠ²Π°Π½ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ.

ΠΠΊΠΎ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠ° ΠΈ ΡΠ΅ Π΄ΠΎΠΏΠ°Π΄Π½Π΅ ΠΎΠ²ΠΎΡ Π½Π°ΠΏΠΈΡ, ΡΠΎΠ³Π°Ρ Π²ΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ Π³ΠΎ ΠΎΠΏΠΈΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π²ΠΎ ΠΠ΅Π½ΠΊΠΈΠ½Ρ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΎΠΏΠΈΡ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠ΄ (ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ΄), Ρ.Π΅. Π½Π΅ΠΌΠ° Π΄Π° ΡΡΠ΅Π±Π° ΡΠ°ΡΠ½ΠΎ Π΄Π° Π²Π½Π΅ΡΡΠ²Π°ΠΌΠ΅ ΠΈΠΌΠΈΡΠ° Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° ΠΈ Π΄Π° ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΡΓ¨ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ (Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° ΠΎΠ΄ SCM ΠΈ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠΎ ΠΎΠ²Π°Π° Π»ΠΈΡΡΠ°).
ΠΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π²ΡΠΎΡΠΈΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°Π°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ, Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠΎΠ° ΠΊΠΎΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ° Π·Π΅ΠΌΠ° ΠΏΡΠ²ΠΈΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ (ΡΠ΅ΡΡ1 ΠΈΠ»ΠΈ ΡΠ΅ΡΡ2), Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠ΅ΠΊΠΎΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΠΈΠΌΠ° ΡΠ²ΠΎΡΠ° Π»ΠΈΡΡΠ° Π½Π° ΠΎΠ±Π²ΡΡΠΊΠΈ.
Active Choices Π Π΅Π°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π³ΠΈ ΠΈΠΌΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠ° Π·Π° ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΡΠ΅:
- ΠΠΌΠ΅ β ΠΈΠΌΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ.
- Π‘ΠΊΡΠΈΠΏΡΠ° β ΠΊΠΎΠ΄ ΠΊΠΎΡ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΏΠΎΠ»Π΅ΡΠΎ Referenced parameter (Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π° ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ test1 ΠΈ test2).
- ΠΠΏΠΈΡ β ΠΊΡΠ°ΡΠΎΠΊ ΠΎΠΏΠΈΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ.
- Π’ΠΈΠΏ Π½Π° ΠΈΠ·Π±ΠΎΡ β Π²ΠΈΠ΄ΠΎΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ ΡΡΠΎ Π³ΠΎ Π²ΡΠ°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ°ΡΠ° (Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ ΡΠ΅ Π³ΠΎ Π²ΡΠ°ΡΠΈΠΌΠ΅ html ΠΊΠΎΠ΄ΠΎΡ).
- Π Π΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ β ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ°, ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΠΊΠΎΠ΄ΠΎΡ ΠΎΠ΄ Π΄Π΅Π»ΠΎΡ Script.

ΠΡΠ΄Π΅ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΎ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΡΠ΅ Π½Π° Π½Π°ΡΠ²Π°ΠΆΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅ Π²ΠΎ ΠΎΠ²ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ. ΠΠΎΠ½ΡΠ΄Π΅Π½ΠΈ Π½ΠΈ ΡΠ΅ Π΄Π²Π° Π²ΠΈΠ΄Π° Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π·Π° ΠΈΠ·Π±ΠΎΡ: ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π‘ΠΊΡΠΈΠΏΡΠ° Groovy ΠΈΠ»ΠΈ Π‘ΠΊΡΠΈΠΏΡΠ»Π΅Ρ Π‘ΠΊΡΠΈΠΏΡΠ°.
ΠΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠ²ΠΎΡΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ 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 ΠΈ ΡΠ° Π΄ΠΎΠ±ΠΈΠ²Π° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ Π·Π°Π»ΠΎΠΆΠ±Π° Π·Π° ΡΠΈΡΠ΅ ΠΎΠ±Π²ΡΡΠΊΠΈ Π·Π° Π΄Π°Π΄Π΅Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ.
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²ΠΌΠ΅ ΠΏΠΎΡΠ°Π½ΠΎ, ΠΎΠ²ΠΎΡ ΠΊΠΎΠ΄ ΡΡΠ΅Π±Π° Π΄Π° Π²ΡΠ°ΡΠΈ html ΡΡΠΎ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΠ·Π³ΡΠ°Π΄Π±Π° ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π²ΠΎ ΠΠ΅Π½ΠΊΠΈΠ½Ρ, ΡΠ°ΠΊΠ° ΡΡΠΎ Π³ΠΈ Π·Π°Π²ΠΈΡΠΊΡΠ²Π°ΠΌΠ΅ ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΎΠ΄ Bitbucket Π²ΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΈ Π³ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π·Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅.
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ Π³ΠΈ Π·Π°Π²ΡΡΠΈΠΌΠ΅ ΡΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΡΠΈ, ΡΡΠ΅Π±Π° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΡΠΎΠ»ΠΊΡ ΡΠ±Π°Π²Π° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΠ·Π³ΡΠ°Π΄Π±Π° ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ.
ΠΠΊΠΎ ΡΡΠ΅ ΡΠ° ΠΈΠ·Π±ΡΠ°Π»Π΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΡ test1:

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

Π‘ΠΎΠ³Π»Π°ΡΠ΅ΡΠ΅ ΡΠ΅ Π΄Π΅ΠΊΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΠ΅ ΠΌΡ Π±ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ° ΡΠΎ Π²Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π½Π° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½ ΠΎΡΠΊΠΎΠ»ΠΊΡ Π΄Π° Π³ΠΎ ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ URL-ΡΠΎ ΡΠ΅ΠΊΠΎΡ ΠΏΠ°Ρ ΠΈ Π΄Π° Π³ΠΎ Π±Π°ΡΠ°ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΠΎΡ commit id.
PS ΠΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΠ΄ ΠΏΡΠ°ΠΊΡΠΈΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π²ΠΎ ΠΎΠ²Π°Π° ΡΠΎΡΠΌΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠΊΠ»ΠΎΠΏΠΎΠ²ΠΈΡΠ΅ ΠΈΠΌΠ°Π°Ρ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π½ΠΎ ΡΠ΅Π»ΡΠ° Π½Π° ΠΎΠ²ΠΎΡ Π½Π°ΠΏΠΈΡ Π±Π΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π°Π»Π°ΡΠΊΠ°ΡΠ°, Π° Π½Π΅ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΠ‘Π‘ ΠΠ°ΠΊΠΎ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π² ΠΏΠΎΡΠ°Π½ΠΎ, Π°ΠΊΠΎ ΠΎΠ²ΠΎΡ Π½Π°ΠΏΠΈΡ Π΅ ΠΊΠΎΡΠΈΡΠ΅Π½, ΡΠΎΠ³Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΡΠ΅ Π±ΠΈΠ΄Π΅ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π½Π° ΠΠ΅Π½ΠΊΠΈΠ½Ρ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠ΄.
ΠΠ·Π²ΠΎΡ: www.habr.com
