GitHub ΡΠ°Π·ΡΠ»Π΅Π΄Π²Π° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ Π°ΡΠ°ΠΊΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΠΈΡΠ΅ ΡΠ° ΡΡΠΏΠ΅Π»ΠΈ Π΄Π° ΠΊΠΎΠΏΠ°ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠ° Π² ΠΎΠ±Π»Π°ΡΠ½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π½Π° GitHub, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° GitHub Actions, Π·Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄. ΠΡΡΠ²ΠΈΡΠ΅ ΠΎΠΏΠΈΡΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° GitHub Actions Π·Π° ΠΊΠΎΠΏΠ°Π΅Π½Π΅ Π΄Π°ΡΠΈΡΠ°Ρ ΠΎΡ Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°.
GitHub Actions ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π΄Π° ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² GitHub. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ GitHub Actions, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΏΡΠΈ Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠ° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΊΠΎΠΏΠ°Π΅Π½Π΅, Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° GitHub Actions, Π΄ΠΎΠ±Π°Π²ΡΡ Π½ΠΎΠ²ΠΈ GitHub Actions ΠΊΡΠΌ ΡΠ²ΠΎΠ΅ΡΠΎ ΠΊΠΎΠΏΠΈΠ΅ ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ ΠΊΡΠΌ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΉΠΊΠΈ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π½Π° GitHub Actions Ρ Π½ΠΎΠ²ΠΈΡΠ΅ β.github/workflows /ci.ymlβ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ.
ΠΠ»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠΈΡΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΠΎΡ Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ Π½Π° GitHub Actions, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ 72 ΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΊΡΡΠ²Π° ΠΏΠΎΡΠ°Π΄ΠΈ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅, ΠΏΡΠΎΠ²Π°Π»Ρ ΡΠ΅ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ. ΠΠ° Π΄Π° Π°ΡΠ°ΠΊΡΠ²Π°, Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ - ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠΈΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ ΡΠ°ΠΌΠΎ Π΄Π° Π·Π°ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΈ Π΄Π° ΡΠΏΡΠ°Ρ Π²Π΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈΡΠ΅ GitHub Actions.
Π ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠ° ci.yml, Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΎΡ Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ βrunβ ΡΡΠ΄ΡΡΠΆΠ° ΠΎΠ±ΡΡΡΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄ (eval β$(echo 'YXB0IHVwZGF0ZSAtβ¦' | base64 -dβ), ΠΊΠΎΠΉΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ, ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π·Π° ΠΊΠΎΠΏΠ°Π΅Π½Π΅. Π ΠΏΡΡΠ²ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ° ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΡΠΎΠ³ΡΠ°ΠΌΠ°, Π½Π°ΡΠ΅ΡΠ΅Π½Π° npm.exe, Π±Π΅ΡΠ΅ ΠΊΠ°ΡΠ΅Π½Π° Π² GitHub ΠΈ GitLab ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π° Π² ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ELF ΡΠ°ΠΉΠ» Π·Π° Alpine Linux (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.) ΠΠΎ-Π½ΠΎΠ²ΠΈ ΡΠΎΡΠΌΠΈ Π½Π° Π°ΡΠ°ΠΊΠ° ΠΈΠ·ΡΠ΅Π³Π»ΡΡ ΠΊΠΎΠ΄Π° Π½Π° ΠΎΠ±Ρ XMRig ΠΌΠΈΠ½ΡΠΎΡ ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° Ρ ΠΏΠΎΡΡΡΠ΅ΠΉΠ» Π·Π° Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ ΠΈ ΡΡΡΠ²ΡΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru