Версионирование и Build
ΠΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π½ΡΠΆΠ½Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ release, Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ build ΠΈ ΡΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡΠΌΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ°ΠΌΠΈ.
Lino ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ SemVer-Π²Π΅ΡΡΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ container images Π΄Π»Ρ release.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎΠ΅ΠΊΡΡ Lino ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ Π½Π΅ Π²ΡΠ½ΡΠΆΠ΄Π°Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ release Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π² ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°Ρ , Π³Π΄Π΅ APIs, workers, web apps, migrations ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠ°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΡΠΎΡΡΠΎΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ version.txt. ΠΠ»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠ°ΠΉΠ» Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² src/Services/<ServiceName>/version.txt. ΠΠ»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ½ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² src/WebApps/<WebAppName>/version.txt. Lino CLI ΡΠΈΡΠ°Π΅Ρ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ°, ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
builds.
ΠΡΠ°Π²ΠΈΠ»ΠΎ SemVer, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Lino
MAJOR.MINOR.PATCH
- PATCH ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ.
- MINOR ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΡΠ΅Π΄Π½Π΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ patch Π² Π½ΠΎΠ»Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎΠ²ΡΡ endpoints, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ Π°Π΄Π΄ΠΈΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
- MAJOR ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ minor ΠΈ patch Π² Π½ΠΎΠ»Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΅ΡΠ»ΠΈ API contract ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΡ: 1.0.0 ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ, 1.0.1 ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, 1.1.0 Π½ΠΎΠ²ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ endpoints Π±Π΅Π· breaking changes, Π° 2.0.0 release Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΡΠΎΡΠΌΠΎΡΡ ΡΠ΅ΠΊΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ lino version list, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Π²ΡΠ΅Ρ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
lino version list
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ lino version show, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ΅Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ, ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΡ ΠΈΠ· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° version.txt.
lino version show
Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ lino version bump, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²ΠΈΡ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ release:
lino version bump
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΠΊΠΎΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Prompt ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΈΠΏ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ: patch, minor ΠΈΠ»ΠΈ major.
- ΠΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΠΎΡΠ²Π΅ΡΡ. Lino ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
version.txtΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΠΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Ρ release-ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ CI/CD pipelines. ΠΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π΄Π΅ΡΠ°Π»ΡΡ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π΅ΠΌΡΠΉ Π°ΡΡΠ΅ΡΠ°ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ release. Database migration ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ API ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ contract notes, Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠΎΠ±ΡΡΠΈΡΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΡΠ΄ΠΎΠΌ Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π΅ΠΌΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π½ΡΠΌΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π΄Π»Ρ Π°ΡΠ΄ΠΈΡΠ°.
ΠΠ΅ΡΠ΅Π΄ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ major ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ APIs, event contracts, migrations, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ΅ΡΠ΅Π΄ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ minor ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π΄Π΄ΠΈΡΠΈΠ²Π½ΡΠΌ. ΠΠ΅ΡΠ΅Π΄ patch ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ ΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Build ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ
Π Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ dotnet build ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ lino build Π΄ΡΡΠ³Π°Ρ ΡΠ΅Π»Ρ: ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ release, ΠΏΡΠ±Π»ΠΈΠΊΡΡ ΠΈΡ
Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Release Ρ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΌ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ container .NET.
Π’Π°ΠΊΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ dotnet build Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΡΠΎΠ±Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°Π½ΡΡΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ lino build, ΠΊΠΎΠ³Π΄Π° Π°ΡΡΠ΅ΡΠ°ΠΊΡ Π³ΠΎΡΠΎΠ² ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ, ΡΡΠ°ΡΡ container image ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² registry ΠΈΠ»ΠΈ deploy pipeline.
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ lino build
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΠΊΠΎΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Lino:
lino build
CLI ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΎΠΉΡΠΈ Π² build, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π²Π΅ΡΡΠΈΡ ΠΈΠ»ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π΅Π΅. ΠΠΎΠ³Π΄Π° Π²ΡΠ±ΡΠ°Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅, Lino ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ version.txt ΠΏΠ΅ΡΠ΅Π΄ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ build-ΠΊΠΎΠΌΠ°Π½Π΄.
Backend Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ dotnet publish Ρ -c Release, -p:PublishProfile=DefaultContainer, -p:ContainerRepository, -p:ContainerImageTag ΠΈ -p:ContainerLabelVersion. Tag ΠΎΠ±ΡΠ°Π·Π° ΠΈ label Π²Π΅ΡΡΠΈΠΈ container ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SemVer, Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ΅ Π΄Π»Ρ release.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ container image Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ SemVer-Π²Π΅ΡΡΠΈΠΈ ΠΈ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠΌΡ, tag ΠΈ metadata.
Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° repositories
Lino Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠΌΠ΅Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠ΅ container repositories:
- ΠΡΠΎΡΡΠ°Ρ service API:
<project-name>/services/<service-name>-api:1.2.3 - ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ service host:
<project-name>/services/<service-name>-host:1.2.3 - ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Blazor:
<project-name>/webapps/<webapp-name>:1.2.3
ΠΡΠ° ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ service APIs, ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ hosts ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² registry, ΡΠΎΡ ΡΠ°Π½ΡΡ release-Π²Π΅ΡΡΠΈΡ Π² tag. Π¨Π°Π±Π»ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΠΌΠΈ, CI/CD scripts ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ.
ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π² registries
Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ images ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π² registry, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π²Π°ΡΠ΅ΠΉ deploy-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ:
- Docker Hub
- GitHub Container Registry
- AWS ECR
- Azure Container Registry
- Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ OCI-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ registry.
ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ deploy Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
version tags, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 1.2.3, Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ»Π°Π²Π°ΡΡΠΈΡ
tags. ΠΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ rollback, Π°ΡΠ΄ΠΈΡ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ±ΡΠ°Π½ΠΎ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ release-ΠΏΡΠΎΡΠ΅ΡΡ
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ
dotnet build, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ. - ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
lino version listΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ. - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
lino buildΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ patch, minor ΠΈΠ»ΠΈ major. - ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ container images Π² registry, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Docker Hub, GitHub Container Registry, AWS ECR, Azure Container Registry ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ registry.
- Π Π°Π·Π²Π΅ΡΡΡΠ²Π°ΠΉΡΠ΅, ΡΡΡΠ»Π°ΡΡΡ Π½Π° ΡΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ version tags, ΠΈ Π΄Π΅ΡΠΆΠΈΡΠ΅ changelog, migrations ΠΈ rollback plan ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ release.
ΠΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΠΉΡΠ΅ secrets, production connection strings ΠΈΠ»ΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ images. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, user secrets Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° secrets Π² CI/CD ΠΈΠ»ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ secrets deploy-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
Π ΡΡΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ build ΠΎΡΡΠ°ΡΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ: ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SemVer, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ container tag ΠΈ ΠΊΠ°ΠΊ release metadata, ΡΠ»ΡΡΡΠ°Ρ ΡΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, migrations, API contracts, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡΠΌΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ°ΠΌΠΈ.
