Π ΠΏΡΠΎΡΠ»ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ π Π Π°Π±ΠΎΡΠ°Π΅ΠΌ Π½ΠΎΠ½-ΡΡΠΎΠΏ: Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (CI/CD) ΠΌΡ ΠΎΠ±Π·ΠΎΡΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ CI\CD. ΠΠ°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠΈΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° β ΡΡΠΎ CI (Continuous Deployment). Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΡΠ΅Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΊΠ΅ΠΉΡ.
Π ΠΎΠ»Ρ CI Π² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΡΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡ CI.
Π¦Π΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
- Π€ΠΈΠΊΡΠ°ΡΠΈΡ Π²ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Π΅ΡΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ.
- ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² (ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Ρ. Π΄.).
Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β ΡΡΠΎ Π²ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ unit-ΡΠ΅ΡΡΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎ Π²ΠΈΠ½Π΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π ΠΈΡΠΎΠ³Π΅ Π²Π½Π΅ΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΡ ΠΈ Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡΡ Π½Π΅ ΠΏΡΠΎΡΠ»ΠΈ, Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΈ. Π ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ ΠΈ Π²ΡΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ CI Π² GitHub
ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π‘ΠΠ (ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π΄Π°, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ΅ΡΡΡ. ΠΡΠ΅ ΡΡΠΈ Π·Π°Π΄Π°ΡΠΈ (ΠΈ Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ) ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡ GitHub.
ΠΠ΅ΠΉΡ: ΠΠ°ΡΡΡΠΎΠΈΡΡ CI Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΡΠ΅ΡΠ²ΠΈΡΠ° GitHub Π΄Π»Ρ API ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Python.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ°ΠΊ Π·Π°Π»ΠΈΡΡ Π΅Π³ΠΎ Π½Π° git Π½Π΅ Π±ΡΠ΄Ρ. Π’Π΅ΠΌΠ° ΡΡΠ°ΡΡΠΈ ΠΎ Π΄ΡΡΠ³ΠΎΠΌ.
ΠΠΌΠ΅Π΅ΠΌ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Git ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²:
Π¦Π²Π΅ΡΠΎΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΡΠ°ΠΉΠ»Ρ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π Π°Π·Π±Π΅ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ».
ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ» Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (API ΡΠ΅ΡΠ²Π΅ΡΠ°). Π‘Π΅ΡΠ²Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ endpoint. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ /
ΠΈ check
. Endpoint /check
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ².
ΠΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠΎΠ΄ get_current_username
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠ½Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠ°Π»Π΅Π΅ Ρ Π½Π°Ρ ΠΈΠ΄ΡΡ ΡΠ΅ΡΡΡΠ΅ endpoint
:
- @app.get(β/β)
- @app.get(β/testβ)
- @app.get(β/itemsβ)
- @app.get(β/checkβ)
Endpoint β ΡΡΠΎ ΡΠΎΡΠΊΠΈ Π²Ρ
ΠΎΠ΄Π° Π΄Π»Ρ API ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π±ΡΠ΄ΡΡ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ, ΠΌΡ ΠΏΠΎΡΡΡΡΠΈΠΌΡΡ /check
ΠΈ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° 200
, Π·Π½Π°ΡΠΈΡ Π²ΡΠ΅ Ρ
ΠΎΡΠΎΡΠΎ ΠΈ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Ρ Π½Π°Ρ ΡΠ°ΠΉΠ» requirements.txt
:
Π’ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΌΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π·Π°Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠΌΡ ΠΈ Π²Π΅ΡΡΠΈΡ.
ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅. Π Π½Π΅ΠΌ ΠΏΡΠΎΠΏΠΈΡΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π²ΡΠΎΡΡΠΌ ΡΠ°Π³ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ°ΠΉΠ» test_hello.py
β ΡΡΠΎ Π½Π°ΡΠΈ ΡΠ΅ΡΡΡ.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΡΠ΅Π· get ΡΡΡΡΠΈΠΌΡΡ Π½Π° ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ /check
ΠΈ Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° 200
, ΡΠΎ Π²ΡΠ΅ ΠΎΠΊ β Π½Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ. ΠΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡΡΠΈΠΌ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Π ΠΈΡΠΎΠ³Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΉΠ» Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ°ΠΉΠ» Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, ΡΠ°ΠΉΠ» Ρ ΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ Makefile
Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠΎΠ³ΠΎ Ρ
ΠΎΠ·ΡΠΉΡΡΠ²Π°. ΠΠΎΠΏΡΠΎΡ Π½Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ: ΡΠ΅Π³ΠΎ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ?
ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΡ
Π΄ΠΎΠ±ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ CI (ΡΠ°ΠΌ Π±ΡΠ»ΠΎ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°ΠΏΡΡΠΊ), ΡΠΎ Π²ΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ PipeLine
Π² ΡΠ°ΠΉΠ»Π΅ main.yaml
.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠΎΡΠ΅Π½Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π² Π½Π΅ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ .github/workflows/
.
ΠΠ° ΡΠ·ΡΠΊΠ΅ YAML ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ: Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π² Π²Π΅ΡΠΊΠ΅ main
, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Job
c ΡΠ°Π³Π°ΠΌΠΈ 1-3.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Python 3.10.1
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· Π±Π»ΠΎΠΊΠ°
install
ΡΠ°ΠΉΠ»Π°Makefile
. - ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· Π±Π»ΠΎΠΊΠ°
test
ΡΠ°ΠΉΠ»Π°Makefile
.
ΠΡΠ»ΠΈ Π½Π° Π²ΡΠ΅ΠΌ ΡΡΠΎΠΌ Π΄Π»ΠΈΠ½Π½ΠΎΠΌ ΠΏΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ PipeLine
Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠΎ Ρ Π½Π°Ρ ΡΠΎΠ±Π΅ΡΠ΅ΡΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΡΡΡΡΡ ΡΠ΅ΡΡΡ. ΠΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Action Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ²Π°Π»ΠΈΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ β ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π³Π°
ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ, ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ β ΠΊΠΎΠ΄ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ ΠΏΡΠΎΠ΄. ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊ Π²ΡΠ΅ΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Π½Π°Ρ PipeLine) Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ