рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдЖрдгрд┐ GitHub рдкреГрд╖реНрдард╛рдВрд╡рд░ рд╕рд╛рдЗрдЯрд╕рд╛рдареА CI/CD рдореНрд╣рдгреВрди GitHub рдХреНрд░рд┐рдпрд╛

рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдЖрдгрд┐ GitHub рдкреГрд╖реНрдард╛рдВрд╡рд░ рд╕рд╛рдЗрдЯрд╕рд╛рдареА CI/CD рдореНрд╣рдгреВрди GitHub рдХреНрд░рд┐рдпрд╛

рд╣реЕрдмреНрд░рд▓рд╛ рдереЛрдбреЗрд╕реЗ рдЪрд╛рд│рд▓реНрдпрд╛рдирдВрддрд░, рдорд▓рд╛ рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрд▓реЗ рдХреА GitHub рдЪреНрдпрд╛ (рдмреАрдЯрд╛) рд╡реИрд╢рд┐рд╖реНрдЯреНрдп - рдХреНрд░рд┐рдпрд╛ рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рдлрд╛рд░ рдХрдореА рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд.

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

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

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

рдХрд╛рд╣реА рд▓реЛрдХ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдирд┐рд╡рдбрддрд╛рдд, рдЗрддрд░ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдЬреНрдпрд╛рдВрдирд╛ рдпрд╛ рд╕рд░реНрд╡рд╛рдВрд╕рд╛рдареА рдХрд╛рдо, рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рдЖрдгрд┐ рдкреЗрдореЗрдВрдЯ рд╕рдордЬреВрди рдШреНрдпрд╛рдпрдЪреЗ рдирд╛рд╣реА рдЬрд╕реЗ рдХреА рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рд╕реНрдерд┐рд░ рд╕рд╛рдЗрдЯ рдЕрдкрд▓реЛрдб рдХрд░рдгреЗ, рдЖрддрд╛ рд╣реЗ GitHub рдЖрдгрд┐ GitLab рджреЛрдиреНрд╣реАрд╡рд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдЕрд░реНрдерд╛рдд рд╣реА рдкреНрд░рддреНрдпреЗрдХрд╛рдЪреА рд╡реИрдпрдХреНрддрд┐рдХ рдирд┐рд╡рдб рдЖрд╣реЗ.

рдорд╛рдЭреА рдЕрдВрддрд┐рдо рдирд┐рд╡рдб GitHub рдкреГрд╖реНрдареЗ рд╣реЛрддреА.

рдкреГрд╖реНрдард╛рдВрдмрджреНрджрд▓

рдХреЛрдгрд╛рд▓рд╛ рдорд╛рд╣реАрдд рдирд╛рд╣реА gh-pages - рд╡реЗрдмрд╕рд╛рдЗрдЯрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рджрд╕реНрддрдРрд╡рдЬ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдПрдХ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рддреЛ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╡реИрдпрдХреНрддрд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рджреЗрдЦреАрд▓ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ. рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ GitHub рджреНрд╡рд╛рд░реЗ рд╕рд░реНрд╡ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдкреНрд░рджрд╛рди рдХреЗрд▓реА рдЬрд╛рддреЗ рдЖрдгрд┐ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ.

рдкреНрд░рдХрд▓реНрдк рднрд╛рдВрдбрд╛рд░ рд╢рд╛рдЦрд╛ рд╡рд╛рдкрд░рддреЗ gh-pages, рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯрд╕рд╛рдареА - рдирд╛рд╡рд╛рд╕рд╣ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рднрд╛рдВрдбрд╛рд░ username.github.io рдордзреНрдпреЗ рд╕рд╛рдЗрдЯ рд╕реНрддреНрд░реЛрддрд╛рдВрд╕рд╣ master рд╢рд╛рдЦрд╛

рддреБрдореНрд╣реА рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдкрд╛рд╣реВ рд╢рдХрддрд╛ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдордзреНрдпреЗ, рдкрд░рдВрддреБ рдореА рдлрдХреНрдд рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рддреЛ рдХреА GitHub рдХреЛрдгрд╛рд▓рд╛рд╣реА рдлрдХреНрдд рдлрд╛рдЗрд▓ рдЬреЛрдбреВрди рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдбреЛрдореЗрдирд▓рд╛ рдЕрд╢рд╛ рд╕рд╛рдЗрдЯрд╢реА рд▓рд┐рдВрдХ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгреНрдпрд╛рдд рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХрдкрдгреЗ рдЙрджрд╛рд░ рдЖрд╣реЗ CNAME рдбреЛрдореЗрди рдирд╛рд╡рд╛рд╕рд╣ рдЖрдгрд┐ GitHub рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рддреБрдордЪреНрдпрд╛ рдбреЛрдореЗрди рдкреНрд░рджрд╛рддреНрдпрд╛рдЪрд╛ DNS рд╕реЗрдЯ рдХрд░рд╛.

рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рдЕрд╢реА рд╕рд╛рдЗрдЯ рдХрд╢реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рд╛рд╡реА рдпрд╛рдмрджреНрджрд▓ рдпреЗрдереЗ рдмрд░реЗрдЪ рд▓реЗрдЦ рдЖрд╣реЗрдд, рдореНрд╣рдгреВрди рдореА рдкреБрдвреЗ рдмреЛрд▓рдгрд╛рд░ рдирд╛рд╣реА.

рд╕рдорд╕реНрдпрд╛ рдЙрджреНрднрд╡рддрд╛рдд

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

рд╡рд┐рдкреБрд▓рддрд╛ рдЖрд╣реЗ рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рд╕рд░реНрд╡ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд. рдпрд╛ рдХреНрд░рд┐рдпрд╛рдВрдирд╛ рдЦреВрдк рд╡реЗрд│ рдЖрдгрд┐ рдореЗрд╣рдирдд рд▓рд╛рдЧрддреЗ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рд╕рд╛рдЗрдЯрд╡рд░реАрд▓ рдХрд╛рдо рдордВрджрд╛рд╡рддреЗ, рд╡рд┐рд╢реЗрд╖рдд: OS рд╡рд░реВрди OS рд╡рд░ рдЕрдиреЗрдХ рд╕реНрдерд▓рд╛рдВрддрд░рд╛рдирдВрддрд░ рдХрд┐рдВрд╡рд╛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡реНрд╣рд╡рд░реАрд▓ рдбреЗрдЯрд╛ рдЧрдорд╛рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдШрдЯрдирд╛рдВрдирдВрддрд░ (рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЕрд╕реЗрдЪ рд╣реЛрддреЗ).

рдиреБрдХрддреЗрдЪ, рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░реАрд▓ рдкреЙрдк-рдЕрдк рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ GitHub рдХрдбреАрд▓ рд╡реГрддреНрддрдкрддреНрд░рд╛рдд, рдПрдХ рдирд╡реАрди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ CI/CD рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдпрд╛ рдХреНрд░рд┐рдпрд╛ рдХрдореАрдд рдХрдореА рдкреНрд░рдпрддреНрдирд╛рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдЭрд╛рд▓реЗ.

рд╕реНрдерд┐рд░ рдкреГрд╖реНрда рдЬрдирд░реЗрдЯрд░ рдмрджреНрджрд▓

рдореА рдпрд╛ рдЙрдк-рдЖрдпрдЯрдорд╡рд░ рд╡рд┐рд╢реЗрд╖ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдореА рдЦрд╛рд▓реАрд▓рдкреИрдХреА рдирд┐рд╡рдб рдЖрдгрд┐ рд╡рд╛рдкрд░рд╛рджрд░рдореНрдпрд╛рди рдЖрд▓реЗрд▓реНрдпрд╛ рдХрд╛рд╣реА рдкреНрд░рдмрдВрдз рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реЗрди:

1) рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖реЗрд▓рд╛ рдЕрдиреБрдХреВрд▓ рдЕрд╕рд╛ рдЬрдирд░реЗрдЯрд░ рдирд┐рд╡рдбрд╛ рдХрд┐рдВрд╡рд╛ рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдЕрд╕реЗрд▓. рдорд▓рд╛ рд╣реА рдХрд▓реНрдкрдирд╛ рдЕрд╢рд╛ рд╡реЗрд│реА рд╕реБрдЪрд▓реА рдЬреЗрд╡реНрд╣рд╛ рдорд▓рд╛ рд╕реНрд╡рддрдГрд▓рд╛ рд╕рд╛рдЗрдЯрд╡рд░ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╛рдпрдЪреА рд╣реЛрддреА, рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░рддреЗрд╕рд╛рдареА рдЖрдгрд┐ рдСрдЯреЛрдореЗрд╢рдирд╕рд╛рдареА рдХреНрд░реЕрдЪ рдЬреЛрдбрд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкреНрд▓рдЧрдЗрдирдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реНрд╡рддрдГ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреЗ рд╣реЗ рдПрдХ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░рдг рдЖрд╣реЗ;

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

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

__

рд╕рдорд╕реНрдпреЗрдЪреА рдирд┐рд░реНрдорд┐рддреА

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

рд╕рдорд╛рдзрд╛рдирд╛рд╕рд╛рдареА рд╕рд╛рдзрдиреЗ

рдЖрдореНрд╣реА рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реА рд╕рд╛рдзрдиреЗ:

  • GitHub рдХреНрд░рд┐рдпрд╛;
  • рдкрд╛рдпрдерди 3.7;
  • рдкреЗрд▓рд┐рдХрди;
  • рдЧрд┐рдЯ;
  • GitHub рдкреГрд╖реНрдареЗ.

рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреЗ

рдореНрд╣рдгреВрди, рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдЪреА рдереЛрдбреАрд╢реА рдУрд│рдЦ рдХрд░реВрди рдШреЗрддрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рдХреНрд░рд┐рдпрд╛рдВрд╕рд╛рдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХрд╢рд╛ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рд╣реЗ рд╕рдордЬреВрди рдШреЗрддрд▓реНрдпрд╛рд╡рд░, рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдХреА рд╣реА рдпрдВрддреНрд░рдгрд╛ рдЙрджреНрднрд╡рд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдкреВрд░реНрдгрдкрдгреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реЗрд▓. рд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА, рдЖрдкрдг рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рджрд╕реНрдпрддрд╛ рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдмреАрдЯрд╛ рдЪрд╛рдЪрдгреАрд╕рд╛рдареА!

рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдЖрдгрд┐ GitHub рдкреГрд╖реНрдард╛рдВрд╡рд░ рд╕рд╛рдЗрдЯрд╕рд╛рдареА CI/CD рдореНрд╣рдгреВрди GitHub рдХреНрд░рд┐рдпрд╛
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) рддреБрдореНрд╣реА "CI" рдирд╛рд╡ рджреЗрдЦреАрд▓ рд╕реЛрдбреВ рд╢рдХрддрд╛. рдЪрд╡реАрдЪреА рдмрд╛рдм рдЖрд╣реЗ.

1) рдкреБрдвреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдБрдЪ рдХрд░рдгрд╛рд░реА рдХреНрд░рд┐рдпрд╛/рдЯреНрд░рд┐рдЧрд░ рдирд┐рд╡рдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рд╣реЗ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдордзреНрдпреЗ рдирд╡реАрди рдХрдорд┐рдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдиреЗрд╣рдореАрдЪрд╛ рдзрдХреНрдХрд╛ рдЖрд╣реЗ.

on:
  push

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

  build:
    runs-on: ubuntu-latest

3) рдЪрд░рдгрд╛рдВрдордзреНрдпреЗ, рдЖрдореНрд╣реА рдореБрдЦреНрдп рдХрд╛рдорд╛рдЪреНрдпрд╛ рддрдпрд╛рд░реАрд╕рд╛рдареА рдкреНрд░рдердо рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░реВ.

рей.рез) рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╢рд╛рдЦреЗрдд рдЬрд╛ (рдорд╛рдирдХ рдкрд╛рдпрд░реА 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.

рен) рдХрдорд┐рдЯ рдореЗрд╕реЗрдЬ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░реВ, рдмрджрд▓ рдХрд░реВ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдврдХрд▓реВ. рдЬреЗрдгреЗрдХрд░реВрди рдХрдорд┐рдЯ рд╡реНрдпрд░реНрде рдард░рдд рдирд╛рд╣реА рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рдмреЕрд╢рдордзреНрдпреЗ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рд╣реЛрдд рдирд╛рд╣реА (рдЖрдЙрдЯрдкреБрдЯ рдкрд░рд┐рдгрд╛рдо рдирд╛рд╣реА 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 рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░реВрди рдХрд┐рдВрд╡рд╛ GitHub рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕рджреНрд╡рд╛рд░реЗ рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░реВрди, рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рддрдГрдЪ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд░реЗрд▓. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдирдкреЗрдХреНрд╖рд┐рддрдкрдгреЗ рдХреНрд░реЕрд╢ рдЭрд╛рд▓реНрдпрд╛рд╕, рддреБрдордЪреНрдпрд╛ рдИрдореЗрд▓рд╡рд░ рд╕реВрдЪрдирд╛ рдкрд╛рдард╡рд▓реА рдЬрд╛рдИрд▓.

рдкреВрд░реНрдг рдХреЛрдб

рдореА рдорд╛рдЭреА рдХрд╛рд░реНрдпрд░рдд рдЖрд╡реГрддреНрддреА рд╕реЛрдбреЗрди, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╢реЗрд╡рдЯрдЪреА рдкрд╛рдпрд░реА рдореБрдЦреНрдп рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдХрдорд┐рдЯ рдврдХрд▓рд▓реА рдЧреЗрд▓реНрдпрд╛рдЪреА рд╕реВрдЪрдирд╛ рдкрд╛рдард╡рддреЗ.

рд╡рд░ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реА рд░рд╣рд╕реНрдпреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддрд╛рдд, рдЬрд┐рдереЗ рдмреЙрдЯ рдЯреЛрдХрди рдЖрдгрд┐ рдЬреНрдпрд╛рд▓рд╛ рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ рддреЛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЖрдпрдбреА рдЬреЛрдбрд▓рд╛ рдЬрд╛рддреЛ.

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 рдХреНрд░рд┐рдпрд╛
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдмрджреНрджрд▓ рдмреЙрдЯрдХрдбреВрди рдореЗрд╕реЗрдЬ

рдЙрдкрдпреБрдХреНрдд рджреБрд╡реЗ

рдХреГрддреА рд╕рдордЬреВрди рдШреЗрдгреЗ
рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛
рдЯреНрд░рд┐рдЧрд░реНрд╕рдЪреА рдпрд╛рджреА
рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рдкрд░реНрдпрд╛рдп
Github рдкреГрд╖реНрдареЗ
рд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рдпрд╛рджреА

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛