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

ΠΠ²Π°Ρ ΡΠ»Π°Π½Π°ΠΊ ΡΠ΅ ΠΏΠΎΠΊΡΠΈΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΡΡΠΊΠ΅ Π·Π° ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΊΠ»Π°ΡΠ° .ΠΠ΅Ρ Π¦ΠΎΡΠ΅ Ρ ΠΠΈΡΠΠ°Π±-Ρ, ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΠΈΡΠΠ°Π± ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠ° ΠΈ ΡΠ»Π°ΡΠ΅ ΠΏΡΠΈΠΊΡΠΏΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈ ΡΠΈΠ΄ Ρ ΠΠ·ΡΡΠ΅ ΠΠ΅Π²ΠΠΏΡ.
ΠΠ‘ Π¦ΠΎΠ΄Π΅ ΡΠ° Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠΎΠΌ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅Π½ ΠΊΠ°ΠΎ ΡΠ°Π·Π²ΠΎΡΠ½ΠΎ ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅ (Π΄Π° Π±ΠΈΡΡΠ΅ ΠΏΠΎΡΠ²ΡΠ΄ΠΈΠ»ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ· ΡΠ°Π·Π²ΠΎΡΠ½ΠΎΠ³ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°).
ΠΡΠ°ΡΠΊΠΈ ΡΠ²ΠΎΠ΄
Π¦Π ΡΠ΅ ΠΊΠ°Π΄Π° ΡΡΠ΅ ΡΠ°ΠΌΠΎ Π³ΡΡΠ½ΡΠ»ΠΈ, Π° ΠΊΠ»ΠΈΡΠ΅Π½Ρ ΡΠ΅ Π²Π΅Ρ ΡΠ²Π΅ ΠΈΠ·Π³ΡΠ±ΠΈΠΎ?
Π¨ΡΠ° ΡΠ΅ Π¦Π/Π¦Π ΠΈ Π·Π°ΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½? ΠΠΎΠΆΠ΅ΡΠ΅ Π³Π° Π»Π°ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ³Π»Π°ΡΠΈ. ΠΡΠΎΠ½Π°ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠ½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΎ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΡ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π° Ρ ΠΠΈΡΠΠ°Π±Ρ . ΠΠ²Π΄Π΅ ΡΡ ΡΠΊΡΠ°ΡΠΊΠΎ ΠΈ, Π°ΠΊΠΎ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅, Π±Π΅Π· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ°ΠΊΠ°, ΠΎΠΏΠΈΡΠ°ΡΠΈ ΠΏΡΠΎΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ· ΠΏΡΠΈΡΡΠ΅ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅:
- ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ ΡΠ°ΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅, ΠΊΡΠ΅ΠΈΡΠ° Π·Π°Ρ ΡΠ΅Π² Π·Π° ΡΡΠ°ΠΏΠ°ΡΠ΅ ΠΏΡΠ΅ΠΊΠΎ Π²Π΅Π± Π»ΠΎΠΊΠ°ΡΠΈΡΠ΅, ΠΈΠ»ΠΈ Π½Π° Π½Π΅ΠΊΠΈ Π΄ΡΡΠ³ΠΈ Π½Π°ΡΠΈΠ½ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄,
- ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ Π±ΠΈΡΠ°ΡΡ ΡΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠΈΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°ΡΡ ΡΠΈΡ ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Ρ Π΄Π°ΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ,
- Π·Π°Π΄Π°ΡΠΈ ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΈ ΠΏΡΠ΅ΠΌΠ° ΡΠ²ΠΎΡΠΈΠΌ ΡΠ°Π·Π°ΠΌΠ°,
- ΡΠ°Π·Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΡ ΡΠ΅Π΄ΠΎΠΌ β ΡΡ. ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΡΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΎΠ²Π΅ ΡΠ°Π·Π΅ ΡΡ Π·Π°Π²ΡΡΠ΅Π½ΠΈ,
- Π°ΠΊΠΎ ΡΠ°Π·Π° Π½Π΅ ΡΡΠΏΠ΅ (ΡΡ. Π±Π°Ρ ΡΠ΅Π΄Π°Π½ ΠΎΠ΄ Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ΡΠ°Π·Π΅ Π½Π΅ ΡΡΠΏΠ΅) - ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΡΠ΅ Π·Π°ΡΡΡΠ°Π²ΡΠ° (Π³ΠΎΡΠΎΠ²ΠΎ ΡΠ²Π΅ΠΊ),
- Π°ΠΊΠΎ ΡΡ ΡΠ²Π΅ ΡΠ°Π·Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΠ΅Π½Π΅, Π³Π°ΡΠΎΠ²ΠΎΠ΄ ΡΠ΅ ΡΠΌΠ°ΡΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΈΠΌ.
Π’Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠΎ:
- ΠΏΠΈΠΏΠ΅Π»ΠΈΠ½Π΅ ΡΠ΅ ΡΠΊΡΠΏ Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠ°Π·Π΅ Ρ ΠΊΠΎΡΠΈΠΌΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠ°Π²ΠΈΡΠΈ, ΡΠ΅ΡΡΠΈΡΠ°ΡΠΈ, ΠΏΠ°ΠΊΠΎΠ²Π°ΡΠΈ ΠΊΠΎΠ΄, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠΊΠ»ΠΎΠΏ Π½Π° ΡΡΠ»ΡΠ³Ρ Ρ ΠΎΠ±Π»Π°ΠΊΡ ΠΈΡΠ΄.
- ΡΠ°Π·Π° (ΡΠ°Π·Π°) β ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ΅ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π°, ΡΠ°Π΄ΡΠΆΠΈ 1+ Π·Π°Π΄Π°ΡΠ°ΠΊ,
- Π·Π°Π΄Π°ΡΠ°ΠΊ (ΠΏΠΎΡΠ°ΠΎ) ΡΠ΅ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ° ΡΠ°Π΄Π° Ρ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Ρ. Π‘Π°ΡΡΠΎΡΠΈ ΡΠ΅ ΠΎΠ΄ ΡΠΊΡΠΈΠΏΡΠ΅ (ΠΎΠ±Π°Π²Π΅Π·Π½ΠΎ), ΡΡΠ»ΠΎΠ²Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ°, ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅/ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΠ°ΡΠ° ΠΈ ΡΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠ³Π°.
Π‘Ρ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΌΠ΅, Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΏΡΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΡ Π¦Π/Π¦Π-Π° ΡΠ΅ ΡΠ²ΠΎΠ΄ΠΈ Π½Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΊΡΠΏΠ° Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡ ΡΠ²Π΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½Π΅ ΡΠ°Π΄ΡΠ΅ Π·Π° ΡΠΊΠ»Π°ΠΏΠ°ΡΠ΅, ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΠ°ΡΠ°.
ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΡΠ½Π΅ΠΌΠΎ: Π·Π°ΡΡΠΎ?
- ΠΠ°ΡΡΠΎ ΠΠΈΡΠΠ°Π±?
ΠΠ΅Ρ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎΡΡΠ΅Π±Π° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠ° Π·Π° ΠΏΡΠΎΡΠ΅ΠΊΡΠ΅ ΠΊΡΡΠ½ΠΈΡ ΡΡΠ±ΠΈΠΌΠ°ΡΠ°, ΠΎΠ½ΠΈ ΡΡ Π±ΠΈΠ»ΠΈ ΠΏΠ»Π°ΡΠ΅Π½ΠΈ Π½Π° ΠΠΈΡΠ₯ΡΠ±-Ρ, Π° ΡΠ° ΡΠ°ΠΌ Π±ΠΈΠΎ ΠΏΠΎΡ Π»Π΅ΠΏΠ°Π½. Π‘ΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΡΡ ΠΏΠΎΡΡΠ°Π»Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°, Π°Π»ΠΈ Π·Π° ΡΠ°Π΄Π° ΠΎΠ²ΠΎ Π½ΠΈΡΠ΅ Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ Π΄ΠΎΠ±Π°Ρ ΡΠ°Π·Π»ΠΎΠ³ Π΄Π° ΠΏΡΠ΅ΡΠ΅ΠΌ Π½Π° ΠΠΈΡΠ₯ΡΠ±.
- ΠΠ°ΡΡΠΎ Π½Π΅ ΠΠ·ΡΡΠ΅ ΠΠ΅Π²ΠΠΏΡ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Ρ?
ΠΠΎΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ - Π½ΠΈΡΠ΅ Π²Π°ΠΌ Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π½Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅. ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΡΠ° ΡΠΏΠΎΡΠ½ΠΈΠΌ Π³ΠΈΡ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠΈΠΌΠ° β Ρ ΠΏΠ°Ρ ΠΊΠ»ΠΈΠΊΠΎΠ²Π°, ΡΠ²ΠΎΠ· Π‘Π‘Π₯ ΠΊΡΡΡΠ΅Π²Π° Π·Π° ΡΠ»Π°ΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ β ΡΠ°ΠΊΠΎΡΠ΅, ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΡΠ΅ Π»Π°ΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ ΡΠ°ΠΊ ΠΈ Π±Π΅Π· ΡΠ°Π±Π»ΠΎΠ½Π°.
ΠΠΎΡΠ΅ΡΠ½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡΠ°: ΡΡΠ° ΠΈΠΌΠ°ΡΠ΅ ΠΈ ΡΡΠ° ΠΆΠ΅Π»ΠΈΡΠ΅
ΠΠΌΠ°ΠΌΠΎ:
- ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ Ρ ΠΠΈΡΠΠ°Π±Ρ.
ΠΠ΅Π»ΠΈΠΌΠΎ:
- Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΊΠ»Π°ΠΏΠ°ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π·Π° ΡΠ²Π°ΠΊΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅,
- ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π° ΡΠ²Π°ΠΊΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅ ΠΈ Π³ΡΡΠ°ΡΠ΅ Π΄ΠΎ ΠΌΠ°ΡΡΠ΅ΡΠ°, ΠΏΠΎΠ΄ ΡΡΠ»ΠΎΠ²ΠΎΠΌ Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π° Π»ΠΈΠ½ΠΈΡΠ° Ρ ΠΏΠΎΡΡΡΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ°,
- ΡΠ»Π°ΡΠ΅ ΠΏΡΠΈΠΊΡΠΏΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈ ΡΠΈΠ΄ Ρ ΠΠ·ΡΡΠ΅ ΠΠ΅Π²ΠΠΏΡ-Ρ,
- ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅ Ρ ΠΠΈΡΠΠ°Π± ΠΠ°Π³Π΅Ρ,
- Π·Π½Π°ΡΠΊΠ΅!11
ΠΠΏΠΈΡΠ°Π½ΠΈ Π·Π°Ρ ΡΠ΅Π²ΠΈ ΡΠ΅ ΠΏΡΠΈΡΠΎΠ΄Π½ΠΎ ΡΠΊΠ»Π°ΠΏΠ°ΡΡ Ρ ΡΠ»Π΅Π΄Π΅ΡΠΈ ΠΌΠΎΠ΄Π΅Π» ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π°:
- Π€Π°Π·Π° 1 - ΠΌΠΎΠ½ΡΠ°ΠΆΠ°
- Π‘Π°ΠΊΡΠΏΡΠ°ΠΌΠΎ ΠΊΠΎΠ΄, ΠΎΠ±ΡΠ°Π²ΡΡΡΠ΅ΠΌΠΎ ΠΈΠ·Π»Π°Π·Π½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠ°ΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ΅
- Π€Π°Π·Π° 2 - ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅
- ΠΡΠΈΠΌΠ°ΠΌΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ΅ ΠΈΠ· ΡΠ°Π·Π΅ ΠΈΠ·ΡΠ°Π΄Π΅, ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΏΡΠΈΠΊΡΠΏΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΎ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°
- Π€Π°Π·Π° 3 - ΡΠ»Π°ΡΠ΅
- ΠΠ°Π΄Π°ΡΠ°ΠΊ 1 - ΠΏΡΠΈΠΊΡΠΏΠΈΡΠ΅ Π½ΡΠ³Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ ΠΈ ΠΏΠΎΡΠ°ΡΠΈΡΠ΅ Π³Π° Ρ ΠΠ·ΡΡΠ΅ ΠΠ΅Π²ΠΠΏΡ
- ΠΠ°Π΄Π°ΡΠ°ΠΊ 2 - ΡΠ°ΡΡΠ°Π²ΡΠ°ΠΌΠΎ ΡΠ°ΡΡ ΠΈΠ· ΠΊΠΌΠ»Π΄ΠΎΡ-Π° Ρ ΠΈΠ·Π²ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±ΡΠ°Π²ΡΡΡΠ΅ΠΌΠΎ Π³Π° Ρ ΠΠΈΡΠΠ°Π± ΠΠ°Π³Π΅Ρ
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠΎ!
Π‘Π°ΡΡΠ°Π²ΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅
ΠΡΠΈΠΏΡΠ΅ΠΌΠ° ΡΠ°ΡΡΠ½Π°
-
ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π°Π»ΠΎΠ³ Ρ
-
ΠΠ΄ΠΈ Π½Π°
-
ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ
- ΠΠΌΠ΅ - Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ΅
- ΠΠΈΠ΄ΡΠΈΠ²ΠΎΡΡ - Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ°

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

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

-
ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° Π¦ΠΎΠ½Π½Π΅ΡΡ ΡΠΎ ΡΠ΅Π΅Π΄, ΠΈΠ·Π°Π±Π΅ΡΠΈΡΠ΅ ΠΠΈΡΡΠ°Π» Π‘ΡΡΠ΄ΠΈΠΎ, ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠ΅ Π‘ΠΎΡΡΡΠ΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° Π·Π° ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Π΅

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

-
ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΏΡΠΈΡΡΡΠΏ
- ΠΠ°Π·ΠΈΠ² - ΠΏΡΠΎΠΈΠ·Π²ΠΎΡΠ°Π½
- ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° β Π°ΠΊΡΡΠ΅Π»Π½Π°
- Π ΠΎΠΊ Π²Π°ΠΆΠ΅ΡΠ°: ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ 1 Π³ΠΎΠ΄ΠΈΠ½Π°
- ΠΠ±ΠΈΠΌ β ΠΏΠ°ΠΊΠΎΠ²Π°ΡΠ΅/ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠΈΡΠ°ΡΠ΅

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

-
ΠΡΠΎΡΠΈΡΠΈΡΠ΅ Π±Π»ΠΎΠΊ ΠΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΈ Π΄ΠΎΠ΄Π°ΡΡΠ΅ Π½ΠΎΠ²ΠΈ
- ΠΠΌΠ΅ - Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ΅ Π±Π΅Π· ΡΠ°Π·ΠΌΠ°ΠΊΠ° (Π±ΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΡ ΡΡΡΡΠΈ)
- ΠΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ ΠΈΠ· ΠΊΠΎΡΠ°ΠΊΠ° 9
- ΠΠ·Π°Π±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΌΠ°ΡΠΊΠ΅

ΠΠ²ΠΎ Π·Π°Π²ΡΡΠ°Π²Π° ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅.
ΠΡΠΈΠΏΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½ΠΎΠ³ ΠΎΠΊΠ²ΠΈΡΠ°
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π¦Π/Π¦Π-Π° Ρ ΠΠΈΡΠΠ°Π±-Ρ ΡΠ΅ .gitlab-ci.yml ΠΈΠ· ΠΊΠΎΡΠ΅Π½Π° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΡΠ΅Π½Ρ ΠΏΡΡΠ°ΡΡ Π΄ΠΎ ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Ρ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠΈΠΌΠ° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°, Π°Π»ΠΈ Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ ΡΠΎ Π½ΠΈΡΠ΅ Π½Π΅ΠΎΠΏΡ
ΠΎΠ΄Π½ΠΎ.
ΠΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΈΠ· Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ΅, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ°Π΄ΡΠΆΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Ρ ΡΠΎΡΠΌΠ°ΡΡ YAML. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π΄Π΅ΡΠ°ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΡΠ΅ ΠΊΠΎΡΠΈ ΠΊΡΡΡΠ΅Π²ΠΈ ΠΌΠΎΠ³Ρ Π±ΠΈΡΠΈ ΡΠ°Π΄ΡΠΆΠ°Π½ΠΈ Π½Π° Π½Π°ΡΠ²ΠΈΡΠ΅ΠΌ Π½ΠΈΠ²ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ ΠΈ Π½Π° ΡΠ²Π°ΠΊΠΎΠΌ ΠΎΠ΄ ΡΠ³Π½Π΅ΠΆΡΠ΅Π½ΠΈΡ
Π½ΠΈΠ²ΠΎΠ°.
ΠΡΠ²ΠΎ, Π΄ΠΎΠ΄Π°ΡΠΌΠΎ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π²Π΅Π·Ρ Π΄ΠΎ Π΄ΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ΅ Ρ ΠΊΠΎΡΠΎΡ ΡΠ΅ ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠΈ. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ Π½Π°Π»Π°Π·ΠΈΠΌΠΎ . Π£ ΠΠΎΡΡΠΎΡΠΈ Π΄Π΅ΡΠ°ΡΠ°Π½ Π²ΠΎΠ΄ΠΈΡ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠΎΡΡ ΡΠ»ΠΈΠΊΡ ΠΎΠ΄Π°Π±ΡΠ°ΡΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΊΠ΅. Π‘Π»ΠΈΠΊΠ° ΡΠ° .ΠΠ΅Ρ Π¦ΠΎΡΠ΅ 3.1 ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° Π½Π°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ, ΠΏΠ° ΡΠ΅ ΡΠ»ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΠΊΠ°ΠΎ ΠΏΡΠ²ΠΈ ΡΠ΅Π΄ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ
image: mcr.microsoft.com/dotnet/core/sdk:3.1
Π‘Π°Π΄Π°, ΠΊΠ°Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄, Π½Π°Π²Π΅Π΄Π΅Π½Π° ΡΠ»ΠΈΠΊΠ° ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠ΅ΡΠ·Π΅ΡΠ° ΠΈΠ· ΠΠΈΡΡΠΎΡΠΎΡΡΠΎΠ²ΠΎΠ³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΡΠ»ΠΈΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠΈ ΡΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅.
Π‘Π»Π΅Π΄Π΅ΡΠΈ ΠΊΠΎΡΠ°ΠΊ ΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΠ°Π·Π°'Ρ. ΠΠΈΡΠΠ°Π± ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ 5 ΡΠ°Π·Π°:
.pre- ΡΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Ρ ΡΠ²ΠΈΠΌ ΡΠ°Π·Π°ΠΌΠ°,.post- ΠΈΠ·Π²ΠΎΠ΄ΠΈ ΡΠ΅ Π½Π°ΠΊΠΎΠ½ ΡΠ²ΠΈΡ ΡΠ°Π·Π°,build- ΠΏΡΠ²ΠΎ ΠΏΠΎΡΠ»Π΅.preΡΠ°Π·Π°,test- Π΄ΡΡΠ³Π° ΡΠ°Π·Π°,deploy- ΡΡΠ΅ΡΠ° ΡΠ°Π·Π°.
ΠΠ΅ΡΡΡΠΈΠΌ, Π½ΠΈΡΡΠ° Π²Π°Ρ Π½Π΅ ΡΠΏΡΠ΅ΡΠ°Π²Π° Π΄Π° ΠΈΡ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΈΠ·ΡΠ°Π²ΠΈΡΠ΅. Π Π΅Π΄ΠΎΡΠ»Π΅Π΄ Ρ ΠΊΠΎΠΌΠ΅ ΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΊΠΎΡΠ°ΡΠΈ ΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ ΠΊΠΎΡΠΈΠΌ ΡΠ΅ ΠΎΠ½ΠΈ Π·Π°Π²ΡΡΠ°Π²Π°ΡΡ. ΠΠ° ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠ½ΠΎΡΡ, Π΄ΠΎΠ΄Π°ΡΠΌΠΎ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ:
stages:
- build
- test
- deploy
ΠΠ° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°, ΠΈΠΌΠ° ΡΠΌΠΈΡΠ»Π° Π΄ΠΎΠ±ΠΈΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ ΠΎΠΊΡΡΠΆΠ΅ΡΡ Ρ ΠΊΠΎΡΠ΅ΠΌ ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΡ. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΡΠΊΡΠΏ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠΎΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠΈ ΠΏΡΠ΅ ΡΠ²Π°ΠΊΠΎΠ³ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° Π·Π°Π΄Π°ΡΠΊΠ° before_script:
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
ΠΡΡΠ°ΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π° Π±Π°Ρ ΡΠ΅Π΄Π°Π½ Π·Π°Π΄Π°ΡΠ°ΠΊ ΡΠ°ΠΊΠΎ Π΄Π° ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°ΡΡ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ°, ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈ. ΠΠ° ΡΠ°Π΄Π°, Π΄ΠΎΠ΄Π°ΡΠΌΠΎ ΠΏΡΠ°Π·Π°Π½ Π·Π°Π΄Π°ΡΠ°ΠΊ Π·Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΡ:
dummy job:
script:
- echo ok
ΠΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡΡ, Π΄ΠΎΠ±ΠΈΡΠ°ΠΌΠΎ ΠΏΠΎΡΡΠΊΡ Π΄Π° ΡΠ΅ ΡΠ²Π΅ Ρ ΡΠ΅Π΄Ρ, ΡΡΠ΅Π·ΡΡΠ΅ΠΌΠΎ, Π³ΡΡΠ°ΠΌΠΎ, Π³Π»Π΅Π΄Π°ΠΌΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ΅ Π½Π° ΡΠ°ΡΡΡ... Π Π΄ΠΎΠ±ΠΈΡΠ°ΠΌΠΎ Π³ΡΠ΅ΡΠΊΡ Ρ ΡΠΊΡΠΈΠΏΡΠΈ - bash: .PSVersion: command not found. ΠΠ’Π€?
Π‘Π²Π΅ ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ - ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΡΡΠΊΠ°ΡΠΈ (ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ΠΈ ΠΊΠΎΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ ΠΠΈΡΠΠ°Π±) ΠΊΠΎΡΠΈΡΡΠ΅ bash Π·Π° ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. ΠΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅ΡΡΠΈ Ρ ΠΎΠΏΠΈΡΡ Π·Π°Π΄Π°ΡΠΊΠ° ΠΊΠΎΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ°Ρ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π°:
dummy job on windows:
script:
- echo ok
tags:
- windows
ΠΠ΅Π»ΠΈΠΊΠΈ! Π¦Π΅Π²ΠΎΠ²ΠΎΠ΄ ΡΠ°Π΄Π° ΡΠ°Π΄ΠΈ.
ΠΠ°ΠΆΡΠΈΠ² ΡΠΈΡΠ°Π»Π°Ρ, ΠΏΠΎΠ½Π°Π²ΡΠ°ΡΡΡΠΈ ΠΎΠ²Π΅ ΠΊΠΎΡΠ°ΠΊΠ΅, ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΠΊ Π·Π°Π²ΡΡΠ΅Π½ Ρ ΡΠ°Π·ΠΈ test, ΠΈΠ°ΠΊΠΎ Π½ΠΈΡΠΌΠΎ ΠΏΡΠ΅ΡΠΈΠ·ΠΈΡΠ°Π»ΠΈ ΡΠ°Π·Ρ. ΠΠ°ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ, test ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΈ ΠΊΠΎΡΠ°ΠΊ.
ΠΠ°ΡΡΠ°Π²ΠΈΠΌΠΎ ΡΠ° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΠΌ ΡΠΊΠ΅Π»Π΅ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ ΡΠ²ΠΈΡ Π³ΠΎΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π·Π°Π΄Π°ΡΠ°ΠΊΠ°:
build job:
script:
- echo "building..."
tags:
- windows
stage: build
test and cover job:
script:
- echo "running tests and coverage analysis..."
tags:
- windows
stage: test
pack and deploy job:
script:
- echo "packing and pushing to nuget..."
tags:
- windows
stage: deploy
pages:
script:
- echo "creating docs..."
tags:
- windows
stage: deploy
ΠΠΎΠ±ΠΈΠ»ΠΈ ΡΠΌΠΎ Π½Π΅ Π½Π°ΡΠΎΡΠΈΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°Π½, Π°Π»ΠΈ ΠΈΠΏΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²Π°Π½ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄.
ΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΎΠΊΠΈΠ΄Π°ΡΠ°
ΠΠ±ΠΎΠ³ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ Π΄Π° Π½ΠΈΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΡΠΈΠ»ΡΠ΅ΡΠΈ ΠΎΠΊΠΈΠ΄Π°ΡΠ° Π½ΠΈ Π·Π° ΡΠ΅Π΄Π°Π½ ΠΎΠ΄ Π·Π°Π΄Π°ΡΠ°ΠΊΠ°, ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΡΠ΅ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΠ·Π²ΡΡΠ°Π²Π° ΡΠ΅ ΡΠ²Π°ΠΊΠΈ ΠΏΡΡ ΠΊΠ°Π΄Π° ΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΠ°ΡΡ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅. ΠΠΎΡΡΠΎ ΠΎΠ²ΠΎ ΡΠΎΠΏΡΡΠ΅ Π½ΠΈΡΠ΅ ΠΆΠ΅ΡΠ΅Π½ΠΎ ΠΏΠΎΠ½Π°ΡΠ°ΡΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ΠΌΠΎ ΡΠΈΠ»ΡΠ΅ΡΠ΅ ΠΎΠΊΠΈΠ΄Π°ΡΠ° Π·Π° Π·Π°Π΄Π°ΡΠΊΠ΅.
Π€ΠΈΠ»ΡΠ΅ΡΠΈ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠΈ Ρ Π΄Π²Π° ΡΠΎΡΠΌΠ°ΡΠ°: ΠΈ . Π£ΠΊΡΠ°ΡΠΊΠΎ, only/except ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΡΠΈΠ»ΡΠ΅ΡΠ΅ ΠΏΠΎΠΌΠΎΡΡ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° (merge_request, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΠΊ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π° ΡΠ²Π°ΠΊΠΈ ΠΏΡΡ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° Π·Π°Ρ
ΡΠ΅Π² Π·Π° ΡΡΠ°ΠΏΠ°ΡΠ΅ ΠΈ ΡΠ²Π°ΠΊΠΈ ΠΏΡΡ ΠΊΠ°Π΄Π° ΡΠ΅ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΠ°ΡΡ Π³ΡΠ°Π½ΠΈ ΠΊΠΎΡΠ° ΡΠ΅ ΠΈΠ·Π²ΠΎΡ Ρ Π·Π°Ρ
ΡΠ΅Π²Ρ Π·Π° ΡΡΠ°ΠΏΠ°ΡΠ΅) ΠΈ ΠΈΠΌΠ΅Π½Π° Π³ΡΠ°Π½Π° (ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅Π³ΡΠ»Π°ΡΠ½ΠΈΡ
ΠΈΠ·ΡΠ°Π·Π°); rules ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡΠ΅ ΡΠΊΡΠΏ ΡΡΠ»ΠΎΠ²Π° ΠΈ, ΠΎΠΏΡΠΈΠΎΠ½ΠΎ, ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠ»ΠΎΠ² ΠΈΠ·Π²ΡΡΠ΅ΡΠ° Π·Π°Π΄Π°ΡΠΊΠ° Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΡΡΠΏΠ΅Ρ
Π° ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΈΡ
Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ().
ΠΠΎΠ΄ΡΠ΅ΡΠΈΠΌΠΎ ΡΠ΅ ΡΠΊΡΠΏΠ° Π·Π°Ρ ΡΠ΅Π²Π° β ΡΠΊΠ»Π°ΠΏΠ°ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° Π·Π°Ρ ΡΠ΅Π²Π΅ Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅, ΠΏΠ°ΠΊΠΎΠ²Π°ΡΠ΅ ΠΈ ΡΠ»Π°ΡΠ΅ Ρ ΠΠ·ΡΡΠ΅ ΠΠ΅Π²ΠΠΏΡ β Π·Π° Π·Π°Ρ ΡΠ΅Π²Π΅ Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅ ΠΈ Π³ΡΡΠ°ΡΠ° ΠΊΠ° ΠΌΠ°ΡΡΠ΅ΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ β Π·Π° ΠΏΡΡΡ Π΄ΠΎ ΠΌΠ°ΡΡΠ΅ΡΠ°.
ΠΡΠ²ΠΎ, ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ° ΠΊΠΎΠ΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠΊΠΈΠ΄Π°ΡΠ° ΠΊΠΎΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅:
build job:
# snip
only:
- merge_request
Π‘Π°Π΄Π° Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΠΌΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΏΠ°ΠΊΠΎΠ²Π°ΡΠ° Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅ ΠΈ Π΄ΠΎΠ΄Π°ΠΌΠΎ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ°ΡΡΠ΅Ρ:
pack and deploy job:
# snip
only:
- merge_request
- master
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ²Π΅ ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΈ ΡΠ°ΡΠ½ΠΎ.
Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΠΊ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΡΠ°Π²Π°ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ ΡΠ° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΡΠΈΡΠ½ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠΌ Π³ΡΠ°Π½ΠΎΠΌ:
rules:
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
Π£ ΡΡΠ»ΠΎΠ²ΠΈΠΌΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ; ΠΡΠ°Π²ΠΈΠ»Π° rules Π½ΠΈΡΠ΅ Ρ ΡΠΊΠ»Π°Π΄Ρ ΡΠ° ΠΏΡΠ°Π²ΠΈΠ»ΠΈΠΌΠ° only/except.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠ²Π°ΡΠ° Π°ΡΡΠ΅ΡΠ°ΠΊΠ°ΡΠ°
ΠΠΎΠΊ ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ build job ΠΈΠΌΠ°ΡΠ΅ΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½Π΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Ρ Π½Π°ΡΠ΅Π΄Π½ΠΈΠΌ Π·Π°Π΄Π°ΡΠΈΠΌΠ°. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°ΡΠ΅ ΠΏΡΡΠ°ΡΠ΅ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π·Π°Π΄Π°ΡΠΊΠ°, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π΄ΡΠΆ ΠΊΠΎΡΠΈΡ
ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΡΠ΅ ΡΠ°ΡΡΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ Ρ Π½Π°ΡΠ΅Π΄Π½ΠΈΠΌ Π·Π°Π΄Π°ΡΠΈΠΌΠ°, Ρ ΠΊΡΡΡ :
build job:
# snip
artifacts:
paths:
- path/to/build/artifacts
- another/path
- MyCoolLib.*/bin/Release/*
ΠΡΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΡ ΡΠΎΠΊΠ΅Ρ Π·Π½Π°ΠΊΠΎΠ²Π΅, ΡΡΠΎ ΠΈΡ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠ²Π½ΠΎ ΡΠΈΠ½ΠΈ Π»Π°ΠΊΡΠΈΠΌ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅.
ΠΠΊΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΊΡΠ΅ΠΈΡΠ° Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ΅, ΠΎΠ½Π΄Π° ΡΠ΅ ΡΠ²Π°ΠΊΠΈ ΡΠ»Π΅Π΄Π΅ΡΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΌΠΎΡΠΈ Π΄Π° ΠΈΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈ β ΠΎΠ½ΠΈ ΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈΡΠΈ Π΄ΡΠΆ ΠΈΡΡΠΈΡ ΠΏΡΡΠ°ΡΠ° Ρ ΠΎΠ΄Π½ΠΎΡΡ Π½Π° ΠΊΠΎΡΠ΅Π½ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° Π΄ΡΠΆ ΠΊΠΎΡΠ΅Π³ ΡΡ ΠΏΡΠΈΠΊΡΠΏΡΠ΅Π½ΠΈ ΠΎΠ΄ ΠΏΡΠ²ΠΎΠ±ΠΈΡΠ½ΠΎΠ³ Π·Π°Π΄Π°ΡΠΊΠ°. ΠΡΡΠ΅ΡΠ°ΠΊΡΠΈ ΡΡ ΡΠ°ΠΊΠΎΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ Π½Π° Π²Π΅Π± Π»ΠΎΠΊΠ°ΡΠΈΡΠΈ.
Π‘Π°Π΄Π° ΠΊΠ°Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ ΡΠΏΡΠ΅ΠΌΠ°Π½ (ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠΎΠ²Π°Π½) ΠΎΠΊΠ²ΠΈΡ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΡΠ΅ΡΠΈ Π½Π° ΡΡΠ²Π°ΡΠ½ΠΎ ΠΏΠΈΡΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΈ Π·Π° Π·Π°Π΄Π°ΡΠΊΠ΅.
ΠΠΈΡΠ΅ΠΌΠΎ ΡΠΊΡΠΈΠΏΡΠ΅
ΠΠΎΠΆΠ΄Π° ΡΠ΅ Π½Π΅ΠΊΠ°Π΄Π° Π΄Π°Π²Π½ΠΎ, Ρ Π΄Π°Π»Π΅ΠΊΠΎΡ, Π΄Π°Π»Π΅ΠΊΠΎΡ Π³Π°Π»Π°ΠΊΡΠΈΡΠΈ, ΠΈΠ·Π³ΡΠ°Π΄ΡΠ° ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΠ° (ΡΠΊΡΡΡΡΡΡΡΠΈ .Π½Π΅Ρ) ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π±ΠΈΠ»Π° ΠΌΡΠΊΠ°. Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠ°Π²ΠΈΡΠΈ, ΡΠ΅ΡΡΠΈΡΠ°ΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π²ΠΈΡΠΈ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Ρ 3 ΡΠΈΠΌΠ°:
dotnet build
dotnet test
dotnet pack
ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΏΠΎΡΡΠΎΡΠ΅ Π½Π΅ΠΊΠ΅ Π½ΠΈΡΠ°Π½ΡΠ΅ Π·Π±ΠΎΠ³ ΠΊΠΎΡΠΈΡ ΡΠ΅ΠΌΠΎ Π΄ΠΎΠ½Π΅ΠΊΠ»Π΅ Π·Π°ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
- ΠΠ΅Π»ΠΈΠΌΠΎ ΠΈΠ·Π΄Π°ΡΠ΅, Π° Π½Π΅ Π΄Π΅Π±ΡΠ³, Π±ΡΠΈΠ»Π΄, ΠΏΠ° Π΄ΠΎΠ΄Π°ΡΠ΅ΠΌΠΎ ΡΠ²Π°ΠΊΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
-c Release - ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ° ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΠΏΡΠΈΠΊΡΠΏΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΎ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊΠΎ Π΄Π° ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΏΠΎΠ²Π΅ΠΆΠ΅ΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡΠΈ ΡΠ° ΡΠ΅ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠ°:
- ΠΠ°ΠΊΠ΅Ρ ΡΡΠ΅Π±Π° Π΄ΠΎΠ΄Π°ΡΠΈ ΡΠ²ΠΈΠΌ ΡΠ΅ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠ°
coverlet.msbuild:dotnet add package coverlet.msbuildΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»Π΅ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° - ΠΠΎΠ΄Π°ΡΡΠ΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π° ΠΏΡΠΎΠ±Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅
/p:CollectCoverage=true - Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ ΠΊΡΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π·Π°Π΄Π°ΡΠΊΠ° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ° Π΄Π° Π±ΠΈΡΠΌΠΎ Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ΅ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡΠΈ (ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π΄ΠΎΠ»Π΅)
- ΠΠ°ΠΊΠ΅Ρ ΡΡΠ΅Π±Π° Π΄ΠΎΠ΄Π°ΡΠΈ ΡΠ²ΠΈΠΌ ΡΠ΅ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠ°
- ΠΠ°Π΄Π° ΠΏΠ°ΠΊΡΡΠ΅ΠΌΠΎ ΠΊΠΎΠ΄ Ρ Π½ΡΠ³Π΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ΅, ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ΠΌΠΎ ΠΈΠ·Π»Π°Π·Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠ΅:
-o .
ΠΡΠΈΠΊΡΠΏΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΎ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°
ΠΠ°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΡΠ΅ΡΡΠΎΠ²Π°, Π¦ΠΎΠ²Π΅ΡΠ»Π΅Ρ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ:
Calculating coverage result...
Generating report 'C:Usersxxxsourcereposmy-projectmyProject.testscoverage.json'
+-------------+--------+--------+--------+
| Module | Line | Branch | Method |
+-------------+--------+--------+--------+
| project 1 | 83,24% | 66,66% | 92,1% |
+-------------+--------+--------+--------+
| project 2 | 87,5% | 50% | 100% |
+-------------+--------+--------+--------+
| project 3 | 100% | 83,33% | 100% |
+-------------+--------+--------+--------+
+---------+--------+--------+--------+
| | Line | Branch | Method |
+---------+--------+--------+--------+
| Total | 84,27% | 65,76% | 92,94% |
+---------+--------+--------+--------+
| Average | 90,24% | 66,66% | 97,36% |
+---------+--------+--------+--------+
ΠΠΈΡΠΠ°Π± Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΡΠ΅Π³ΡΠ»Π°ΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π· Π·Π° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ΅, ΠΊΠΎΡΠ° ΡΠ΅ Π·Π°ΡΠΈΠΌ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠ±ΠΈΡΠΈ Ρ ΠΎΠ±Π»ΠΈΠΊΡ Π·Π½Π°ΡΠΊΠ΅. Π Π΅Π³ΡΠ»Π°ΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π· ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ Ρ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠΈΠΌΠ° Π·Π°Π΄Π°ΡΠΊΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΊΡΡΡΠ° coverage; ΠΈΠ·ΡΠ°Π· ΠΌΠΎΡΠ° Π΄Π° ΡΠ°Π΄ΡΠΆΠΈ Π³ΡΡΠΏΡ Π·Π° ΡΠ½ΠΈΠΌΠ°ΡΠ΅, ΡΠΈΡΠ° ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π±ΠΈΡΠΈ ΠΏΡΠ΅Π½Π΅ΡΠ° Π½Π° Π·Π½Π°ΡΠΊΡ:
test and cover job:
# snip
coverage: /|s*Totals*|s*(d+[,.]d+%)/
ΠΠ²Π΄Π΅ Π΄ΠΎΠ±ΠΈΡΠ°ΠΌΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΈΠ· Π»ΠΈΠ½ΠΈΡΠ΅ ΡΠ° ΡΠΊΡΠΏΠ½ΠΎΠΌ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡΡ Π»ΠΈΠ½ΠΈΡΠ°ΠΌΠ°.
ΠΠ±ΡΠ°Π²ΡΡΡΠ΅ΠΌΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
ΠΠ±Π΅ ΡΠ°Π΄ΡΠ΅ ΡΡ Π΄ΠΎΠ΄Π΅ΡΠ΅Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΠΎΡ ΡΠ°Π·ΠΈ Π³Π°ΡΠΎΠ²ΠΎΠ΄Π° - ΠΏΠΎΡΡΠΎ ΡΡ ΠΌΠΎΠ½ΡΠ°ΠΆΠ° ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ»ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΠΎ Π½Π°Ρ ΡΠ°Π·Π²ΠΎΡ ΡΠ° ΡΠ²Π΅ΡΠΎΠΌ.
ΠΡΠ²ΠΎ, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅ Ρ ΠΈΠ·Π²ΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°:
-
ΠΠΊΠΎ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Π½Π΅ΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π½ΡΠ³Π΅Ρ (
nuget.config), ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²Ρ:dotnet new nugetconfigΠΠ° ΡΡΠ°: Π‘Π»ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΄Π° Π½Π΅ΠΌΠ° ΠΏΡΠΈΡΡΡΠΏ Π·Π° ΠΏΠΈΡΠ°ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΠΌ (ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΌ ΠΈ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈΠΌ) ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΠΌΠ°. ΠΠ° Π½Π΅ Π±ΠΈΡΠΌΠΎ ΡΡ Π²Π°ΡΠΈΠ»ΠΈ Π³ΡΠ΅ΡΠΊΠ΅, ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ΠΌΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ Π½ΠΎΠ²Ρ Π»ΠΎΠΊΠ°Π»Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΈ ΡΠ°Π΄ΠΈΡΠΈ ΡΠ° ΡΠΎΠΌ.
- Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π½ΠΎΠ²ΠΈ ΠΈΠ·Π²ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈ:
nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearTextnameβ Π½Π°Π·ΠΈΠ² Π»ΠΎΠΊΠ°Π»Π½ΠΎΠ³ ΠΈΠ·Π²ΠΎΡΠ°, Π½ΠΈΡΠ΅ Π²Π°ΠΆΠ½ΠΎurlβ Π£Π Π ΠΈΠ·Π²ΠΎΡΠ° ΠΈΠ· ΡΠ°Π·Π΅ βΠΡΠΈΠΏΡΠ΅ΠΌΠ° Π½Π°Π»ΠΎΠ³Π°β, ΠΊΠΎΡΠ°ΠΊ 6organization- Π½Π°Π·ΠΈΠ² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ΅ Ρ ΠΠ·ΡΡΠ΅ ΠΠ΅Π²ΠΠΏΡ-Ρgitlab variableβ Π½Π°Π·ΠΈΠ² ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΡΠ° ΡΠΎΠΊΠ΅Π½ΠΎΠΌ Π·Π° ΠΏΡΠΈΡΡΡΠΏ Π΄ΠΎΠ΄Π°Ρ Ρ ΠΠΈΡΠΠ°Π± (βΠΡΠΈΠΏΡΠ΅ΠΌΠ° Π½Π°Π»ΠΎΠ³Π°β, ΡΡΡ. 11). ΠΠ°ΡΠ°Π²Π½ΠΎ, Ρ ΡΠΎΡΠΌΠ°ΡΡ$variableName-StorePasswordInClearTextβ Ρ Π°ΠΊ Π΄Π° Π·Π°ΠΎΠ±ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΡ ΠΎΠ΄Π±ΠΈΡΠ΅Π½ΠΎΠ³ ΠΏΡΠΈΡΡΡΠΏΠ° ()- Π£ ΡΠ»ΡΡΠ°ΡΡ Π³ΡΠ΅ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ΄Π°ΡΠΈ
-verbosity detailed
- Π¨Π°ΡΠ΅ΠΌΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ·Π²ΠΎΡΡ:
nuget push -source <name> -skipduplicate -apikey <key> *.nupkg- Π‘Π²Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΡΠ°ΡΠ΅ΠΌΠΎ ΠΈΠ· ΡΡΠ΅Π½ΡΡΠ½ΠΎΠ³ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°, Π΄Π°ΠΊΠ»Π΅
*.nupkg. name- ΡΠ° ΠΊΠΎΡΠ°ΠΊΠ° ΠΈΠ·Π½Π°Π΄.key- Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ° Π»ΠΈΠ½ΠΈΡΠ°. Π£ ΠΠ·ΡΡΠ΅ ΠΠ΅Π²ΠΠΏΡ-Ρ, Ρ ΠΏΡΠΎΠ·ΠΎΡΡ ΠΠΎΠ²Π΅ΠΆΠΈ ΡΠ΅ ΡΠ° ΡΠΈΠ΄ΠΎΠΌ, ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΡΠ²Π΅ΠΊaz.-skipduplicateβ Π°ΠΊΠΎ ΠΏΠΎΠΊΡΡΠ°ΡΠ΅ Π΄Π° ΠΏΠΎΡΠ°ΡΠ΅ΡΠ΅ Π²Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ΅ΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π±Π΅Π· ΠΎΠ²ΠΎΠ³ ΠΊΡΡΡΠ°, ΠΈΠ·Π²ΠΎΡ ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠΈ Π³ΡΠ΅ΡΠΊΡ409 Conflict; ΡΠ° ΠΊΡΡΡΠ΅ΠΌ, ΡΠ»Π°ΡΠ΅ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠ΅ΡΠΊΠΎΡΠ΅Π½ΠΎ.
- Π‘Π²Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΡΠ°ΡΠ΅ΠΌΠΎ ΠΈΠ· ΡΡΠ΅Π½ΡΡΠ½ΠΎΠ³ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°, Π΄Π°ΠΊΠ»Π΅
Π‘Π°Π΄Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅:
- ΠΠ° ΠΏΠΎΡΠ΅ΡΠ°ΠΊ, Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ, Ρ Π³Π»Π°Π²Π½ΠΎΡ Π³ΡΠ°Π½ΠΈ, ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΡΡΠ΅ΠΌΠΎ Π΄ΠΎΡΡΠΊ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΠΊΠΎΡΠ΅Π½Π°
docfx initΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ ΠΊΡΡΡΠ½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Π·Π° ΡΠΊΠ»Π°ΠΏΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅. ΠΠ΅ΡΠ°ΡΠ°Π½ ΠΎΠΏΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎΠ³ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° ΠΏΡΠΎΡΠ΅ΠΊΡΠ° .- ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ Π½Π°Π²Π΅ΡΡΠΈ ΠΈΠ·Π»Π°Π·Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ
..public- ΠΠΈΡΠΠ°Π± ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΡΠ·ΠΈΠΌΠ° ΡΠ°Π΄ΡΠΆΠ°Ρ ΡΠ°Π²Π½Π΅ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ Ρ ΠΊΠΎΡΠ΅Π½Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΠΊΠ°ΠΎ ΠΈΠ·Π²ΠΎΡ Π·Π° ΡΡΡΠ°Π½ΠΈΡΠ΅. ΠΠ΅Ρ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈΡΠΈ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΊΠΎΡΠ° ΡΠ΅ ΡΠ³Π½Π΅ΠΆΡΠ΅Π½Π° Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ - Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΠΈΠ·Π»Π°Π· Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½ΠΈΠ²ΠΎ ΠΏΡΡΠ°ΡΠΈ.
- ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ Π½Π°Π²Π΅ΡΡΠΈ ΠΈΠ·Π»Π°Π·Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ
- Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠ΅Π±Π°ΡΠΈΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Ρ ΠΠΈΡΠΠ°Π±.
- ΠΠΎΠ΄Π°ΡΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΠΊ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π°
pages(ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½Π° ΡΠ΅Ρ Π·Π° Π·Π°Π΄Π°ΡΠΊΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ° ΡΠ°ΡΡΠ° Ρ ΠΠΈΡΠΠ°Π± ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠ°):- Π‘ΠΊΡΠΈΠΏΡΠ°:
nuget install docfx.console -version 2.51.0- ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠΈ Π΄ΠΎΡΡΠΊ; ΠΠ΅ΡΠ·ΠΈΡΠ° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅ΡΠ΅Π½Π° Π΄Π° Π±ΠΈ ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠ°Π»ΠΎ Π΄Π° ΡΡ ΠΏΡΡΠ°ΡΠ΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΡΠΏΡΠ°Π²Π½Π΅..docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.jsonβ ΠΏΡΠΈΠΊΡΠΏΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅
- Π§Π²ΠΎΡ Π°ΡΡΠ΅ΡΠ°ΠΊΠ°ΡΠ°:
- Π‘ΠΊΡΠΈΠΏΡΠ°:
pages:
# snip
artifacts:
paths:
- public
ΠΠΈΡΡΠΊΠ° Π΄ΠΈΠ³ΡΠ΅ΡΠΈΡΠ° ΠΎ Π΄ΠΎΡΡΠΊ-Ρ
Π Π°Π½ΠΈΡΠ΅ ΡΠ°ΠΌ, ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ° ΠΏΡΠΎΡΠ΅ΠΊΡΠ°, Π½Π°Π²Π΅ΠΎ ΠΈΠ·Π²ΠΎΡ ΠΊΠΎΠ΄Π° Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΊΠ°ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΡΠ΅ΡΠ΅ΡΠ°. ΠΠ»Π°Π²Π½ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ°ΠΊ ΡΠ΅ ΡΡΠΎ ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΠΊΡΠ΅ΠΈΡΠ° ΠΈ Π·Π° ΡΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΠΊΡΠ΅. ΠΠΊΠΎ ΠΎΠ²ΠΎ Π½ΠΈΡΠ΅ Π½Π΅ΠΎΠΏΡ
ΠΎΠ΄Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ ΠΎΠ²Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½Π° ΡΠ²ΠΎΡ metadata.src:
{
"metadata": [
{
"src": [
{
"src": "../",
"files": [
"**/*.csproj"
],
"exclude":[
"*.tests*/**"
]
}
],
// --- snip ---
},
// --- snip ---
],
// --- snip ---
}
metadata.src.src: "../"β ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅Π΄Π°Π½ Π½ΠΈΠ²ΠΎ Π³ΠΎΡΠ΅ Ρ ΠΎΠ΄Π½ΠΎΡΡ Π½Π° Π»ΠΎΠΊΠ°ΡΠΈΡΡdocfx.json, ΡΠ΅Ρ ΠΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΠ΅ ΡΡΠ°Π±Π»Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π½Π΅ ΡΠ°Π΄ΠΈ Ρ ΠΎΠ±ΡΠ°ΡΡΠΈΠΌΠ°.metadata.src.files: ["**/*.csproj"]β Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΎΠ±ΡΠ°Π·Π°Ρ, ΠΏΡΠΈΠΊΡΠΏΡΠ°ΠΌΠΎ ΡΠ²Π΅ Π¦# ΠΏΡΠΎΡΠ΅ΠΊΡΠ΅ ΠΈΠ· ΡΠ²ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°.metadata.src.exclude: ["*.tests*/**"]- Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΎΠ±ΡΠ°Π·Π°Ρ, ΠΈΡΠΊΡΡΡΠΈΡΠ΅ ΡΠ²Π΅ ΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΡΠ°.testsΠ£ Π½Π°ΡΠ»ΠΎΠ²Ρ
ΠΠ΅ΡΡΠ·Π±ΠΈΡ
ΠΠ²Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ Π·Π° Π±ΡΠΊΠ²Π°Π»Π½ΠΎ ΠΏΠΎΠ»Π° ΡΠ°ΡΠ° ΠΈ ΠΏΠ°Ρ ΡΠΎΡΠΈΡΠ° ΠΊΠ°ΡΠ΅, ΡΡΠΎ ΡΠ΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ Π΄Π° ΡΠ° ΡΠ²Π°ΠΊΠΈΠΌ Π·Π°Ρ ΡΠ΅Π²ΠΎΠΌ Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΡΠ°ΡΠ΅ΡΠ΅ Π³Π° ΠΌΠ°ΡΡΡΠΎΡΡ Π΄Π° Π»ΠΈ ΡΠ΅ ΠΊΠΎΠ΄ Π³ΡΠ°Π΄ΠΈ ΠΈ Π΄Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΠ»Π°Π·Π΅, ΡΠΊΠ»Π°ΠΏΠ°ΡΡΡΠΈ Π½ΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ, Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΈ ΡΠ³Π°ΡΠ°ΡΠ΅ ΠΎΠΊΡ ΠΏΡΠ΅Π»Π΅ΠΏΠΈΠΌ Π±Π΅ΡΠ΅Π²ΠΈΠΌΠ° Ρ ΠΏΡΠΎΡΠ΅ΠΊΡΡ Π ΠΠΠΠΠ.
Π€ΠΈΠ½Π°Π» .Π³ΠΈΡΠ»Π°Π±-ΡΠΈ.ΠΈΠΌΠ»
image: mcr.microsoft.com/dotnet/core/sdk:3.1
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
stages:
- build
- test
- deploy
build job:
stage: build
script:
- dotnet build -c Release
tags:
- windows
only:
- merge_requests
- master
artifacts:
paths:
- your/path/to/binaries
test and cover job:
stage: test
tags:
- windows
script:
- dotnet test -c Release /p:CollectCoverage=true
coverage: /|s*Totals*|s*(d+[,.]d+%)/
only:
- merge_requests
- master
pack and deploy job:
stage: deploy
tags:
- windows
script:
- dotnet pack -c Release -o .
- dotnet new nugetconfig
- nuget sources add -name feedName -source https://pkgs.dev.azure.com/your-organization/_packaging/your-feed/nuget/v3/index.json -username your-organization -password $nugetFeedToken -configfile nuget.config -StorePasswordInClearText
- nuget push -source feedName -skipduplicate -apikey az *.nupkg
only:
- master
pages:
tags:
- windows
stage: deploy
script:
- nuget install docfx.console -version 2.51.0
- $env:path = "$env:path;$($(get-location).Path)"
- .docfx.console.2.51.0toolsdocfx.exe .docfxdocfx.json
artifacts:
paths:
- public
only:
- master
ΠΠΎΠ²ΠΎΡΠ΅ΡΠΈ ΠΎ Π·Π½Π°ΡΠΊΠ°ΠΌΠ°
ΠΠ±ΠΎΠ³ ΡΠΈΡ ΡΠ΅ ΡΠ²Π΅ ΠΏΠΎΡΠ΅Π»ΠΎ!
ΠΠ½Π°ΡΠΊΠ΅ ΡΠ° ΡΡΠ°ΡΡΡΠΈΠΌΠ° ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π΅ Ρ ΠΠΈΡΠΠ°Π±-Ρ Ρ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠΈΠΌΠ° Π¦Π/Π¦Π Ρ Π±Π»ΠΎΠΊΡ ΠΡΠ½ΡΡΠ°Π» ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π°:

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


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


ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ Π»Π΅ΠΏΠΎΡΠ΅
ΠΠ·Π΄Π²Π°ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½Π΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅
ΠΠΎΠΊ ΡΠ°ΠΌ ΠΏΠΈΡΠ°ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΈ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ, Π½Π°ΠΈΡΠ°ΠΎ ΡΠ°ΠΌ Π½Π° Π·Π°Π½ΠΈΠΌΡΠΈΠ²Ρ ΠΠΠΠ ΡΡΠ½ΠΊΡΠΈΡΡ - ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½Π°ΡΠ°.
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ· ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π·Π°Π΄Π°ΡΠΊΠ°, ΡΠ²ΠΈ ΠΎΠ½ΠΈ Π·Π°Ρ
ΡΠ΅Π²Π°ΡΡ ΠΎΠ·Π½Π°ΠΊΡ windows ΠΈΠ· ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ°, Π° ΠΏΠΎΠΊΡΠ΅ΡΡ ΡΠ΅ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΡΠ»Π°ΡΠ° Π·Π°Ρ
ΡΠ΅Π²Π° Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅ ΠΌΠ°ΡΡΠ΅ΡΡ/ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° Π·Π°Ρ
ΡΠ΅Π²Π° Π·Π° ΡΠΏΠ°ΡΠ°ΡΠ΅ (ΠΎΡΠΈΠΌ Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ). Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ ΠΎΠ²ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΈ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ:
.common_tags: &common_tags
tags:
- windows
.common_only: &common_only
only:
- merge_requests
- master
Π ΡΠ°Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΠ±Π°ΡΠΈΠΌΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π½Π°ΡΠ°Π²ΡΠ΅Π½ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Ρ ΠΎΠΏΠΈΡ Π·Π°Π΄Π°ΡΠΊΠ°:
build job:
<<: *common_tags
<<: *common_only
ΠΠ°Π·ΠΈΠ²ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½Π°ΡΠ° ΠΌΠΎΡΠ°ΡΡ Π΄Π° ΠΏΠΎΡΠΈΡΡ ΡΠ°ΡΠΊΠΎΠΌ Π΄Π° ΡΠ΅ Π½Π΅ Π±ΠΈ ΡΡΠΌΠ°ΡΠΈΠ»ΠΈ ΠΊΠ°ΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ.
ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°
ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠ°Π²Π° ΠΏΡΠ΅ΠΊΠΈΠ΄Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅, Π° Ρ ΡΠΈΡ ΠΎΠ²ΠΎΠΌ ΠΎΠ΄ΡΡΡΡΠ²Ρ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΏΡΠΎΡΠ΅ΠΊΡΠ°; ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠ°ΠΎ ΡΠ²ΠΎΡ ΠΠ΅ΡΡΠΈΠΎΠ½, ΠΎΠ½ ΡΠ·ΠΈΠΌΠ° ΡΠ²ΠΎΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΊΠ°ΠΎ Π²Π΅ΡΠ·ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ. ΠΡΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ Π΄Π° Π΄Π° Π±ΠΈΡΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ° Π½ΠΎΠ²ΠΎΠΌ Π²Π΅ΡΠ·ΠΈΡΠΎΠΌ, ΠΌΠΎΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ Π΄Π° Π³Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ Π΄Π° Π³Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΊΠ°ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅.
Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ ΡΠΎΡ ΡΠ΅Π΄Π½Ρ ΠΆΠ΅ΡΡ β Π½Π΅ΠΊΠ° Π½Π°ΡΠ½ΠΈΠΆΠ° Π΄Π²Π° Π±ΡΠΎΡΠ° Ρ Π²Π΅ΡΠ·ΠΈΡΠΈ Π±ΡΠ΄Ρ Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ Π΄Π°ΡΡΠΌ ΠΈΠ·ΡΠ°Π΄Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Π΄ΠΎΠ΄Π°ΡΠΌΠΎ ΠΏΡΠ΅Π»Π΅Π°ΡΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ΅. ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ ΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Ρ ΠΏΡΠΎΡΠ΅ΠΊΡΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠΈ ΠΈΡ ΠΏΡΠ΅ ΡΠ²Π°ΠΊΠΎΠ³ ΡΠ»Π°ΡΠ° β Π°Π»ΠΈ ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°Π΄ΠΈΡΠ΅ ΠΈ Ρ ΡΠΎΠΊΡ, ΠΏΡΠΈΠΊΡΠΏΡΠ°ΡΡΡΠΈ Π²Π΅ΡΠ·ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΡΡΡΠΈ ΡΠ΅ ΠΊΡΠΎΠ· Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌΠΎ Π΄Π° Π°ΠΊΠΎ ΠΏΠΎΡΡΠΊΠ° ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ° ΡΠ°Π΄ΡΠΆΠΈ Π»ΠΈΠ½ΠΈΡΡ ΠΊΠ°ΠΎ release (v./ver./version) <version number> (rev./revision <revision>)?, ΠΎΠ½Π΄Π° ΡΠ΅ΠΌΠΎ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ Π²Π΅ΡΠ·ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ· ΠΎΠ²ΠΎΠ³ ΡΠ΅Π΄Π°, Π΄ΠΎΠΏΡΠ½ΠΈΡΠΈ ΡΠ΅ ΡΡΠ΅Π½ΡΡΠ½ΠΈΠΌ Π΄Π°ΡΡΠΌΠΎΠΌ ΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠΈ ΡΠ΅ ΠΊΠ°ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ dotnet pack. Π£ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΡ Π»ΠΈΠ½ΠΈΡΠ΅, ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ΡΠ΅ΠΌΠΎ ΡΠ°ΡΡΠ°Π²ΠΈΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ.
Π‘Π»Π΅Π΄Π΅ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ΡΠ°Π²Π° ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
# ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ
$rx = "releases+(v.?|ver.?|version)s*(?<maj>d+)(?<min>.d+)?(?<rel>.d+)?s*((rev.?|revision)?s+(?<rev>[a-zA-Z0-9-_]+))?"
# ΠΈΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
GitLab'ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
$found = $env:CI_COMMIT_MESSAGE -match $rx
# ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Π½Π΅Ρ - Π²ΡΡ
ΠΎΠ΄ΠΈΠΌ
if (!$found) { Write-Output "no release info found, aborting"; exit }
# ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΌΠ°ΠΆΠΎΡΠ½ΡΡ ΠΈ ΠΌΠΈΠ½ΠΎΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΈ
$maj = $matches['maj']
$min = $matches['min']
# Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π»ΠΈΠ·Π° - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ, ΠΈΠ½Π°ΡΠ΅ - ΡΠ΅ΠΊΡΡΠΈΠΉ Π³ΠΎΠ΄
if ($matches.ContainsKey('rel')) { $rel = $matches['rel'] } else { $rel = ".$(get-date -format "yyyy")" }
# Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ - ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΌΠ΅ΡΡΡ ΠΈ Π΄Π΅Π½Ρ
$bld = $(get-date -format "MMdd")
# Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΏΡΠ΅ΡΠ΅Π»ΠΈΠ·Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ - Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡ
Π² Π²Π΅ΡΡΠΈΡ
if ($matches.ContainsKey('rev')) { $rev = "-$($matches['rev'])" } else { $rev = '' }
# ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π΅Π΄ΠΈΠ½ΡΡ ΡΡΡΠΎΠΊΡ Π²Π΅ΡΡΠΈΠΈ
$version = "$maj$min$rel.$bld$rev"
# ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ
dotnet pack -c Release -o . /p:Version=$version
ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ΅ Π·Π°Π΄Π°ΡΠΊΡ pack and deploy job ΠΈ ΡΡΡΠΈΠΊΡΠ½ΠΎ ΠΏΠΎΡΠΌΠ°ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Π°ΠΊΠΎ ΠΏΠΎΡΡΠΎΡΠΈ Π΄Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Ρ ΠΏΠΎΡΡΡΠΈ ΡΡΠ΅Π·ΠΈΠ²Π°ΡΠ°.
Π£ΠΊΡΠΏΠ½ΠΎ
ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠΌΠΎ ΠΏΠΎΡΡΠΎΡΠΈΠ»ΠΈ ΠΎΠΊΠΎ ΠΏΠΎΠ»Π° ΡΠ°ΡΠ° Π΄ΠΎ ΡΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΠΏΠΎΠ²Π΅ΡΡΡ Π΅Π»Π»-Ρ ΠΈ, ΠΌΠΎΠ³ΡΡΠ΅, Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΈΡ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ°, Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΡΠΌΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π·Π° Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡ ΡΡΡΠΈΠ½ΡΠΊΠΈΡ Π·Π°Π΄Π°ΡΠ°ΠΊΠ°.
ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΠΈΡΠΠ°Π± Π¦Π/Π¦Π ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΈΠΌΠ½ΠΈΡΠΈ ΠΈ Π²ΠΈΡΠ΅ΡΡΡΡΠΊΠΈ Π½Π΅Π³ΠΎ ΡΡΠΎ Π±ΠΈ ΠΌΠΎΠ³Π»ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ Π½Π°ΠΊΠΎΠ½ ΡΠΈΡΠ°ΡΠ° ΠΎΠ²ΠΎΠ³ Π²ΠΎΠ΄ΠΈΡΠ° - . ΠΠΌΠ° ΡΠ°ΠΊ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°ΡΡΡΠΈ
Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΎΡΠΊΡΠΈΠ²Π°, ΠΏΡΠ°Π²ΠΈ, ΡΠ΅ΡΡΠΈΡΠ°, ΠΏΡΠΈΠΌΠ΅ΡΡΡΠ΅ ΠΈ Π½Π°Π΄Π³Π»Π΅Π΄Π° Π²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
Π‘Π°Π΄Π° ΡΡ ΠΏΠ»Π°Π½ΠΎΠ²ΠΈ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Ρ ΠΠ·ΡΡΠ΅, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΡΠ»ΡΠΌΠΈ ΠΈ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π΅ΡΠ΅ΠΊΡΡΡΡΡΠΈ ΡΠΈΡΠ½ΠΎ ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅, ΡΡΠΎ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΠΊΡΠΈΠ²Π΅Π½ΠΎ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΡΠ»Π°Π½ΠΊΡ.
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ
