рдЖрдордЪреЗ рдЧреЗрд╕реНрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЯреВрд▓реНрд╕ рдХреНрд░рд┐рдПрдЯрд░ рдкреЕрдиреНрдерд┐рдСрди рдпреЗрдереЗ GitLab CI/CD рд╡рд╛рдкрд░реВрди рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рддрд╛рдд.
╨Т
рдореА рдЕрдиреЗрдХрджрд╛ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдПрдХрд╛рдЪ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕рд░реНрд╡реНрд╣рд░рд╢реА рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛рдирд╛ рдкрд╛рд╣рддреЛ.
рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╕рд░реНрд╡реНрд╣рд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪреА рдкрд╛рд│реА рдпреЗрдгреНрдпрд╛рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреЗ рдХрд┐рдВрд╡рд╛ рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдЯреАрдк рдЕрд╕рд▓реЗрд▓реА URL рдкрд╛рдард╡рдгреЗ рдЦреВрдк рдЖрдирдВрджрджрд╛рдпреА рдЖрд╣реЗ: "рдпреЗрдереЗ рдкрд╣рд╛, рдкрд░рдВрддреБ рдЕрджреНрдпрд╛рдк рдпреЗрдереЗ рдкрд╛рд╣реВ рдирдХрд╛."
рдкрд░рдВрддреБ рдкреЕрдиреНрдерд┐рдСрдирдХрдбреЗ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдХрд┐рдВрд╡рд╛ рд╕рддрдд рдПрдХрддреНрд░реАрдХрд░рдг рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрди (CI/CD) рд╕рд╛рдзрдиреЗ рдирд╛рд╣реАрдд. рдкрд░рдВрддреБ рд╣реЗ рдПрдХ рд▓рд╡рдЪрд┐рдХ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рддреБрдореНрд╣реА рдХреЛрдгрддреАрд╣реА рд╕рд╛рдзрдиреЗ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░реВ рд╢рдХрддрд╛.
рдореА рд╣реЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдХреА рдХрд╛рд░реНрдпрд╕рдВрдШ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рдХрд╛рд╣реА рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддрд╛рдд рдЖрдгрд┐ рдЕрд╕реЗрдВрдмреНрд▓реА рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рд╡реЗрдЧрд│реА рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддрд╛рдд.
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдЖрдгрд┐ CI/CD рд╕рд╛рдареА рднрд┐рдиреНрди рд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд. рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рднреЛрд╡рддрд╛рд▓реА рдлрд┐рд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рд╕рд╛рдзрдирд╛рдВрдордзреНрдпреЗ рд╕реНрд╡рд┐рдЪ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.
рд╡рд░
рдорд▓рд╛ рдСрдЯреЛрдореЗрд╢рди рдЖрд╡рдбрддреЗ, рдореНрд╣рдгреВрди рдореА рдкреЕрдиреНрдерд┐рдСрдирд▓рд╛ GitLab рд▓рд╛ рдХрд╕реЗ рдЬреЛрдбрд╛рдпрдЪреЗ рддреЗ рд╢рд┐рдХрд▓реЛ рдЬреЗрдгреЗрдХрд░реВрди GitLab рд╡рд░реАрд▓ рдореБрдЦреНрдп рд╢рд╛рдЦреЗрддреАрд▓ рд╡рдЪрдирдмрджреНрдзрддрд╛ Pantheon рдордзреАрд▓ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рддреИрдирд╛рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓. рдЖрдгрд┐ GitLab рд╡рд░реАрд▓ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреНрдпрд╛ рдкреЕрдиреНрдерд┐рдСрдирдордзреАрд▓ рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдХреЛрдб рддрдпрд╛рд░ рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд.
рдпрд╛ рдЯреНрдпреБрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ GitLab рдЖрдгрд┐ Pantheon рдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрдгрд┐ рддреБрдордЪреЗ WordPress рдЖрдгрд┐ Drupal рд╡рд░реНрдХрдлреНрд▓реЛ рдХрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рд╛рдпрдЪреЗ рддреЗ рд╕рд╛рдВрдЧреЗрди.
рдЕрд░реНрдерд╛рдд рд╣реЗ рд╢рдХреНрдп рдЖрд╣реЗ,
рдкрд░рд┐рдЪрдп
рдпрд╛ рдкреЛрд╕реНрдЯрд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рдкреЕрдиреНрдерд┐рдСрди рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯрд▓рд╛ рддреАрди рдШрдЯрдХрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ: рдХреЛрдб, рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдгрд┐ рдлрд╛рдЗрд▓реНрд╕.
рдХреЛрдбрдордзреНрдпреЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрд░, рдкреНрд▓рдЧрдЗрди рдЖрдгрд┐ рдереАрдо рд╕рд╛рд░рдЦреНрдпрд╛ CMS рдлрд╛рдпрд▓реАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ. рдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдордзреНрдпреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд
рдкреЕрдиреНрдерд┐рдСрдирдордзреАрд▓ рдлрд╛рдпрд▓реА рдореАрдбрд┐рдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдЖрд╣реЗрдд, рдореНрд╣рдгрдЬреЗрдЪ рд╕рд╛рдЗрдЯрд╕рд╛рдареА рдкреНрд░рддрд┐рдорд╛. рд╕рд╛рдорд╛рдиреНрдпрдд: рддреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рдЕрдкрд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ Git рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддреЗ.
рдЧреГрд╣реАрддрдХреЗ
рдкреЕрдиреНрдерд┐рдСрди рдЖрдгрд┐ рдЧрд┐рдЯрд▓реЕрдмрд╡рд░реАрд▓ рдорд╛рдЭрд╛ рдкреНрд░рдХрд▓реНрдк рдореНрд╣рдгрддрд╛рдд pantheon-gitlab-blog-demo
. рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдирд╛рд╡ рдЕрджреНрд╡рд┐рддреАрдп рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпреЗрдереЗ рдЖрдкрдг рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╕рд╛рдЗрдЯрд╡рд░ рдХрд╛рдо рдХрд░реВ. рддреБрдореНрд╣реА Drupal рдШреЗрдК рд╢рдХрддрд╛, рдкрдг рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдЧреЛрд╖реНрдЯреА рдмрджрд▓рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддреАрд▓.
рдореА рд╡рд╛рдкрд░реЗрди
рдПрдХ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рд╛
рдкреНрд░рдердо, рддрдпрд╛рд░ рдХрд░реВрдпрд╛
рдЖрддрд╛
рдЬрд░ рддреБрдордЪреЗ рд╣рд╛рдд рдХрд╛рд╣реАрддрд░реА рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдЦрд╛рдЬрдд рдЕрд╕рддреАрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреНрд▓рдЧрдЗрди рдХрд╛рдврд╛ рдХрд┐рдВрд╡рд╛ рдЬреЛрдбрд╛, рдзреАрд░ рдзрд░рд╛. рд╕рд╛рдЗрдЯ рдЕрджреНрдпрд╛рдк GitLab рд╢реА рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ рдХреЛрдб рдмрджрд▓ GitLab рджреНрд╡рд╛рд░реЗ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗрдд.
рдПрдХрджрд╛ рдЖрдореНрд╣реА рд╡рд░реНрдбрдкреНрд░реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдкреЕрдиреНрдерд┐рдСрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░ рдкрд░рдд рдЬрд╛ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕ рдореЛрдб Git рдордзреНрдпреЗ рдмрджрд▓рд╛.
GitLab рд╡рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдорд┐рдЯ
рдЖрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреЕрдиреНрдерд┐рдСрди рд╕рд╛рдЗрдЯрд╡рд░реВрди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЛрдб GitLab рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдкреЕрдиреНрдерд┐рдСрди рд╕рд╛рдЗрдЯрдЪреНрдпрд╛ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдХреЛрдб рдХреНрд▓реЛрди рдХрд░рддреЛ рдЖрдгрд┐ рдирдВрддрд░ рддреЛ GitLab рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдкрд╛рдард╡рддреЛ.
рддреЗ рд╕реЛрдкреЗ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА,
рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░реАрд▓ рдХреНрд▓реЛрди рд╡рд┐рде рдЧрд┐рдЯ рдлреАрд▓реНрдбрдордзреАрд▓ рдХрдорд╛рдВрдб рдХреЙрдкреА рдХрд░реВрди рдкреЕрдиреНрдерд┐рдСрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдХреНрд▓реЛрди рдХрд░рд╛.
рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рд╣рд╡реА рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд╛рдЧрджрдкрддреНрд░реЗ рд╡рд╛рдЪрд╛
рдЖрддрд╛ рдмрджрд▓реВрдпрд╛ git remote origin
Pantheon рдРрд╡рдЬреА GitLab рдХрдбреЗ рдирд┐рд░реНрджреЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рддреЗ рдХрд░рддрд╛ рдпреЗрддреЗ ╨║╨╛╨╝╨░╨╜╨┤╨╛╨╣ git remote
рдЪрд▓рд╛ GitLab рдкреНрд░рдХрд▓реНрдкрд╛рд╡рд░ рдЬрд╛рдК рдЖрдгрд┐ рдкреНрд░рдХрд▓реНрдк рддрдкрд╢реАрд▓ рдкреГрд╖реНрдард╛рд╡рд░реАрд▓ рдХреНрд▓реЛрди рдбреНрд░реЙрдкрдбрд╛рдЙрдирдордзреВрди рд░реЗрдкреЙрдЬрд┐рдЯрд░реА URL рдХреЙрдкреА рдХрд░реВ. рдХреНрд▓реЛрди рд╡рд┐рде рдПрд╕рдПрд╕рдПрдЪ рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбреВ рдпрд╛, рдХрд╛рд░рдг рдЖрдореНрд╣реА рдЖрдзреАрдЪ рдПрд╕рдПрд╕рдПрдЪ рдХреА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗ.
рдореБрд▓рднреВрддрд░рд┐рддреНрдпрд╛ 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 рдХрдбреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдЧрджрдкрддреНрд░реЗ рдЖрд╣реЗрдд. рдмрдШреВрдпрд╛
рдЖрддрд╛ рдЖрдореНрд╣реА рдкрд╣рд┐рд▓реЗ рджреЛрди рдЯрдкреНрдкреЗ рдкреВрд░реНрдг рдХрд░реВ: рдЪрд▓рд╛ ssh-keygen рд╕рд╣ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдирд╡реАрди SSH рдХреА рдЬреЛрдбреА рддрдпрд╛рд░ рдХрд░реВ рдЖрдгрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдореНрд╣рдгреВрди рдЦрд╛рдЬрдЧреА рдХреА рдЬреЛрдбреВ..
рдордЧ рдЖрдореНрд╣реА рд╡рд┐рдЪрд╛рд░реВ SSH_PRIVATE_KEY
рдХрд╕реЗ
рддрд┐рд╕рд░реНтАНрдпрд╛ рдЖрдгрд┐ рдЪреМрдереНрдпрд╛ рдЪрд░рдгрд╛рдд рдЖрдкрдг рдПрдХ рдлрд╛рдИрд▓ рддрдпрд╛рд░ рдХрд░реВ .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 рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдкреЕрдиреНрдерд┐рдСрди рджрд╕реНрддрдРрд╡рдЬрд╛рддреАрд▓ рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЛ
рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛: рдЦрд╛рдЬрдЧреА SSH GitLab рдордзреНрдпреЗ рдЖрд╣реЗ, рдЙрдШрдбрд╛ SSH Pantheon рдордзреНрдпреЗ рдЖрд╣реЗ.
рдЪрд▓рд╛ рдЖрдгрдЦреА рдХрд╛рд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░реВрдпрд╛. рдкрд╣рд┐рд▓реНрдпрд╛рд▓рд╛ PANTHEON_SITE рдореНрд╣рдгрддрд╛рдд. рддреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рддреБрдордЪреНрдпрд╛ рдорд╢реАрдирд╡рд░реАрд▓ рдкреЕрдиреНрдерд┐рдСрди рд╕рд╛рдЗрдЯрдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ.
рдорд╢реАрдирд╡рд░реАрд▓ рдирд╛рд╡ рдХреНрд▓реЛрдирдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЧрд┐рдЯ рдХрдорд╛рдВрдбрд╕рд╣ рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗ рдЖрд╣реЗ. рддреБрдореНрд╣реА рдЖрдзреАрдЪ рд╕реНрдерд╛рдирд┐рдХрд░рд┐рддреНрдпрд╛ рд╕рд╛рдЗрдЯ рдХреНрд▓реЛрди рдХреЗрд▓реА рдЖрд╣реЗ, рдореНрд╣рдгреВрди рд╣реЗ рд╕реНрдерд╛рдирд┐рдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдЪреЗ рдирд╛рд╡ рдЕрд╕реЗрд▓.
рдкреБрдвреЗ, рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░реВ 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
рдкрдБрдерд┐рдпрди рдпреЗрдереЗ. рдЪрд▓рд╛ рдПрдХ рдирдЬрд░ рдЯрд╛рдХреВрдпрд╛.
рдкреЕрдиреНрдерд┐рдСрдирд▓рд╛ рдорд░реНрдЬ рд╡рд┐рдирдВрддреА рдзрд╛рдЧреЗ рдкрд╛рдард╡рдд рдЖрд╣реЗ
рдпреЗрдереЗ рдЖрдкрдг рдорд╛рдЭреЗ рдЖрд╡рдбрддреЗ рдкреЕрдиреНрдерд┐рдСрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╡рд╛рдкрд░реВ -
рдкреНрд░рдердо рд╕реНрдерд╛рдирд┐рдХ рд╡рд╛рдкрд░реВрди рдирд╡реАрди 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
рджрд╛рдмреВрди рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреА рддрдпрд╛рд░ рдХрд░рд╛.
рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА CI/CD рдХрд╛рд░реНрдп рдХрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗ рдкрд╛рд╣рддреЛ deploy:multidev
.
рдкрд╣рд╛, рдПрдХ рдирд╡реАрди рдзрд╛рдЧрд╛ рдкреЕрдиреНрдерд┐рдСрдирд▓рд╛ рдкрд╛рдард╡рд▓рд╛ рдЖрд╣реЗ. рдкрд░рдВрддреБ рдЬрд░ рдЖрдкрдг рдкреЕрдиреНрдерд┐рдСрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░реАрд▓ рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд┐рднрд╛рдЧрд╛рдд рдЧреЗрд▓реЛ рддрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рддреЗрдереЗ рдирд╡реАрди рд╡рд╛рддрд╛рд╡рд░рдг рджрд┐рд╕рдгрд╛рд░ рдирд╛рд╣реА
рдЪрд▓рд╛ Git рд╢рд╛рдЦрд╛ рд╡рд┐рднрд╛рдЧ рдкрд╛рд╣реВ.
рдкрд░рд┐рдгрд╛рдореА, рдЖрдордЪрд╛ рдзрд╛рдЧрд╛ mr-1
рдкрдБрдерд┐рдСрдирд▓рд╛ рдкреЛрд╣реЛрдЪрд▓реЛ. рд╢рд╛рдЦреЗрддреВрди рд╡рд╛рддрд╛рд╡рд░рдг рдирд┐рд░реНрдорд╛рдг рдХрд░реВрдпрд╛ mr-1
.
рдЖрдореНрд╣реА рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЖрддрд╛ GitLab рд╡рд░ рдкрд░рдд рдЬрд╛рдК рдЖрдгрд┐ рд╡рд┐рднрд╛рдЧ рдкрд╛рд╣реВ рдСрдкрд░реЗрд╢рдиреНрд╕ > рдкрд░реНрдпрд╛рд╡рд░рдг. рдЪреНрдпрд╛ рдиреЛрдВрджреА рдкрд╛рд╣реВ dev
╨╕ mr-1
.
рдХрд╛рд░рдг рдЖрдореНрд╣реА рдПрдХ рдиреЛрдВрдж рдЬреЛрдбрд▓реА рдЖрд╣реЗ environment
рдирд╛рд╡рд╛рд╕рд╣ name
╨╕ url
CI/CD рдХрд╛рд░реНрдпрд╛рдВрдордзреНрдпреЗ. рдЬрд░ рдЖрдкрдг рдУрдкрди рдПрдиреНрд╡реНрд╣рд╛рдпрд░реНрдирдореЗрдВрдЯ рдЖрдпрдХреЙрдирд╡рд░ рдХреНрд▓рд┐рдХ рдХреЗрд▓реЗ, рддрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреЕрдиреНрдерд┐рдСрдирд╡рд░реАрд▓ рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдЪреНрдпрд╛ URL рд╡рд░ рдиреЗрд▓реЗ рдЬрд╛рдИрд▓.
рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣рдЪреА рдирд┐рд░реНрдорд┐рддреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рд╛
рддрддреНрд╡рддрдГ, рддреБрдореНрд╣реА рдпреЗрдереЗ рдерд╛рдВрдмреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд▓реАрди рд╡рд┐рдирдВрддреАрд╕рд╛рдареА рдорд▓реНрдЯреАрдбреЗрд╡реНрд╣ рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛, рдкрд░рдВрддреБ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.
рдкреЕрдиреНрдерд┐рдСрдирдордзреНрдпреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдЖрд╣реЗ
рдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рдирд╡реАрди рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╡рд┐рдирдВрддреАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рд╡рд╛рдкрд░реВрди рдирд╡реАрди рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░реВ git checkout -b auto-multidev-creation
.
GitLab CI/CD рдЯрд╛рд╕реНрдХрдордзреНрдпреЗ рдЯрд░реНрдорд┐рдирд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЯрд░реНрдорд┐рдирд╕рд╕рд╣ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рд╕рд╛рдареА рдорд╢реАрди рдЯреЛрдХрди рдЖрдгрд┐ рдЯрд░реНрдорд┐рдирд╕рд╕рд╣ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
PANTHEON_MACHINE_TOKEN
.
рдЬрд░ рддреБрдореНрд╣реА GitLab рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╕реЗ рдЬреЛрдбрд╛рдпрдЪреЗ рддреЗ рд╡рд┐рд╕рд░рд▓рд╛рдд, рддрд░ рдЖрдореНрд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдард┐рдХрд╛рдгреА рдкрд░рдд рдЬрд╛
PANTHEON_SITE
.
рдЯрд░реНрдорд┐рдирд╕рд╕рд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ
рддреБрдореНрд╣реА рдбреЙрдХрд░ рд╡рд╛рдкрд░рдд рдирд╕рд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рдлрд╛рдЗрд▓реНрд╕ рдЖрд╡рдбрдд рдирд╕рд▓реНрдпрд╛рд╕ Dockerfile
, рдорд╛рдЭреА рдкреНрд░рддрд┐рдорд╛ рдШреНрдпрд╛ registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
рдЖрдгрд┐ рд╣рд╛ рд╡рд┐рднрд╛рдЧ рд╡рдЧрд│рд╛.
рдЯрд░реНрдорд┐рдирд╕ рд╣реЗ 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
.
рд╡рд┐рднрд╛рдЧ 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
рдиреЛрдВрджрдгреА 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 рдЪреНрдпрд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдзрдирд╛рдВрд╕рд╣, рддреБрдореНрд╣реА GitLab рд▓рд╛ Pantheon рд╢реА рдЖрдкреЛрдЖрдк рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрддрд╛.
рдЖрдореНрд╣реА GitLab CI/CD рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдХрдлреНрд▓реЛрд▓рд╛ рд╡рд╛рдврдгреНрдпрд╛рд╕ рдЬрд╛рдЧрд╛ рдорд┐рд│реЗрд▓. рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпреЗрдереЗ рдХрд╛рд╣реА рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗрдд:
- рдПрдХ рдмрд┐рд▓реНрдб рдкрд╛рдпрд░реА рдЬреЛрдбрд╛.
- рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЪрд╛рдЪрдгреА рдЬреЛрдбрд╛.
- рдХреЛрдб рдорд╛рдирдХрд╛рдВрдЪреА рдкреВрд░реНрддрддрд╛ рд╣реЛрдд рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп рдЬреЛрдбрд╛.
- рдЬреЛрдбрд╛
рдбрд╛рдпрдиреЕрдорд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд╛рдЪрдгреА .
GitLab, Pantheon рдЖрдгрд┐ рдСрдЯреЛрдореЗрд╢рдирдмрджреНрджрд▓ рддреБрдордЪреЗ рдордд рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд│рд╡рд╛.
PS рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХрд╛ рдХреА рдЯрд░реНрдорд┐рдирд╕, рдкреЕрдВрдерд┐рдСрдирдЪреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓,
рдЖрдореНрд╣реА рдкреЕрдиреНрдерд┐рдСрди рдпреЗрдереЗ рдЖрдордЪреНрдпрд╛ рдЖрд╡реГрддреНрддреА 2 рд╡рд░ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рдо рдХреЗрд▓реЗ рдЖрд╣реЗ build:project:create
рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдкреЕрдиреНрдерд┐рдСрди рдЯреЛрдХрди рдЖрдгрд┐ рдЧрд┐рдЯрд▓реЕрдм рдЯреЛрдХрди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреА рд░рдЪрдирд╛рдХрд╛рд░ рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЪрд╛рдЪрдгреАрд╕рд╣ рдирдореБрдирд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдкреИрдХреА рдПрдХ рддреИрдирд╛рдд рдХрд░реЗрд▓, GitLab рдордзреНрдпреЗ рдПрдХ рдирд╡реАрди рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░реЗрд▓, рдПрдХ рдирд╡реАрди Pantheon рд╕рд╛рдЗрдЯ, рдЖрдгрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрдгрд┐ SSH рдХреА рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рдВрдирд╛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрд▓.
рд▓реЗрдЦрдХрд╛рдмрджреНрджрд▓
рдордзреНрдпреЗ рдЕрдБрдбреНрд░реНрдпреВ рдЯреЗрд▓рд░ рд╡рд┐рдХрд╕рдХрд╛рдВрд╕рд╛рдареА рд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рддрд╛рдд
рд╕реНрддреНрд░реЛрдд: www.habr.com