GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ
рдЖрдордЪреЗ рдЧреЗрд╕реНрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЯреВрд▓реНрд╕ рдХреНрд░рд┐рдПрдЯрд░ рдкреЕрдиреНрдерд┐рдСрди рдпреЗрдереЗ GitLab CI/CD рд╡рд╛рдкрд░реВрди рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рддрд╛рдд.

╨Т рджреЗрд╡рддрд╛ рдореА рд╡рд┐рдХрд╕рдХ рд╕рдВрдмрдВрдзрд╛рдВрдордзреНрдпреЗ рдХрд╛рдо рдХрд░рддреЛ, рдореНрд╣рдгреВрди рдореА рдиреЗрд╣рдореА WordPress рдЖрдгрд┐ Drupal рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд╛рддреАрд▓ рдСрдЯреЛрдореЗрд╢рди рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рдорд╛рд░реНрдЧ рд╢реЛрдзрдд рдЕрд╕рддреЛ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдорд▓рд╛ рдирд╡реАрди рд╕рд╛рдзрдирд╛рдВрд╕рд╣ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреЗ рдЖрдгрд┐ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдЬреЛрдбрдгреЗ рдЖрд╡рдбрддреЗ.

рдореА рдЕрдиреЗрдХрджрд╛ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдПрдХрд╛рдЪ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕рд░реНрд╡реНрд╣рд░рд╢реА рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛рдирд╛ рдкрд╛рд╣рддреЛ.

рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╕рд░реНрд╡реНрд╣рд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪреА рдкрд╛рд│реА рдпреЗрдгреНрдпрд╛рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреЗ рдХрд┐рдВрд╡рд╛ рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдЯреАрдк рдЕрд╕рд▓реЗрд▓реА URL рдкрд╛рдард╡рдгреЗ рдЦреВрдк рдЖрдирдВрджрджрд╛рдпреА рдЖрд╣реЗ: "рдпреЗрдереЗ рдкрд╣рд╛, рдкрд░рдВрддреБ рдЕрджреНрдпрд╛рдк рдпреЗрдереЗ рдкрд╛рд╣реВ рдирдХрд╛."

рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд╛рддрд╛рд╡рд░рдг - рдЫрд╛рди рдкреЕрдВрдерд┐рдСрди рдЯреВрд▓реНрд╕рдкреИрдХреА рдПрдХ - рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЗ, рдХрд╛рд░рдг рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╣ рддреБрдореНрд╣реА рдорд╛рдЧрдгреАрдиреБрд╕рд╛рд░ рдЧрд┐рдЯ рд╢рд╛рдЦрд╛рдВрд╕рд╛рдареА рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛. рдкреНрд░рддреНрдпреЗрдХ рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдЪрд╛ рд╕реНрд╡рддрдГрдЪрд╛ URL рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕рддреЛ, рддреНрдпрд╛рдореБрд│реЗ рд╡рд┐рдХрд╛рд╕рдХ рд╢рд╛рдВрддрдкрдгреЗ рдХрд╛рдо рдХрд░реВ рд╢рдХрддрд╛рдд, рдЧреБрдгрд╡рддреНрддрд╛ рддрдкрд╛рд╕реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдПрдХрдореЗрдХрд╛рдВрдЪреНрдпрд╛ рдкрд╛рдпрд╛рд╡рд░ рдкрд╛рдКрд▓ рди рдареЗрд╡рддрд╛ рдорд╛рдиреНрдпрддрд╛ рдорд┐рд│рд╡реВ рд╢рдХрддрд╛рдд.

рдкрд░рдВрддреБ рдкреЕрдиреНрдерд┐рдСрдирдХрдбреЗ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдХрд┐рдВрд╡рд╛ рд╕рддрдд рдПрдХрддреНрд░реАрдХрд░рдг рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрди (CI/CD) рд╕рд╛рдзрдиреЗ рдирд╛рд╣реАрдд. рдкрд░рдВрддреБ рд╣реЗ рдПрдХ рд▓рд╡рдЪрд┐рдХ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рддреБрдореНрд╣реА рдХреЛрдгрддреАрд╣реА рд╕рд╛рдзрдиреЗ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░реВ рд╢рдХрддрд╛.

рдореА рд╣реЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдХреА рдХрд╛рд░реНрдпрд╕рдВрдШ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рдХрд╛рд╣реА рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддрд╛рдд рдЖрдгрд┐ рдЕрд╕реЗрдВрдмреНрд▓реА рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рд╡реЗрдЧрд│реА рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддрд╛рдд.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдЖрдгрд┐ CI/CD рд╕рд╛рдареА рднрд┐рдиреНрди рд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд. рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рднреЛрд╡рддрд╛рд▓реА рдлрд┐рд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рд╕рд╛рдзрдирд╛рдВрдордзреНрдпреЗ рд╕реНрд╡рд┐рдЪ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рд╡рд░ рдЧрд┐рдЯреЕрдм рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕рдЪрд╛ рд╕рдВрдкреВрд░реНрдг рд╕рдВрдЪ рдЖрд╣реЗ: рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг, рддрд┐рдХрд┐рдЯреЗ, рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреНрдпрд╛, рд╕рд░реНрд╡реЛрддреНрддрдо-рдЗрди-рдХреНрд▓рд╛рд╕ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рдХрдВрдЯреЗрдирд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА рдЖрдгрд┐ рдпрд╛рд╕рд╛рд░рдЦреЗ рд╕рд░реНрд╡рдХрд╛рд╣реА. рддреБрдордЪрд╛ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рд╡рд░реНрдХрдлреНрд▓реЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЗрддрдХрд╛ рдСрдлрд░ рджреЗрдгрд╛рд░рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдорд▓рд╛ рдЕрдЬреВрди рдЖрд▓реЗрд▓рд╛ рдирд╛рд╣реА.

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

рдпрд╛ рдЯреНрдпреБрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ GitLab рдЖрдгрд┐ Pantheon рдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрдгрд┐ рддреБрдордЪреЗ WordPress рдЖрдгрд┐ Drupal рд╡рд░реНрдХрдлреНрд▓реЛ рдХрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рд╛рдпрдЪреЗ рддреЗ рд╕рд╛рдВрдЧреЗрди.

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

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

рдпрд╛ рдкреЛрд╕реНрдЯрд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рдкреЕрдиреНрдерд┐рдСрди рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯрд▓рд╛ рддреАрди рдШрдЯрдХрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ: рдХреЛрдб, рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдгрд┐ рдлрд╛рдЗрд▓реНрд╕.

рдХреЛрдбрдордзреНрдпреЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрд░, рдкреНрд▓рдЧрдЗрди рдЖрдгрд┐ рдереАрдо рд╕рд╛рд░рдЦреНрдпрд╛ CMS рдлрд╛рдпрд▓реАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ. рдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдордзреНрдпреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд Git рднрд╛рдВрдбрд╛рд░, Pantheon рджреНрд╡рд╛рд░реЗ рд╣реЛрд╕реНрдЯ рдХреЗрд▓реЗрд▓реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЖрдореНрд╣реА Git рд╕рд╣ GitLab рддреЗ Pantheon рдкрд░реНрдпрдВрдд рдХреЛрдб рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░реВ рд╢рдХрддреЛ.
рдкреЕрдиреНрдерд┐рдСрдирдордзреАрд▓ рдлрд╛рдпрд▓реА рдореАрдбрд┐рдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдЖрд╣реЗрдд, рдореНрд╣рдгрдЬреЗрдЪ рд╕рд╛рдЗрдЯрд╕рд╛рдареА рдкреНрд░рддрд┐рдорд╛. рд╕рд╛рдорд╛рдиреНрдпрдд: рддреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рдЕрдкрд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ Git рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддреЗ.

рдПрдХ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рд╛, рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛ рдкрдБрдерд┐рдпрди рд╡рд░реНрдХрдлреНрд▓реЛ рдХрд┐рдВрд╡рд╛ рдбреЗрдореЛрд╕рд╛рдареА рд╕рд╛рдЗрди рдЕрдк рдХрд░рд╛ pantheon.io рд╡рд░.

рдЧреГрд╣реАрддрдХреЗ

рдкреЕрдиреНрдерд┐рдСрди рдЖрдгрд┐ рдЧрд┐рдЯрд▓реЕрдмрд╡рд░реАрд▓ рдорд╛рдЭрд╛ рдкреНрд░рдХрд▓реНрдк рдореНрд╣рдгрддрд╛рдд pantheon-gitlab-blog-demo. рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдирд╛рд╡ рдЕрджреНрд╡рд┐рддреАрдп рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпреЗрдереЗ рдЖрдкрдг рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╕рд╛рдЗрдЯрд╡рд░ рдХрд╛рдо рдХрд░реВ. рддреБрдореНрд╣реА Drupal рдШреЗрдК рд╢рдХрддрд╛, рдкрдг рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдЧреЛрд╖реНрдЯреА рдмрджрд▓рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддреАрд▓.

рдореА рд╡рд╛рдкрд░реЗрди Git рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирдЖрдгрд┐ рддреБрдореНрд╣реА рдХрд╛рдо рдХрд░реВ рд╢рдХрддрд╛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлреЗрд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╡реЗ рдЕрд╕рд▓реНрдпрд╛рд╕.

рдПрдХ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рд╛

рдкреНрд░рдердо, рддрдпрд╛рд░ рдХрд░реВрдпрд╛ GitLab рдкреНрд░рдХрд▓реНрдк (рдЖрдореНрд╣реА рдпрд╛рд╡рд░ рдирдВрддрд░ рдкрд░рдд рдпреЗрдК).

рдЖрддрд╛ Pantheon рд╡рд░ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ. рдордЧ рдЖрдореНрд╣реА рд╕рд╛рдЗрдЯ рдбреЕрд╢рдмреЛрд░реНрдбрд╕рд╛рдареА рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЛ.

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

рдПрдХрджрд╛ рдЖрдореНрд╣реА рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдкреЕрдиреНрдерд┐рдСрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░ рдкрд░рдд рдЬрд╛ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕ рдореЛрдб Git рдордзреНрдпреЗ рдмрджрд▓рд╛.

GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

GitLab рд╡рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдорд┐рдЯ

рдЖрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреЕрдиреНрдерд┐рдСрди рд╕рд╛рдЗрдЯрд╡рд░реВрди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрдб GitLab рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдкреЕрдиреНрдерд┐рдСрди рд╕рд╛рдЗрдЯрдЪреНрдпрд╛ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдХреЛрдб рдХреНрд▓реЛрди рдХрд░рддреЛ рдЖрдгрд┐ рдирдВрддрд░ рддреЛ GitLab рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдкрд╛рдард╡рддреЛ.

рддреЗ рд╕реЛрдкреЗ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, Pantheon рдордзреНрдпреЗ SSH рдХреА рдЬреЛрдбрд╛ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдкреЕрдиреНрдерд┐рдСрди рдЧрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдХреНрд▓реЛрди рдХрд░рддрд╛рдирд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд╛рд╕рд╡рд░реНрдб рдЯрд╛рдХрд╛рд╡рд╛ рд▓рд╛рдЧрдгрд╛рд░ рдирд╛рд╣реА. рддреНрдпрд╛рдЪ рд╡реЗрд│реА рдЖрдзреАрдЪ GitLab рдордзреНрдпреЗ SSH рдХреА рдЬреЛрдбрд╛.

рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░реАрд▓ рдХреНрд▓реЛрди рд╡рд┐рде рдЧрд┐рдЯ рдлреАрд▓реНрдбрдордзреАрд▓ рдХрдорд╛рдВрдб рдХреЙрдкреА рдХрд░реВрди рдкреЕрдиреНрдерд┐рдСрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдХреНрд▓реЛрди рдХрд░рд╛.

GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ
рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рд╣рд╡реА рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд╛рдЧрджрдкрддреНрд░реЗ рд╡рд╛рдЪрд╛ Git for Pantheon рд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ.

рдЖрддрд╛ рдмрджрд▓реВрдпрд╛ git remote originPantheon рдРрд╡рдЬреА GitLab рдХрдбреЗ рдирд┐рд░реНрджреЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рддреЗ рдХрд░рддрд╛ рдпреЗрддреЗ ╨║╨╛╨╝╨░╨╜╨┤╨╛╨╣ git remote.

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

GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

рдореБрд▓рднреВрддрд░рд┐рддреНрдпрд╛ git remote рдХреЛрдб рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рдкреНрд░рддреАрд╕рд╛рдареА - origin. рд╣реЗ рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ c git remote set-url origin [URL ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╤П GitLab], рдЬреЗрдереЗ рдХрдВрд╕ рдРрд╡рдЬреА рдЖрдкрдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ URL рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рддреЛ.

рд╢реЗрд╡рдЯреА, рдЖрдореНрд╣реА рд▓реЙрдиреНрдЪ рдХрд░рддреЛ git push origin master --forceрд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрдб рдкреЕрдиреНрдерд┐рдСрди рддреЗ рдЧрд┐рдЯрд▓реЕрдмрд╡рд░ рдврдХрд▓рдгреНрдпрд╛рд╕рд╛рдареА.

-рдлреЛрд░реНрд╕ рдкрд░реНрдпрд╛рдп рдлрдХреНрдд рдПрдХрджрд╛рдЪ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдордЧ рд╕рдВрдШрд╛рдВрдордзреНрдпреЗ git push рддреЗ GitLab рд╡рд░ рдирд╕реЗрд▓.

рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓реНрд╕ рдЖрдгрд┐ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░рдгреЗ

Pantheon рдЖрдгрд┐ 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 рд╡рд░реВрди Pantheon рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдкреЕрдиреНрдерд┐рдСрди рджрд╕реНрддрдРрд╡рдЬрд╛рддреАрд▓ рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЛ Pantheon рдордзреНрдпреЗ SSH рдХреА рдЬреЛрдбрдд рдЖрд╣реЗ рдЖрдгрд┐ рд╣реА рдкрд╛рдпрд░реА рдХрд░рд╛.

рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛: рдЦрд╛рдЬрдЧреА SSH GitLab рдордзреНрдпреЗ рдЖрд╣реЗ, рдЙрдШрдбрд╛ SSH Pantheon рдордзреНрдпреЗ рдЖрд╣реЗ.

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

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

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 GitLab рд╡рд░.

рдЙрдкрдпреЛрдЬрди рддрдкрд╛рд╕рдд рдЖрд╣реЗ

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

GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

GitLab рдЖрдгрд┐ Pantheon рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Drupal рдЖрдгрд┐ WordPress рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

рдкреЕрдиреНрдерд┐рдСрдирд▓рд╛ рдорд░реНрдЬ рд╡рд┐рдирдВрддреА рдзрд╛рдЧреЗ рдкрд╛рдард╡рдд рдЖрд╣реЗ

рдпреЗрдереЗ рдЖрдкрдг рдорд╛рдЭреЗ рдЖрд╡рдбрддреЗ рдкреЕрдиреНрдерд┐рдСрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╡рд╛рдкрд░реВ - рдмрд╣реБрджреЗрд╡, рдЬрд┐рдереЗ рддреБрдореНрд╣реА рдорд╛рдЧрдгреАрдиреБрд╕рд╛рд░ Git рд╢рд╛рдЦрд╛рдВрд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд Pantheon рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛.

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

рдкреНрд░рдердо рд╕реНрдерд╛рдирд┐рдХ рд╡рд╛рдкрд░реВрди рдирд╡реАрди Git рд╢рд╛рдЦрд╛ рдмрдирд╡реВ git checkout -b multidev-support. рдЖрддрд╛ рдкреБрдиреНрд╣рд╛ рдХрд╛рд╣реАрддрд░реА рдмрджрд▓реВрдпрд╛ .gitlab-ci.yml.

рдорд▓рд╛ Pantheon рдкрд░реНрдпрд╛рд╡рд░рдг рдирд╛рд╡рд╛рдордзреНрдпреЗ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреА рдХреНрд░рдорд╛рдВрдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рд╛рдпрд▓рд╛ рдЖрд╡рдбреЗрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреНрд░рдердо рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреА рдЖрд╣реЗ mr-1, рджреБрд╕рд░рд╛ - mr-2 рдЗ.

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

рдЖрдкрдг рдШреЗрдК рд╢рдХрддреЛ $CI_MERGE_REQUEST_IIDрд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреА рдХреНрд░рдорд╛рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рд╣реЗ рд╕рд░реНрд╡ рдЖрдореНрд╣реА рдЖрдзреА рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЬрд╛рдЧрддрд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╣ рд▓рд╛рдЧреВ рдХрд░реВ рдЖрдгрд┐ рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдПрдХ рдирд╡реАрди 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:
    # 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 рд╡рд░реНрдХрдлреНрд▓реЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА CI/CD рдХрд╛рд░реНрдп рдХрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗ рдкрд╛рд╣рддреЛ 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 CI/CD рдХрд╛рд░реНрдпрд╛рдВрдордзреНрдпреЗ. рдЬрд░ рдЖрдкрдг рдУрдкрди рдПрдиреНрд╡реНрд╣рд╛рдпрд░реНрдирдореЗрдВрдЯ рдЖрдпрдХреЙрдирд╡рд░ рдХреНрд▓рд┐рдХ рдХреЗрд▓реЗ, рддрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреЕрдиреНрдерд┐рдСрдирд╡рд░реАрд▓ рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдЪреНрдпрд╛ 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 рдХрдбреЗ рдХрдВрдЯреЗрдирд░ рдиреЛрдВрджрдгреА рдЖрд╣реЗ, рдЬрд┐рдереЗ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд╕рд╛рдареА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдЖрдгрд┐ рдареЗрд╡реВ рд╢рдХрддреЛ. Pantheon рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯрд░реНрдорд┐рдирд╕рд╕рд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░реВрдпрд╛.

рдЯрд░реНрдорд┐рдирд╕ рд╣реЗ 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

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦрд╛рдЬрдЧреА рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЖрд╣реЗ рдЖрдгрд┐ Pantheon рдордзреНрдпреЗ рд╡реЗрдм рдкреНрд░рд╡реЗрд╢рд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдд тАЛтАЛрдирд╛рд╣реА. рдЖрдордЪреНрдпрд╛ рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд▓реЙрдЬрд┐рдХрд╕рд╛рдареА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╣реЗ. рдЪрд▓рд╛ рдЖрддрд╛ рд╡рд┐рднрд╛рдЧ рдЕрдкрдбреЗрдЯ рдХрд░реВрдпрд╛ 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 рдиреЛрдВрджрдгреА URL рдкрд╛рд╕реВрди рддреЗ .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 рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдкреЕрдиреНрдерд┐рдСрди рдЯреЛрдХрди рдЖрдгрд┐ рдЧрд┐рдЯрд▓реЕрдм рдЯреЛрдХрди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреА рд░рдЪрдирд╛рдХрд╛рд░ рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЪрд╛рдЪрдгреАрд╕рд╣ рдирдореБрдирд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдкреИрдХреА рдПрдХ рддреИрдирд╛рдд рдХрд░реЗрд▓, GitLab рдордзреНрдпреЗ рдПрдХ рдирд╡реАрди рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░реЗрд▓, рдПрдХ рдирд╡реАрди Pantheon рд╕рд╛рдЗрдЯ, рдЖрдгрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрдгрд┐ SSH рдХреА рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рдВрдирд╛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрд▓.

рд▓реЗрдЦрдХрд╛рдмрджреНрджрд▓

рдордзреНрдпреЗ рдЕрдБрдбреНрд░реНрдпреВ рдЯреЗрд▓рд░ рд╡рд┐рдХрд╕рдХрд╛рдВрд╕рд╛рдареА рд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рддрд╛рдд рджреЗрд╡рддрд╛.

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

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