GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
рдкреИрдВрдерд┐рдпрди рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрддрд┐рдерд┐ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдирд┐рд░реНрдорд╛рддрд╛ GitLab CI/CD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

╨Т рд╕рдм рджреЗрд╡рддрд╛рдУрдВ рдХрд╛ рдордВрджрд┐рд░ рдореИрдВ рдбреЗрд╡рд▓рдкрд░ рд╕рдВрдмрдВрдзреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдФрд░ рдбреНрд░реБрдкрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрдирдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдирдП рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд░рд╣рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рд╣реИред

рдореИрдВ рдЕрдХреНрд╕рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХрд▓ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрддрд╛ рд╣реВрдВред

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

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

рд▓реЗрдХрд┐рди рдкреИрдВрдерд┐рдпрди рдХреЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдпрд╛ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди (рд╕реАрдЖрдИ/рд╕реАрдбреА) рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд▓рдЪреАрд▓рд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд┐рд╕реА рднреА рдЯреВрд▓ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдЯреАрдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред

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

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

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

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ GitLab рдФрд░ Pantheon рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдФрд░ Drupal рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред

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

рдкрд░рд┐рдЪрдп

рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкреИрдВрдерд┐рдпрди рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯ рдХреЛ рддреАрди рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдХреЛрдб, рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдлрд╝рд╛рдЗрд▓реЗрдВред

рдХреЛрдб рдореЗрдВ рд╕реАрдПрдордПрд╕ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреИрд╕реЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрд░, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдереАрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдкреИрдВрдерд┐рдпрди рджреНрд╡рд╛рд░рд╛ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо Git рдХреЗ рд╕рд╛рде GitLab рд╕реЗ Pantheon рддрдХ рдХреЛрдб рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреИрдВрдерд┐рдпрди рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдпрд╛рдиреА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпрд╛рдВред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ Git рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВ, рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдкреИрдВрдерд┐рдпрди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдпрд╛ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВ pantheon.io рдкрд░ред

рдорд╛рдиреНрдпрддрд╛рдУрдВ

рдкреИрдВрдерд┐рдпрди рдФрд░ рдЧрд┐рдЯрд▓реИрдм рдкрд░ рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╣рд▓рд╛рддрд╛ рд╣реИ pantheon-gitlab-blog-demo. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЖрдк Drupal рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреБрдЫ рдЪреАрдЬрд╝реЗрдВ рдмрджрд▓рдиреА рд╣реЛрдВрдЧреАред

рдореИрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реВрдБрдЧрд╛ рдЧрд┐рдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирдФрд░ рдЖрдк рдЗрд╕рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдмрдирд╛рдПрдВ рдЧрд┐рдЯрд▓реИрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ (рд╣рдо рдЗрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдПрдВрдЧреЗ)ред

рдЕрдм рдкреИрдВрдерд┐рдпрди рдкрд░ рдПрдХ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛. рдлрд┐рд░ рд╣рдо рд╕рд╛рдЗрдЯ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред

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

рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдкреИрдВрдерд┐рдпрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЛрдб рдХреЛ рдЧрд┐рдЯ рдореЗрдВ рдмрджрд▓реЗрдВред

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

GitLab рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛

рдЕрдм рдЖрдкрдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрдб рдХреЛ рдкреИрдВрдерд┐рдпрди рд╕рд╛рдЗрдЯ рд╕реЗ GitLab рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреИрдВрдерд┐рдпрди рд╕рд╛рдЗрдЯ рдХреЗ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреЛрдб рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ GitLab рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рднреЗрдЬрддреЗ рд╣реИрдВред

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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ Git рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рд╕реЗ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрдкреА рдХрд░рдХреЗ рдкреИрдВрдерд┐рдпрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреНрд▓реЛрди рдХрд░реЗрдВред

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝реЗрдВ рдкреЗрдВрдерд┐рдпрди рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛.

рдЕрдм рдЪрд▓реЛ рдмрджрд▓реЛ git remote originрдкреИрдВрдерд┐рдпрди рдХреЗ рдмрдЬрд╛рдп GitLab рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ╨║╨╛╨╝╨░╨╜╨┤╨╛╨╣ git remote.

рдЖрдЗрдП GitLab рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда рдкрд░ рдХреНрд▓реЛрди рдбреНрд░реЙрдкрдбрд╛рдЙрди рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА URL рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред рдЖрдЗрдП SSH рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рдЪреБрдиреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ SSH рдХреБрдВрдЬреА рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

╨Я╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О git remote рдХреЛрдб рднрдВрдбрд╛рд░ рдХреА рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рд▓рд┐рдП - origin. рдЗрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕реА git remote set-url origin [URL ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╤П GitLab], рдЬрд╣рд╛рдВ рдХреЛрд╖реНрдардХ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ URL рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ git push origin master --forceрд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрдб рдХреЛ рдкреИрдВрдерд┐рдпрди рд╕реЗ GitLab рдкрд░ рдкреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

-рдмрд▓ рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реЛрддреА рд╣реИред рдлрд┐рд░ рдЯреАрдореЛрдВ рдореЗрдВ git push рдпрд╣ GitLab рдкрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛.

рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдирд╛

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдкреИрдВрдерд┐рдпрди рдФрд░ рдЧрд┐рдЯрд▓реИрдм рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ SSH рдХреБрдВрдЬреА рдХреИрд╕реЗ рдЬреЛрдбрд╝реА рдереА? SSH рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ GitLab рдФрд░ Pantheon рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

GitLab рдХреЗ рдкрд╛рд╕ рдЙрддреНрдХреГрд╖реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╣реИред рдЪрд▓реЛ рджреЗрдЦрддреЗ рд╣реИрдВ GitLab CI/CD рдХреЗ рд╕рд╛рде SSH рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдбреЙрдХрд░ рдирд┐рд╖реНрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп SSH рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдЕрдиреБрднрд╛рдЧ.

рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рджреЛ рдЪрд░рдг рдкреВрд░реЗ рдХрд░реЗрдВрдЧреЗ: рдЖрдЗрдП ssh-keygen рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХ рдирдИ SSH рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдмрдирд╛рдПрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдЬреА рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ.

рдлрд┐рд░ рд╣рдо рдкреВрдЫреЗрдВрдЧреЗ SSH_PRIVATE_KEY рдЬреИрд╕рд╛ GitLab CI/CD рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ.
рддреАрд╕рд░реЗ рдФрд░ рдЪреМрдереЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рдПрдХ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ .gitlab-ci.yml рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде:

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

рдЖрдЗрдП рдЕрднреА рддрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рддрд┐рдмрджреНрдз рди рдХрд░реЗрдВ .gitlab-ci.yml, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдм рд╣рдо рдкрд╛рдБрдЪрд╡рд╛рдБ рдЪрд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдмрд┐рд▓реНрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ.

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо GitLab рд╕реЗ рдкреИрдВрдерд┐рдпрди рддрдХ рдкрд╣реБрдБрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдкреИрдВрдерд┐рдпрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдкреИрдВрдерд┐рдпрди рдореЗрдВ SSH рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдпрд╣ рдЪрд░рдг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ.

рдпрд╛рдж рд░рдЦреЗрдВ: рдирд┐рдЬреА SSH GitLab рдореЗрдВ рд╣реИ, рдЦреБрд▓рд╛ SSH рдкреИрдиреНрдерд┐рдпреЙрди рдореЗрдВ рд╣реИред

рдЖрдЗрдП рдХреБрдЫ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ PANTHEON_SITE рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рдкреИрдВрдерд┐рдпрди рд╕рд╛рдЗрдЯ рдХрд╛ рдирд╛рдо рд╣реИред

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

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдЗрдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ PANTHEON_GIT_URL. рдпрд╣ рдкреИрдВрдерд┐рдпрди рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА URL рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред

рдмрд┐рдирд╛, рдХреЗрд╡рд▓ SSH рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА URL рджрд░реНрдЬ рдХрд░реЗрдВ git clone рдФрд░ рдЕрдВрдд рдореЗрдВ рдорд╢реАрди рдкрд░ рд╕рд╛рдЗрдЯ рдХрд╛ рдирд╛рдоред

рдЙрдлрд╝реНрдлрд╝. рдпрд╣ рд╣реЛ рдЧрдпрд╛, рдЕрдм рд╣рдо рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .gitlab-ci.yml.

рдПрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛рд░реНрдп рдмрдирд╛рдПрдБ

рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо GitLab CI рдХреЗ рд╕рд╛рде рдЬреЛ рдХрд░реЗрдВрдЧреЗ рд╡рд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдордиреЗ рдЕрддреАрдд рдореЗрдВ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░, рдЖрдЗрдП рдкреИрдиреНрдерд┐рдпреЙрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рджреВрд╕рд░реЗ рджреВрд░рд╕реНрде Git рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдлрд┐рд░ рдХреЛрдб рдХреЛ GitLab рд╕реЗ Pantheon рдкрд░ рдкреБрд╢ рдХрд░реЗрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ ╤Н╤В╨░╨┐ deploy ╨╕ рдЯрд╛рд╕реНрдХ deploy:dev, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкреИрдВрдерд┐рдпрди рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рддреИрдирд╛рдд рд╣реЛрдВрдЧреЗред рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ .gitlab-ci.yml рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдВрдЧреЗ:

stages:
- deploy

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

deploy:dev:
  stage: deploy
  environment:
    name: dev
    url: https://dev-$PANTHEON_SITE.pantheonsite.io/
  script:
    - git remote add pantheon $PANTHEON_GIT_URL
    - git push pantheon master --force
  only:
    - master

рдЪрд░ SSH_PRIVATE_KEY, PANTHEON_SITE ╨╕ PANTHEON_GIT_URL рдкрд░рд┐рдЪрд┐рдд рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рд╣рдордиреЗ рдпреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд╣рд▓реЗ рд╣реА рд╕реЗрдЯ рдХрд░ рд▓рд┐рдП рд╣реИрдВред рдЗрди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╣рдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ .gitlab-ci.yml рдХрдИ рдмрд╛рд░, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрдВрдд рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ, рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ рдФрд░ рднреЗрдЬреЗрдВ .gitlab-ci.yml рдЧрд┐рдЯрд▓реИрдм рдкрд░.

рддреИрдирд╛рддреА рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ

рдпрджрд┐ рд╣рдордиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛, рддреЛ рдХрд╛рд░реНрдп deploy:dev GitLab CI/CD рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓реЗрдЧрд╛ рдФрд░ рдПрдХ рдХрдорд┐рдЯ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдЧрд╛ .gitlab-ci.yml рдкреИрдВрдерд┐рдпрди рдореЗрдВ. рдЖрдЗрдпреЗ рдПрдХ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ.

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдкреИрдВрдерд┐рдпрди рдХреЛ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдереНрд░реЗрдб рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

рдпрд╣рд╛рдВ рд╣рдо рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдкреИрдВрдерд┐рдпрди рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - рдорд▓реНрдЯреАрджреЗрд╡, рдЬрд╣рд╛рдВ рдЖрдк рдорд╛рдВрдЧ рдкрд░ Git рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдВрдерд┐рдпрди рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдЗрдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ Git рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ git checkout -b multidev-support. рдЕрдм рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рдХреБрдЫ рдмрджрд▓рддреЗ рд╣реИрдВ .gitlab-ci.yml.

рдореИрдВ рдкреИрдВрдерд┐рдпрди рдкрд░реНрдпрд╛рд╡рд░рдг рдирд╛рдо рдореЗрдВ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓рд╛ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рд╣реИ mr-1, рджреВрд╕рд░рд╛ - mr-2 рдЖрджрд┐ред

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

рд╣рдо рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ $CI_MERGE_REQUEST_IIDрдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдЗрдП рдпрд╣ рд╕рдм рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдирдпрд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдорд▓реНрдЯреАрдбреЗрд╡ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВ .gitlab-ci.yml.

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Checkout the merge request source branch
    - git checkout $CI_COMMIT_REF_NAME
    # Add the Pantheon git repository as an additional remote
    - git remote add pantheon $PANTHEON_GIT_URL
    # Push the merge request source branch to Pantheon
    - git push pantheon $CI_COMMIT_REF_NAME:mr-$CI_MERGE_REQUEST_IID --force
  only:
    - merge_requests

рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ deploy:dev, рдХреЗрд╡рд▓ рд╢рд╛рдЦрд╛ рдкреИрдиреНрдерд┐рдпреЙрди рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ, рдирд╣реАрдВ master.

рд╣рдордиреЗ рдЕрджреНрдпрддрди рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝ рджреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░ рджреА рд╣реИ .gitlab-ci.yml, рдФрд░ рдЕрдм GitLab рдореЗрдВ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ git push -u origin multidev-support.

рдЕрдм рд╢рд╛рдЦрд╛ рд╕реЗ рдПрдХ рдирдпрд╛ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреЗ рд╣реИрдВ multidev-supportрджрдмрд╛рдиреЗ рд╕реЗ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдБ.

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реАрдЖрдИ/рд╕реАрдбреА рдХрд╛рд░реНрдп рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ deploy:multidev.

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

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

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдЖрдЗрдП Git рд╢рд╛рдЦрд╛рдПрдБ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░рд╛ рд╕реВрддреНрд░ mr-1 рдкреЗрдВрдерд┐рдпрди рдкрд╣реБрдБрдЪреЗред рдЖрдЗрдП рдПрдХ рд╢рд╛рдЦрд╛ рд╕реЗ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдПрдВ mr-1.

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рд╣рдордиреЗ рдПрдХ рдорд▓реНрдЯреАрдбреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдпрд╛ рд╣реИ, рдЕрдм GitLab рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдЕрдиреБрднрд╛рдЧ рдХреЛ рджреЗрдЦреЗрдВ рд╕рдВрдЪрд╛рд▓рди > рд╡рд╛рддрд╛рд╡рд░рдг. рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рджреЗрдЦреЗрдВрдЧреЗ dev ╨╕ mr-1.

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реА рд╣реИ environment рдирд╛рдо рдХреЗ рд╕рд╛рде name ╨╕ url рд╕реАрдЖрдИ/рд╕реАрдбреА рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВред рдпрджрд┐ рд╣рдо рдЦреБрд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкреИрдВрдерд┐рдпрди рдкрд░ рдорд▓реНрдЯреАрдбреЗрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдпреВрдЖрд░рдПрд▓ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдорд▓реНрдЯреАрдбреЗрд╡ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ

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

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

рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдирдП рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ git checkout -b auto-multidev-creation.

GitLab CI/CD рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЯрд░реНрдорд┐рдирд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯрд░реНрдорд┐рдирд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╢реАрди рдЯреЛрдХрди рдФрд░ рдЯрд░реНрдорд┐рдирд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдкреИрдВрдерд┐рдпрди рдорд╢реАрди рдЯреЛрдХрди рдмрдирд╛рдирд╛, рдЗрд╕реЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд╛рди рдкрд░ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде GitLab рдореЗрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ PANTHEON_MACHINE_TOKEN.

рдпрджрд┐ рдЖрдк рднреВрд▓ рдЧрдП рд╣реИрдВ рдХрд┐ GitLab рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ, рддреЛ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛ рд╡рд╣рд╛рдВ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ PANTHEON_SITE.

рдЯрд░реНрдорд┐рдирд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛

рдпрджрд┐ рдЖрдк рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ Dockerfile, рдореЗрд░реА рдЫрд╡рд┐ рд▓реЗ рд▓реЛ registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest рдФрд░ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝реЗрдВ.

GitLab рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдмрдирд╛ рдФрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдкреИрдВрдерд┐рдпрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВред

рдЯрд░реНрдорд┐рдирд╕ рдПрдХ PHP рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП PHP рдЫрд╡рд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрд░реНрдорд┐рдирд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХрд░ рд╕рдВрдЧреАрддрдХрд╛рд░ рдЫрд╡рд┐. рд╣рдо рдмрдирд╛рддреЗ рд╣реИрдВ Dockerfile рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ:

# Use the official Composer image as a parent image
FROM composer:1.8

# Update/upgrade apk
RUN apk update
RUN apk upgrade

# Make the Terminus directory
RUN mkdir -p /usr/local/share/terminus

# Install Terminus 2.x with Composer
RUN /usr/bin/env COMPOSER_BIN_DIR=/usr/local/bin composer -n --working-dir=/usr/local/share/terminus require pantheon-systems/terminus:"^2"

рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдПрдВ рдФрд░ рдкреБрд╢ рдХрд░реЗрдВ ╨▓ рдХрдВрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдгрд╕реЗ рдПрдХ рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Dockerfile рдФрд░ рдЗрд╕реЗ GitLab рдкрд░ рдкреБрд╢ рдХрд░реЗрдВред

рдЦрдВрдб рдЦреЛрд▓рдирд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА GitLab рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВред рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╣реБрдЖ рддреЛ рд╣рдорд╛рд░реА рдЫрд╡рд┐ рд╡рд╣реАрдВ рд░рд╣реЗрдЧреАред' рдЫрд╡рд┐ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд▓рд┐рдЦреЗрдВ - рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ .gitlab-ci.yml.

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдЕрдиреБрднрд╛рдЧ script рд╕рдорд╕реНрдпрд╛ рдореЗрдВ deploy:multidev рдмрдврд╝рдирд╛ рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдБред рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ private/multidev-deploy.sh:

#!/bin/bash

# Store the mr- environment name
export PANTHEON_ENV=mr-$CI_MERGE_REQUEST_IID

# Authenticate with Terminus
terminus auth:login --machine-token=$PANTHEON_MACHINE_TOKEN

# Checkout the merge request source branch
git checkout $CI_COMMIT_REF_NAME

# Add the Pantheon Git repository as an additional remote
git remote add pantheon $PANTHEON_GIT_URL

# Push the merge request source branch to Pantheon
git push pantheon $CI_COMMIT_REF_NAME:$PANTHEON_ENV --force

# Create a function for determining if a multidev exists
TERMINUS_DOES_MULTIDEV_EXIST()
{
    # Stash a list of Pantheon multidev environments
    PANTHEON_MULTIDEV_LIST="$(terminus multidev:list ${PANTHEON_SITE} --format=list --field=id)"

    while read -r multiDev; do
        if [[ "${multiDev}" == "$1" ]]
        then
            return 0;
        fi
    done <<< "$PANTHEON_MULTIDEV_LIST"

    return 1;
}

# If the mutltidev doesn't exist
if ! TERMINUS_DOES_MULTIDEV_EXIST $PANTHEON_ENV
then
    # Create it with Terminus
    echo "No multidev for $PANTHEON_ENV found, creating one..."
    terminus multidev:create $PANTHEON_SITE.dev $PANTHEON_ENV
else
    echo "The multidev $PANTHEON_ENV already exists, skipping creating it..."
fi

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдирд┐рдЬреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИ рдФрд░ рдкреИрдВрдерд┐рдпрди рддрдХ рд╡реЗрдм рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдорд▓реНрдЯреАрдбреЗрд╡ рд▓реЙрдЬрд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЖрдЗрдП рдЕрдм рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрджреНрдпрддрди рдХрд░реЗрдВ deploy:multidev рдлрд╝рд╛рдЗрд▓ .gitlab-ci.ymlрддрд╛рдХрд┐ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рдХрд▓реЗ:

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Run the multidev deploy script
    - "/bin/bash ./private/multidev-deploy.sh"
  only:
    - merge_requests

рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдирд┐рд░реНрдорд┐рдд рдХрд╕реНрдЯрдо рдЫрд╡рд┐ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВ, рддреЛ рдЖрдЗрдП рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛрдбрд╝реЗрдВ image рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдпреВрдЖрд░рдПрд▓ рд╕реЗ рд▓реЗрдХрд░ .gitlab-ci.yml. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ .gitlab-ci.yml:

image: registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest

stages:
- deploy

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

deploy:dev:
  stage: deploy
  environment:
    name: dev
    url: https://dev-$PANTHEON_SITE.pantheonsite.io/
  script:
    - git remote add pantheon $PANTHEON_GIT_URL
    - git push pantheon master --force
  only:
    - master

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Run the multidev deploy script
    - "/bin/bash ./private/multidev-deploy.sh"
  only:
    - merge_requests

рдЬреЛрдбрд╝реЗрдВ, рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ рдФрд░ рднреЗрдЬреЗрдВ private/multidev-deploy.sh ╨╕ .gitlab-ci.yml. рдЕрдм рд╣рдо GitLab рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ CI/CD рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдзреИрд░реНрдп рд░рдЦреЗрдВ: рдорд▓реНрдЯреАрдбреЗрд╡ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╣рдо рдкреИрдВрдерд┐рдпрди рдкрд░ рдорд▓реНрдЯреАрдбреЗрд╡ рд╕реВрдЪреА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдУрд╣ рдЪрдорддреНрдХрд╛рд░! рдмрд╣реБрджреЗрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг mr-2 рдкрд╣рд▓реЗ рд╕реЗ рдпрд╣рд╛рдВред

GitLab рдФрд░ Pantheon рдХреЛ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ Drupal рдФрд░ WordPress рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдирд┐рд╖реНрдХрд░реНрд╖

рдЬрдм рд╣рдордиреЗ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рдореЗрд░реА рдЯреАрдо рдХреЛ рдмрд╣реБрдд рдордЬрд╝рд╛ рдЖрдпрд╛ред

GitLab рдФрд░ Pantheon рдХреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЯреВрд▓ рдХреЗ рд╕рд╛рде, рдЖрдк GitLab рдХреЛ Pantheon рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЪреВрдБрдХрд┐ рд╣рдо GitLab CI/CD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдмрдврд╝рдиреЗ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реЛрдЧреАред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ:

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк GitLab, Pantheon рдФрд░ рдСрдЯреЛрдореЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВред

PS рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЯрд░реНрдорд┐рдирд╕, рдкреИрдВрдерд┐рдпрди рдХрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдкреИрдВрдерд┐рдпрди рдореЗрдВ рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг 2 рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рдЯрд░реНрдорд┐рдирд╕ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди GitLab рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ v2 рдмреАрдЯрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВред рдЯрд░реНрдорд┐рдирд╕ рдЯреАрдо рдХреЗ рд▓рд┐рдП build:project:create рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдкреИрдиреНрдерд┐рдпреЙрди рдЯреЛрдХрди рдФрд░ рдЧрд┐рдЯрд▓реИрдм рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣ рдХрдВрдкреЛрдЬрд░ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдЧреА, рдЧрд┐рдЯрд▓реИрдм рдореЗрдВ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдЧреА, рдПрдХ рдирдИ рдкреИрдВрдерд┐рдпрди рд╕рд╛рдЗрдЯ, рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдФрд░ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧреАред

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдПрдВрдбреНрд░рдпреВ рдЯреЗрд▓рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рдмрдирд╛рддрд╛ рд╣реИ рд╕рдм рджреЗрд╡рддрд╛рдУрдВ рдХрд╛ рдордВрджрд┐рд░.

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

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