Π‘ΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Π½Π° PyPI (Python Package Index) Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Python ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π½ΠΎΠ² Π±Π΅Π·Π±Π΅Π΄Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΡΠΈΠΊΡΠ½ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΈ ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ API Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ GitHub Actions). ΠΠΎΠ²ΠΈΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π° βΠΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΈ ΠΈΠ·Π΄Π°Π²Π°ΡΠΈβ ΠΈ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° Π³ΠΎ ΡΠ΅ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΡΠΎ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ°Π»ΠΈΡΠΈΠΎΠ·Π½ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° ΡΡΠΎ ΡΠ΅ Π²ΡΡΠ°Ρ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈΡΠ°ΡΠ΅ Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ΠΎΠ΄Π½Π°ΠΏΡΠ΅Π΄ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ ΠΊΠΎΠΈ ΠΏΠ°ΡΠ°Π°Ρ Π²ΠΎ ΡΠ°ΡΠ΅ΡΠ΅ Π½Π° Π½Π°ΠΏΠ°ΡΠ°ΡΠΈΡΠ΅.
ΠΠΎΠ²ΠΈΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΡ OpenID Connect (OIDC), ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ°Π·ΠΌΠ΅Π½Π΅ΡΠΈ ΠΏΠΎΠΌΠ΅ΡΡ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ PyPI Π·Π° Π΄Π° ΡΠ° ΠΏΠΎΡΠ²ΡΠ΄ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΎ Π½Π°ΡΠ°Π²ΡΠ²Π°ΡΠ΅/Π»ΠΎΠ·ΠΈΠ½ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ°ΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ ΠΏΠΎΡΡΠΎΡΠ°Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ API. ΡΠΎΠΊΠ΅Π½ΠΈ. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Trusted Publishers Π²Π΅ΡΠ΅ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π·Π° ΡΠ°ΠΊΡΠ²Π°ΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π»Π°Π½ΡΠΈΡΠ°Π½ΠΈ Π²ΠΎ GitHub Actions. ΠΠΎ ΠΈΠ΄Π½ΠΈΠ½Π° ΡΠ΅ ΠΎΡΠ΅ΠΊΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π½Π° Trusted Publishers Π·Π° Π΄ΡΡΠ³ΠΈ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
ΠΠ΄ΡΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΏΠΎΡΡΠ°Π²Π°Ρ Π΄ΠΎΠ²Π΅ΡΠ±Π° Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° PyPI Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π΄ΠΎ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠΈ Π½Π° OpenID (IdP, OpenID Connect Identity Provider), ΠΊΠΎΠΈ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΡΡΠ»ΡΠ³Π° ΡΠ΅ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π΄Π° Π±Π°ΡΠ° ΠΊΡΠ°ΡΠΊΠΎΡΡΠ°ΡΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ ΠΎΠ΄ PyPI. ΠΠ΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ OpenID Connect ΡΠΎΠΊΠ΅Π½ΠΈ ΡΠ° ΠΏΠΎΡΠ²ΡΠ΄ΡΠ²Π°Π°Ρ Π²ΡΡΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠΎΡ, ΡΡΠΎ ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° PyPI Π΄Π° ΠΈΠ·Π²ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΊΠ°ΠΊΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΠΏΠΎΡΠ²ΡΠ΄ΠΈ Π΄Π΅ΠΊΠ° ΠΎΠ±ΡΠ°Π²Π΅Π½ΠΈΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅. Π’ΠΎΠΊΠ΅Π½ΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π°Ρ, ΡΠ΅ Π²ΡΠ·Π°Π½ΠΈ Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ API ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΈΡΡΠ΅ΠΊΡΠ²Π°Π°Ρ ΠΏΠΎ ΠΊΡΠ°ΡΠΎΠΊ Π²Π΅ΠΊ Π½Π° ΡΡΠ°Π΅ΡΠ΅.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ°ΡΠΎΡ ΠΎΠ΄ Sonatype ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° 2023 ΠΌΠ°Π»ΠΈΡΠΈΠΎΠ·Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΡ PyPI Π²ΠΎ ΠΌΠ°ΡΡ 6933 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠΊΡΠΏΠ½ΠΎ, ΠΎΠ΄ 2019 Π³ΠΎΠ΄ΠΈΠ½Π°, Π±ΡΠΎΡΠΎΡ Π½Π° ΠΌΠ°Π»ΠΈΡΠΈΠΎΠ·Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π½ΠΈ Π²ΠΎ PyPI Π½Π°Π΄ΠΌΠΈΠ½Π° 115 ΠΈΠ»ΡΠ°Π΄ΠΈ. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΌΠ°Π»ΠΈΡΠΈΠΎΠ·Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠΏΡΠ»Π°ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠ°ΡΠΏΠΎΡΠΊΠ²Π°ΡΠΈΡΠ°ΡΠ΅ (Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈ ΠΈΠΌΠΈΡΠ° ΠΊΠΎΠΈ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°Π°Ρ Π²ΠΎ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ Π·Π½Π°ΡΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ, djangoo Π½Π°ΠΌΠ΅ΡΡΠΎ django, pyhton Π½Π°ΠΌΠ΅ΡΡΠΎ python ΠΈΡΠ½.) - Π½Π°ΠΏΠ°ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠΏΠΈΡΠ°Π°Ρ Π½Π° Π½Π΅Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΊΠΎΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»Π΅ ΠΏΠ΅ΡΠ°ΡΠ½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠΎΡ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Π» ΡΠ°Π·Π»ΠΈΠΊΠΈ Π²ΠΎ ΠΈΠΌΠ΅ΡΠΎ ΠΏΡΠΈ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ. ΠΠ»ΠΎΠ½Π°ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π΄Π΅ΡΡΡΠ²Π° ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠ²Π΅Π΄ΡΠ²Π°Π°Ρ Π½Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΏΡΠΎΠ½Π°ΡΠ΄Π΅Π½ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΠΈΠΏΠΈΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΠΎ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΈ, ΠΊΠ»ΡΡΠ΅Π²ΠΈ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΊΡΠΈΠΏΡΠΎΠΏΠ°ΡΠΈΡΠ½ΠΈΡΠΈ, ΡΠΎΠΊΠ΅Π½ΠΈ, ΠΊΠΎΠ»Π°ΡΠΈΡΠ° Π·Π° ΡΠ΅ΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠ·Π²ΠΎΡ: opennet.ru