ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡΠΈΠ² Habr ΡΠ΄ΠΈΠ²ΠΈΠ»ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ ΡΡΠ°ΡΠ΅ΠΉ Π½Π° ΡΠ΅ΠΌΡ (beta-)ΡΠΈΡΠΈ GitHub’Π° β Actions.
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΠ°ΠΊΡΡ Π½Π΅Π΄ΠΎΡΠΊΠ°Π·Π°Π½Π½ΠΎΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΅ΡΠ΅ Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΡΡΡΡ ΠΈ «beta». ΠΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π±Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ . ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡΠ΅Π΄ΠΈΡΡΠΎΡΠΈΡ
ΠΡΠ»ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, ΡΠΎ ΡΡΠΎΠΈΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠΎΠΈΡΠΊΠ° Π±ΡΡΡΡΠΎΠ³ΠΎ, ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ, Π»Π΅Π³ΠΊΠΎΠ³ΠΎ ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° «ΠΠ±ΠΎ ΠΌΠ½Π΅» ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΠΎΡΠ΅ΠΉ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ.
ΠΡΠΎ-ΡΠΎ Π½Π° Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Ρ ΠΎΡΡΠΈΠ½Π³, ΠΊΡΠΎ-ΡΠΎ ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, Π° ΡΠ΅ΠΌ, ΠΊΠΎΠΌΡ Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΈ ΠΎΠΏΠ»Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ β ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ Π΄ΡΡΠ΅ Π²ΡΠ³ΡΡΠ·ΠΊΠ° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°ΠΉΡΠΎΠ² Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π±Π»Π°Π³ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ Π½Π° GitHub, ΠΈ Π½Π° GitLab.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΎ Π»ΠΈΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ.
ΠΠΎΠΉ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ Π±ΡΠ» Π² ΠΏΠΎΠ»ΡΠ·Ρ GitHub Pages.
ΠΡΠΎ Pages
ΠΡΠΎ Π½Π΅ Π² ΠΊΡΡΡΠ΅, gh-pages
β ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ½ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ, Π° ΠΊΡΠΎΠΌΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΡΡ. ΠΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ GitHubβΠΎΠΌ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
ΠΠ»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΠΊΠ° gh-pages
, Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ username.github.io
Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΡΠ°ΠΉΡΠ° Π² master
Π²Π΅ΡΠΊΠ΅.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ CNAME
c Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΌΠ΅Π½Π° ΠΈ Π½Π°ΡΡΡΠΎΠΈΠ² DNS ΡΠ²ΠΎΠ΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ° GitHub.
Π£Π²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠ°ΡΠ΅ΠΉ ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΡ Π·Π΄Π΅ΡΡ Π½Π°ΠΉΠ΄Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π»ΡΡΠ΅ Π½Π΅ ΠΎΠ± ΡΡΠΎΠΌ.
ΠΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΡΡΠΎΡΠ»Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΡΠΈΠ½ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΡΡΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΠΎΠΏΡΠΎΡΡΡ, Π΅ΡΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠ°ΠΉΡΠ°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ±ΠΈΠ»ΠΈΠ΅
ΠΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ, ΡΠΎ Π»ΠΈ Π² Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅ΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅, ΡΠΎ Π»ΠΈ Π² ΡΠ°ΡΡΡΠ»ΠΊΠ΅ ΠΎΡ GitHub Π±ΡΠ»ΠΎ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ CI/CD, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ.
ΠΡΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ°Π½ΠΈΡ
ΠΠ΅ Π±ΡΠ΄Ρ Π·Π°ΠΎΡΡΡΡΡΡ Π½Π° ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΠΏΡΠ½ΠΊΡΠ΅ ΠΎΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΡΡΡ ΠΏΠ°ΡΠΎΠΉ ΡΠ΅Π·ΠΈΡΠΎΠ² ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΡΠ΅Π» Π·Π° Π²ΡΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ :
1) Π²ΡΠ±ΠΈΡΠ°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΡΠΎΠΈΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ΅Π½. Π ΡΡΠΎΠΉ ΠΈΠ΄Π΅Π΅ Ρ ΠΏΡΠΈΡΠ΅Π» Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΌΠΎΠΌΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΡΠ°, ΠΏΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΡΡΡΠ»ΠΈ Π΄Π»Ρ Π΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΠΎΠ²ΠΎΠ΄ ΡΠ°ΠΌΠΎΠΌΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π² Π²ΠΈΠ΄Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²;
2) Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΡΠΎ Π»ΠΈΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ, Π½ΠΎ ΡΡΠΎΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° GitHub Pages Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅
ΠΠΎΠΉ Π²ΡΠ±ΠΎΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠ½ΠΊΡΠ΅.
__
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ»Π°Π²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° Π±ΡΠ΄Π΅Ρ β Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΊΡΠΈΠΏΡ (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ· ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. Π ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π‘ΠΊΡΠΈΠΏΡ ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ:
- GitHub Actions;
- Python 3.7;
- Pelican;
- Git;
- GitHub Pages.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎΠ³ΠΎ, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΏΠΈΡΡΡΡΡ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ Actions ΡΡΠ°Π»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΡΡΠΎ ΡΡΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΡΠ°ΠΌΠΈΠΌ Github
ΠΠ°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Actions-ΡΠΊΡΠΈΠΏΡΠ° Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ .github
ΠΈ Π΅Π΅ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ΅ workflows
. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Π²ΡΡΡΠ½ΡΡ, ΡΠ°ΠΊ ΠΈ ΠΈΠ· ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Actions Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΡΡΠΎΠ³ΠΎ Π±Π»Π°Π½ΠΊΠ° ΡΠΊΡΠΈΠΏΡΠ°
ΠΠΎΡΠΎΡΠΊΠΎ ΠΎΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΡ Π±Π»Π°Π½ΠΊ
name: CI # Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ°: Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Actions
on: [push] # Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ
jobs: # ΡΠΎΠ±ΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ
build: # ΡΠ±ΠΎΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ..
runs-on: ubuntu-latest # ..Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°
steps: # ΡΠ°Π³ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΠ±ΡΠ°Π·Π°
- uses: actions/checkout@v1 # ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π² ΡΠ°ΠΌΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ
- name: Run a one-line script # ΠΈΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½ΠΎΠΌΠ΅Ρ 1
run: echo Hello, world! # ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ Π½ΠΎΠΌΠ΅Ρ 1 (bash-ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΠΏΠΈΡΠ°Π½Π° Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ)
- name: Run a multi-line script # ΠΈΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½ΠΎΠΌΠ΅Ρ 2
run: | # ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ Π½ΠΎΠΌΠ΅Ρ 2 (ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½Π°Ρ)
echo Add other actions to build,
echo test, and deploy your project.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½Π°:
0) ΠΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈ βCIβ. Π’ΡΡ Π΄Π΅Π»ΠΎ Π²ΠΊΡΡΠΎΠ²ΡΠΈΠ½Ρ.
1) ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅/ΡΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΡΠΊΡΠΈΠΏΡΠ°, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
on:
push
2) ΠΠ±ΡΠ°Π· Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΊΡΠΈΠΏΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠ°Π²ΠΈΠΌ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ubuntu Π²ΠΏΠΎΠ»Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Ρ. ΠΠ»ΡΠ΄Ρ Π½Π°
build:
runs-on: ubuntu-latest
3) Π ΡΠ°Π³Π°Ρ ΡΠ½Π°ΡΠ°Π»Π° Π½Π°ΡΡΡΠΎΠΈΠΌ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅.
3.1) ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π² Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π½Π°ΠΌ Π²Π΅ΡΠΊΡ (ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°Π³ checkout
):
- uses: actions/checkout@v1
3.2) ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Python:
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.7
3.3) ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
3.4) ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡΠ°:
- name: Make output folder
run: mkdir output
4) ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΠ°ΠΉΡΠΎΠΌ Π±ΡΠ»Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π΅ ΡΠ΄Π°Π»ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Π΅Π· ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ°ΠΉΡΠ°, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ°ΠΉΡΠ°:
- name: Clone master branch
run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output
ΠΡΠΎΡ ΡΠ°Π³ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
- ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
GITHUB_ACTOR
GitHub ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΌ, ΠΈ ΡΡΠΎ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠΎ Π²ΠΈΠ½Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΡΠΈΠ»ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ; - ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
secrets.ACCESS_TOKEN
ΡΡΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ GithubβΠΎΠΌ , Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅Secrets
Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠΎΡΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡΡ Π½Π°ΠΌ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ, Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ½ΠΊΡΠΎΠ² Secrets.
5) ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π°ΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡ:
- name: Generate static pages
run: pelican content -o output -s publishconf.py
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΊΡΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ (-o output
) ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ (-s publishconf.py
; ΠΎΠ± ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π΅ ΠΊ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³Π° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³Π° Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Pelican).
ΠΠ°ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎ Ρ Π½Π°Ρ Π² ΠΏΠ°ΠΏΠΊΡ output
ΡΠΆΠ΅ ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ°ΠΉΡΠ°.
6) ΠΠ°ΡΡΡΠΎΠΈΠΌ git ΠΈ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ:
- name: Set git config and add changes
run: |
git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
git config --global user.name "${GITHUB_ACTOR}"
git add --all
working-directory: ./output
Π ΡΡΠΎΠΌ ΠΏΡΠ½ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°Π³Π°. ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π² ΡΠ°Π±ΠΎΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈΠ½Π°ΡΠ΅ Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° Π±Ρ ΠΊΠ°ΠΊ β cd output
.
7) Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΈΠΌ ΠΈΡ
Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. Π§ΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΌΠΈΡ Π½Π΅ Π±ΡΠ» Π²ΠΏΡΡΡΡΡ, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π΅ Π²ΡΠ΄Π°Π» ΠΎΡΠΈΠ±ΠΊΡ Π² bash (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ Π½Π΅ 0
) β ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ ΠΈ ΠΏΡΡΠΈΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git diff-index --quiet --cached HEAD --
ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π²ΡΠ΄Π°ΡΡ 0
Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΉΡΠ°, ΠΈ 1
ΡΠ°ΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΅ΡΡΡ. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ°ΠΉΡΠ° Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅, Π²ΠΌΠ΅ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π½Π°ΠΌ ΠΎΡΡΠ΅ΡΠ° ΠΎ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ°.
ΠΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ Π² Π½Π°ΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ.
- name: Push and send notification
run: |
COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
# Only if repo have changes
git commit -m "${COMMIT_MESSAGE}"
git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
working-directory: ./output
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
Π ΠΈΡΠΎΠ³Π΅ ΡΠ°ΠΊΠΎΠΉ ΡΠΊΡΠΈΠΏΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ°Π½ΠΈΡ. ΠΠΎΠ±Π°Π²Π»ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΠΏΡΡΠΌΡΡ Π² ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π±ΡΠ΄Ρ ΡΠΎ ΡΠ°Π±ΠΎΡΠΎΠΉ Ρ git ΠΈΠ· ΠΏΠΎΠ΄ Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° ΡΠ΅ΡΠ΅Π· web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ GitHubβΠ°, Actions ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΌΠΈ. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° Π½Π° ΠΏΠΎΡΡΡ ΠΏΡΠΈΠ΄Π΅Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΡΡΠ°Π²Π»Ρ ΡΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, Π² Π½Π΅ΠΌ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π³ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠΈΡ Π±ΡΠ» Π·Π°ΠΏΡΡΠ΅Π½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Secrets ΠΊΡΠ΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ° ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
name: Push content to the user's GitHub pages repository
on:
push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Make output folder
run: mkdir output
- name: Clone master branch
run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output
- name: Generate static pages
run: pelican content -o output -s publishconf.py
- name: Set git config and add changes
run: |
git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
git config --global user.name "${GITHUB_ACTOR}"
git add --all
working-directory: ./output
- name: Push and send notification
run: |
COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
git commit -m "${COMMIT_MESSAGE}"
git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
curl "https://api.telegram.org/bot${{ secrets.BOT_TOKEN }}/sendMessage?text=$COMMIT_MESSAGE %0ALook at ${GITHUB_ACTOR}.github.io %0ARepository%3A github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io&chat_id=${{ secrets.ADMIN_ID }}"
working-directory: ./output
Π‘ΠΊΡΠΈΠ½ΡΠΎΡΡ
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π·Π°ΠΏΡΡΠΊΠΎΠ² ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Actions ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π±ΠΎΡΠ° ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠ°
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com