ΠΠΎΠ±ΡΡ Π΄Π΅Π½, Π₯Π°Π±Ρ!
ΠΠ½Π΅Ρ Π±ΠΈΡ
ΠΈΡΠΊΠ°Π» Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Ρ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π’Π°ΠΊΠΎΠ²Π° ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ DevOps ΠΎΡΠ΄Π°Π²Π½Π° Π½Π΅ Π΅ Π½Π΅ΡΠΎ Π½ΠΎΠ²ΠΎ Π·Π° ΠΠ’ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°. ΠΠ° ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΡΡΠ°Π·Π°ΡΠ° βΠ½Π°ΠΏΡΠ°Π²ΠΈ DevOpsβ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΡΠΎΠ½, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ°ΠΊΠ½Π΅, ΠΊΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ° Π² ΡΠ°Π·Π³ΡΡΠ½Π°ΡΠΎ ΠΈ ΡΠ΅ΡΡΠ²Π°Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π²ΡΡΡΠ½ΠΎΡΡ Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½ΠΈΠ΅ ΡΠ΅ Π°Π±ΡΡΡΠ°Ρ ΠΈΡΠ°ΠΌΠ΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ).
Π ΡΠ°ΠΊΠ°, ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ ΠΏΠΎΡΡΡΠΊΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΊΡΠ² Π²ΡΠ»ΡΠ΅Π±Π΅Π½ Π±ΡΡΠΎΠ½, ΡΠ°ΠΊΠ° ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ Π΅Π΄Π½ΠΎ ΡΡΠ°ΠΊΠ²Π°Π½Π΅. ΠΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ°: ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΠΎΡ ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΠΎΡ Π·Π° Π½ΡΠΊΠΎΠΉ ΠΎΡ ΠΌΠ΅ΡΠΈΠ½Π΄ΠΆΡΡΠΈΡΠ΅ ΠΈ ΡΠ΅ ΡΡΠΈΠ³Π½Π΅ Π΄ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΡΠ΅Π»ΡΠ° Π½Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° - Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠΎΠ½ΡΠ°ΠΆΠ° ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ.
Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ.
ΠΠ°Π΄Π°ΡΠ°
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΄ΠΎΠ±Π½Π° Π·Π°Π΄Π°ΡΠ° Π½Π° Jenkins, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ (ΠΈΠ»ΠΈ) Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·Π±ΡΠ°Π½Π°ΡΠ° ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³Π° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π²Π΅ΡΡΠΈΡ.
ΠΡ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠΌΠ°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°
ΠΡ ΠΎΠ΄ΡΡ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- URL Π°Π΄ΡΠ΅ΡΡΡ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Ρ ΠΊΠΎΠ΄Π° Π½Π° ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³Π°ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΠΈ Π²Π½Π΅Π΄ΡΠΈΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ΡΠΎ.
- ID Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠ°, ΠΎΡ ΠΊΠΎΠΉΡΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ.
ΠΠΠΠΠΠ’Π Π
ΠΠ°ΠΉ-Π»Π΅ΡΠ½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΠΎΡ ΡΠΈΠΏ String.
Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΠ΅ ΡΡΡΠ±Π²Π° ΡΡΡΠ½ΠΎ Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ ΠΏΡΡΡ Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ, ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅, Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠΠΠ’Π ΠΠ ΠΠͺΠΠ
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄ΡΡΠ³ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°.
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΡΠ²ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ ΡΠΈΠΏ Choice Parameter, Π²ΡΠΎΡΠΈΡΡ - Active Choices Reactive Reference Parameter. Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Ρ ΡΠΈΠΏ Choice ΡΡΡΠ½ΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈΡΠ΅ Π² ΠΏΠΎΠ»Π΅ΡΠΎ Choices, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ.
ΠΠΊΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠ° Ρ Π°ΡΠ΅ΡΠ° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, ΡΠΎΠ³Π°Π²Π° Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ Π² Jenkins, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ ΡΡΠ΅Π· ΠΊΠΎΠ΄Π° (Configuration as code), Ρ.Π΅. Π½ΡΠΌΠ° Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ½ΠΎ Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ (Π½Π°ΡΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΡΠΏΠΈΡΡΠΊΠ° Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΎΡ SCM ΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ).
Π‘ΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π²ΡΠΎΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΏΡΠ»Π²Π°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΡΡΠ²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (test1 ΠΈΠ»ΠΈ test2), ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΡΠΊΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈΠΌΠ° ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΏΠΈΡΡΠΊ Ρ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ.
ΠΠΊΡΠΈΠ²Π΅Π½ ΠΈΠ·Π±ΠΎΡ Π Π΅Π°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠΌΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ° Π·Π° ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅:
- ΠΠΌΠ΅ β ΠΈΠΌΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
- Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ - ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΠΈ Π²ΡΡΠΊΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΠΎΡ ΠΏΠΎΠ»Π΅ΡΠΎ Referenced parameter (Π² Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ test1 ΠΈ test2).
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ β ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°.
- Π’ΠΈΠΏ ΠΈΠ·Π±ΠΎΡ - Π²ΠΈΠ΄Π° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°, Π²ΡΡΠ½Π°Ρ ΠΎΡ ΡΠΊΡΠΈΠΏΡΠ° (Π² Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ html ΠΊΠΎΠ΄Π°).
- ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°, ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ ΠΎΡ ΡΠ΅ΠΊΡΠΈΡΡΠ° Π‘ΠΊΡΠΈΠΏΡ.
ΠΠ΅ΠΊΠ° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅ Π² ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ Π½ΠΈ ΡΠ΅ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Groovy ΡΠΊΡΠΈΠΏΡ ΠΈΠ»ΠΈ Scriptler ΡΠΊΡΠΈΠΏΡ.
ΠΠΈΠ΅ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΡΠ²ΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ 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, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² Jenkins, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΠ±Π²ΠΈΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ Bitbucket Π² ΡΠΏΠΈΡΡΠΊ ΠΈ Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΠΊΡΠΌ ΠΈΠ·Π±ΡΠ°Π½ΠΎΡΠΎ.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠΏΠΊΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°ΠΊΠ°Π²Π° ΠΊΡΠ°ΡΠΈΠ²Π° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ.
ΠΠΊΠΎ ΡΡΠ΅ ΠΈΠ·Π±ΡΠ°Π»ΠΈ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³Π°ΡΠ° test1:
ΠΠΊΠΎ ΡΡΠ΅ ΠΈΠ·Π±ΡΠ°Π»ΠΈ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³Π°ΡΠ° test2:
Π‘ΡΠ³Π»Π°ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ Π²Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ° URL Π°Π΄ΡΠ΅ΡΠ° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ ΠΈ Π΄Π° ΡΡΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ.
PS Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠΎΡΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π΅ ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ° ΠΏΠΎΠ»Π·Π° ΡΠ°ΠΊΡΠ², ΠΊΠ°ΠΊΡΠ²ΡΠΎ Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ³Π»ΠΎΠ±ΠΊΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΡΠΈΠΈ, Π½ΠΎ ΡΠ΅Π»ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π±Π΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ, Π° Π½Π΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
PSS ΠΠ°ΠΊΡΠΎ ΠΏΠΈΡΠ°Ρ ΠΏΠΎ-ΡΠ°Π½ΠΎ, Π°ΠΊΠΎ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π° ΡΠΎΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Jenkins Π·Π°Π΄Π°ΡΠΈ ΡΡΠ΅Π· ΠΊΠΎΠ΄.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com