рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдФрд░ GitHub рдкреЗрдЬреЛрдВ рдкрд░ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП CI/CD рдХреЗ рд░реВрдк рдореЗрдВ GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ

рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдФрд░ GitHub рдкреЗрдЬреЛрдВ рдкрд░ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП CI/CD рдХреЗ рд░реВрдк рдореЗрдВ GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ

рд╣реИрдмрд░ рдХреЛ рдереЛрдбрд╝рд╛ рдЦрдВрдЧрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ GitHub рдХреЗ (рдмреАрдЯрд╛) рдлреАрдЪрд░ - рдПрдХреНрд╢рди рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рдХрдо рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдП рд╣реИрдВред

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд▓реНрдкрдХрдерди рдХреЛ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрднреА рднреА рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╣реИ, рдпрджреНрдпрдкрд┐ "рдмреАрдЯрд╛"ред рд▓реЗрдХрд┐рди рдпрд╣ рдмреАрдЯрд╛ рдХреА рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЯреВрд▓ рдХреЛ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕

рдпрджрд┐ рд╣рдо рдХреНрд░рдо рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рддрдГ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд "рдореЗрд░реЗ рдмрд╛рд░реЗ рдореЗрдВ" рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреЗрдЬрд╝, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдЖрд╕рд╛рди рдФрд░ рдореБрдлреНрдд рд╡рд┐рдХрд▓реНрдк рдХреА рдЦреЛрдЬ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рдХрдИ рд░рд╛рддреЗрдВ рдмрд┐рддрд╛рдиреА рдкрдбрд╝реАрдВ рдФрд░ рдХрдИ рд▓реЗрдЦреЛрдВ рдХреЛ рдЦрдВрдЧрд╛рд▓рдирд╛ рдкрдбрд╝рд╛ред

рдХреБрдЫ рд▓реЛрдЧ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЪреБрдирддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд░ рдЪреБрдирддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ рд▓реЛрдЧ рдЗрди рд╕рдмрдХреЗ рд▓рд┐рдП рдХрд╛рдо, рдЗрдВрдЯрд░реИрдХреНрд╢рди рдФрд░ рднреБрдЧрддрд╛рди рдХреЛ рд╕рдордЭрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рд╕реНрдЯреИрдЯрд┐рдХ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдпрд╣ GitHub рдФрд░ GitLab рджреЛрдиреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдпрд╣ рд╣рд░ рдХрд┐рд╕реА рдХреА рдирд┐рдЬреА рдкрд╕рдВрдж рд╣реИред

рдореЗрд░реА рдЕрдВрддрд┐рдо рдкрд╕рдВрдж GitHub Pages рдереАред

рдкреЗрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдХреМрди рдирд╣реАрдВ рдЬрд╛рдирддрд╛ gh-pages - рдпрд╣ рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░ рдпрд╣ рдирд┐рдГрд╢реБрд▓реНрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ GitHub рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ gh-pages, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП - рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рднрдВрдбрд╛рд░ username.github.io рд╕рд╛рдЗрдЯ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде master рд╢рд╛рдЦрд╛ред

рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╕ рдпрд╣ рдиреЛрдЯ рдХрд░ рджреВрдВ рдХрд┐ GitHub рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдХрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЛрдореЗрди рдХреЛ рдРрд╕реА рд╕рд╛рдЗрдЯ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдореЗрдВ рдЙрджрд╛рд░ рд╣реИ CNAME рдбреЛрдореЗрди рдирд╛рдо рдХреЗ рд╕рд╛рде рдФрд░ GitHub рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдкреНрд░рджрд╛рддрд╛ рдХрд╛ DNS рд╕реЗрдЯ рдХрд░рдирд╛ред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдРрд╕реА рд╕рд╛рдЗрдЯ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдпрд╣рд╛рдВ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЧреЗ рдирд╣реАрдВ рд╣реИред

рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдШрдЯрд┐рдд рд╣реЛрдирд╛

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд╕реНрдереИрддрд┐рдХ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреЗрдЬ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдмрд╕, рдпрджрд┐ рдЖрдк рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд┐рдЬреА рднрдВрдбрд╛рд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╕рд╛рдЗрдЯ рдкрд░ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕реНрдерд┐рд░ рдкреГрд╖реНрдареЛрдВ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рдХреА рдЕрдЧрд▓реА рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

рдмрд╣реБрддрд╛рдпрдд рд╣реИ рд╕реНрдереИрддрд┐рдХ рдЬрдирд░реЗрдЯрд░ рдФрд░ рдЙрди рд╕рднреА рдХреА рд╕рдорд╕реНрдпрд╛ рдПрдХ рдЬреИрд╕реА рд╣реИ. рдЗрди рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрддрдГ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд╛рдо рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдУрдПрд╕ рд╕реЗ рдУрдПрд╕ рдкрд░ рдХрдИ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдпрд╛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рдж (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣реА рд╕реНрдерд┐рддрд┐ рдереА).

рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдпрд╛ рддреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдкреЙрдк-рдЕрдк рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЗрдВ рдпрд╛ рдЧрд┐рдЯрд╣рдм рдХреЗ рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░ рдореЗрдВ, рдПрдХ рдирд╡рдирд┐рд░реНрдорд┐рдд рд╕реАрдЖрдИ/рд╕реАрдбреА рджреЗрдЦреА рдЧрдИ, рдЬрд┐рд╕рдиреЗ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред

рд╕реНрдЯреЗрдЯрд┐рдХ рдкреЗрдЬ рдЬреЗрдирд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдореИрдВ рдЗрд╕ рдЙрдк-рдЖрдЗрдЯрдо рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдереАрд╕рд┐рд╕ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдЪрдпрди рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди рдорд┐рд▓реАрдВ:

1) рдРрд╕рд╛ рдЬрдирд░реЗрдЯрд░ рдЪреБрдиреЗрдВ рдЬреЛ рдЖрдкрдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛ, рдпрд╛ рдРрд╕рд╛ рдЬрдирд░реЗрдЯрд░ рдЪреБрдиреЗрдВ рдЬреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛред рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЙрд╕ рд╕рдордп рдЖрдпрд╛ рдЬрдм рдореБрдЭреЗ рд╕реНрд╡рдпрдВ рд╕рд╛рдЗрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреА рдкрдбрд╝реА, рдЗрд╕рдХреА рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдмреИрд╕рд╛рдЦреА рдЬреЛрдбрд╝рдиреА рдкрдбрд╝реАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИ;

2) рдХреМрди рд╕рд╛ рдЬрдирд░реЗрдЯрд░ рдЪреБрдирдирд╛ рд╣реИ рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ GitHub рдкреЗрдЬ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рдо рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рд╕рд░реНрдЬрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ Jekyll. рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЖрдкрдХреЛ рд╕реАрдзреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреА рдкрд╕рдВрдж рд╕реЗ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛).

рдЬреЗрдирд░реЗрдЯрд░ рдХреА рдореЗрд░реА рдкрд╕рдВрдж рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╣рд╡рд╛рд╕реАрд▓ рдЬреЛ рдХрд┐ рдкрд╛рдЗрдереЙрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдиреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЗрдХрд┐рд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд┐рджреЗрд╢реА рд╣реИ (рд▓рдЧрднрдЧ рдПрдХ рд╡рд░реНрд╖ рддрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛). рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓реЗрдЦ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рддрдерд╛ рдХрд┐рд╕реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рднреА рдореБрдЭреЗ рдЙрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрднрд╡ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

__

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реВрдкрдг

рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓) рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рдЬреА рднрдВрдбрд╛рд░ рд╕реЗ рд╕реНрдерд┐рд░ рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреАред рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреАред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВ рддреИрдпрд╛рд░ рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрдВрдбрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧреАред

рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЬрд┐рди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

  • рдЧрд┐рдЯрд╣рдм рдХреНрд░рд┐рдпрд╛рдПрдБ;
  • рдкрд╛рдпрдерди 3.7;
  • рд╣рд╡рд╛рд╕реАрд▓;
  • рдЧрд┐рдЯ;
  • рдЧрд┐рдЯрд╣рдм рдкреЗрдЬред

рд╕рдорд╛рдзрд╛рди

рдЗрд╕рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рддрдВрддреНрд░ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░ рджреЗрдЧрд╛ред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рд╣реЛрдЧреАред рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП!

рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдФрд░ GitHub рдкреЗрдЬреЛрдВ рдкрд░ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП CI/CD рдХреЗ рд░реВрдк рдореЗрдВ GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ
рдЬреАрдердм рджреНрд╡рд╛рд░рд╛ рд╣реА рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг

рдПрдХреНрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд╛рдорд┐рдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ .github рдФрд░ рдЙрд╕рдХрд╛ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ workflows. рдпрд╣ рдпрд╛ рддреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреЗрдЬ рдкрд░ рдПрдХреНрд╢рди рдЯреИрдм рдореЗрдВ рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдФрд░ GitHub рдкреЗрдЬреЛрдВ рдкрд░ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП CI/CD рдХреЗ рд░реВрдк рдореЗрдВ GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ
рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдкрддреНрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг

рдореИрдВ рдлреЙрд░реНрдо рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛

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) рдЖрдк "рд╕реАрдЖрдИ" рдирд╛рдо рднреА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ.

1) рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЙрд╕ рдПрдХреНрд╢рди/рдЯреНрд░рд┐рдЧрд░ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдзрдХреНрдХрд╛ рд╣реИред

on:
  push

2) рд╣рдо рдЙрд╕ рдЫрд╡рд┐ рдХреЛ рднреА рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдмрдВрдЯреВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдХрд╛рдлреА рд╕рдВрддреБрд╖реНрдЯ рд╣реИред рдХреА рдУрд░ рджреЗрдЦреЗрдВ рдЙрдкрдХрд░рдг рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рднреА рдЖрд╡рд╢реНрдпрдХ рдпрд╛ рдмрд╕ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫрд╡рд┐ (рдпрд╛ рдЙрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░) рд╣реЛ рд╕рдХрддреА рд╣реИред

  build:
    runs-on: ubuntu-latest

3) рдЪрд░рдгреЛрдВ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред

3.1) рд╣рдореЗрдВ рдЬрд┐рд╕ рд╢рд╛рдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕ рдкрд░ рдЬрд╛рдПрдВ (рдорд╛рдирдХ рдЪрд░рдг checkout):

- uses: actions/checkout@v1

3.2) рдкрд╛рдпрдерди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

    - 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 рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рд╣рдореЗрдВ рдЯреЛрдХрди рдПрдХ рдмрд╛рд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рдмрд╛рдж рдЙрд╕ рддрдХ рдХреЛрдИ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕рд╛рде рд╣реА рд░рд╣рд╕реНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдореВрд▓реНрдп рднреАред

5) рдЖрдЗрдП рдЕрдкрдиреЗ рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдУрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ:

   - name: Generate static pages
      run: pelican content -o output -s publishconf.py

рдЬрдирд░реЗрдЯрд░ рдХреЛ рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рднреЗрдЬреА рдЬрд╛рдПрдВрдЧреА (-o output) рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ (-s publishconf.py; рдЖрдк рдкреЗрд▓рд┐рдХрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ).

рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ 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) рдЖрдЗрдП рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ рдмрдирд╛рдПрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдзрдХреЗрд▓реЗрдВред рддрд╛рдХрд┐ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╡реНрдпрд░реНрде рди рд╣реЛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдмреИрд╢ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рди рд╣реЛ (рдЖрдЙрдЯрдкреБрдЯ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИ)ред 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

рдкрд░рд┐рдгрд╛рдо

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЛ рд╕реНрдерд┐рд░ рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред рдХрд┐рд╕реА рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реАрдзреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛрдбрд╝рдХрд░, рдЪрд╛рд╣реЗ рдХрд┐рд╕реА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рддрд╣рдд рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдХреЗ рдпрд╛ рдЧрд┐рдЯрд╣рдм рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдХрд░, рдХреНрд░рд┐рдпрд╛рдПрдБ рд╕реНрд╡рдпрдВ рд╕рдм рдХреБрдЫ рдХрд░реЗрдВрдЧреАред рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдИрдореЗрд▓ рдкрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬреА рдЬрд╛рдПрдЧреАред

рдкреВрд░рд╛ рдХреЛрдб

рдореИрдВ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЛ рдореБрдЦреНрдп рднрдВрдбрд╛рд░ рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд░рд╣рд╕реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдмреЙрдЯ рдЯреЛрдХрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдЬрд┐рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдФрд░ GitHub рдкреЗрдЬреЛрдВ рдкрд░ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП CI/CD рдХреЗ рд░реВрдк рдореЗрдВ GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ
рдХрд┐рд╕реА рдПрдХ рд░рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд░реЛрдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдПрдХреНрд╢рди рдЯреИрдм рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ

рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдФрд░ GitHub рдкреЗрдЬреЛрдВ рдкрд░ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП CI/CD рдХреЗ рд░реВрдк рдореЗрдВ GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЙрдЯ рд╕реЗ рд╕рдВрджреЗрд╢

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХреНрд╕

рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛
рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕
рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреА рд╕реВрдЪреА
рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк
рдЬреАрдердм рдкреЗрдЬ
рд╕реНрдереИрддрд┐рдХ рдЬреЗрдирд░реЗрдЯрд░ рд╕реВрдЪреА

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ