Pantheon рдорд╛ рд╣рд╛рдореНрд░реЛ рдЕрддрд┐рдерд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЙрдкрдХрд░рдг рдирд┐рд░реНрдорд╛рддрд╛ GitLab CI/CD рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ WordPress рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рдХрд╕рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдЫред
╨Т
рдо рдкреНрд░рд╛рдпрдГ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдПрдХрд▓ рд╕реНрдЯреЗрдЬрд┐рдЩ рд╕рд░реНрднрд░рд╕рдБрдЧ рд╕рдВрдШрд░реНрд╖ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рджреЗрдЦреНрдЫреБред
рдордзреНрдпрд╡рд░реНрддреА рд╕рд░реНрднрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╡рд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓рд╛рдИ рдиреЛрдЯрдХреЛ рд╕рд╛рде URL рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреЛ рдкрд╛рд▓реЛрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБ рднрдиреЗрдХреЛ рдпрд╕реНрддреЛ рдЖрдирдиреНрдж рд╣реЛ: "рдпрд╣рд╛рдБ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН, рддрд░ рдЕрдЭреИ рдпрд╣рд╛рдБ рдирд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред"
рддрд░ Pantheon рд╕рдБрдЧ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдиреНрддреНрд░рдг рд╡рд╛ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рд░ рддреИрдирд╛рддреА (CI/CD) рдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдХрд░рдг рдЫреИрдиред рддрд░ рдпреЛ рдПрдХ рд▓рдЪрд┐рд▓реЛ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╣реЛ рдЬрд╕рдХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВ рдХреБрдиреИ рдкрдирд┐ рдЙрдкрдХрд░рдгрд╣рд░реВ рдПрдХреАрдХреГрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдореИрд▓реЗ рдпреЛ рдкрдирд┐ рдпрд╛рдж рдЧрд░реЗрдВ рдХрд┐ рдЯреЛрд▓реАрд╣рд░реВрд▓реЗ рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд░ рддреИрдирд╛рддреАрдХрд╛ рд▓рд╛рдЧрд┐ рдлрд░рдХред
рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдиреНрддреНрд░рдг рд░ CI/CD рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреНред рдХреЛрдб рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдирд┐рджрд╛рди рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рд╡рд░рд┐рдкрд░рд┐ рдлрд┐рдбрд▓ рдЧрд░реНрдиреБрдкрд░реНрдЫ рд░ рдЙрдкрдХрд░рдгрд╣рд░реВ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрдкрд░реНрдЫред
рдорд╛
рдорд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рди рдордирдкрд░реНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ Pantheon рд▓рд╛рдИ GitLab рдорд╛ рдХрд╕рд░реА рдЬрдбрд╛рди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреЗрдВ рддрд╛рдХрд┐ GitLab рдорд╛ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛рдорд╛ рдХрдорд┐рдЯрд╣рд░реВ Pantheon рдорд╛ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рддреИрдирд╛рде рд╣реБрдиреНрдЫрдиреНред рд░ GitLab рдорд╛ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓реЗ Pantheon рдорд╛ multidev рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдХреЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рд░ рддреИрдирд╛рдд рдЧрд░реНрди рд╕рдХреНрдЫред
рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛, рдо рддрдкрд╛рдЗрдБрд▓рд╛рдИ GitLab рд░ Pantheon рдмреАрдЪрдХреЛ рдЬрдбрд╛рди рдХрд╕рд░реА рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рд░ рддрдкрд╛рдЗрдБрдХреЛ WordPress рд░ Drupal рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд▓рд╛рдИ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдиреЗрдЫреБред
рдЕрд╡рд╢реНрдп рдкрдирд┐ рд╕рдореНрднрд╡ рдЫ,
рдкрд░рд┐рдЪрдп
рдпрд╕ рдкреЛрд╖реНрдЯрдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдмреБрдЭреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ Pantheon рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯрд▓рд╛рдИ рддреАрди рддрддреНрд╡рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрджрдЫ: рдХреЛрдб, рдбрд╛рдЯрд╛рдмреЗрд╕, рд░ рдлрд╛рдЗрд▓рд╣рд░реВред
рдХреЛрдбрд▓реЗ CMS рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬрд╕реНрддреИ WordPress рдХреЛрд░, рдкреНрд▓рдЧрдЗрдирд╣рд░реВ, рд░ рд╡рд┐рд╖рдпрд╡рд╕реНрддреБрд╣рд░реВред рдпреА рдлрд╛рдЗрд▓рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЫрдиреН
Pantheon рдорд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рдорд┐рдбрд┐рдпрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рд╣реБрдиреН, рддреНрдпреЛ рд╣реЛ, рд╕рд╛рдЗрдЯрдХрд╛ рд▓рд╛рдЧрд┐ рдЫрд╡рд┐рд╣рд░реВред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддрд┐рдиреАрд╣рд░реВ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд▓реЛрдб рд╣реБрдиреНрдЫрдиреН рд░ Git рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрджрдЫред
рдЕрдиреБрдорд╛рдирд╣рд░реВ
Pantheon рд░ GitLab рдорд╛ рдореЗрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рднрдирд┐рдиреНрдЫ pantheon-gitlab-blog-demo
ред рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдирд╛рдо рдЕрджреНрд╡рд┐рддреАрдп рд╣реБрдиреБрдкрд░реНрдЫред рдпрд╣рд╛рдБ рд╣рд╛рдореА WordPress рд╕рд╛рдЗрдЯ рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫреМрдВред рддрдкрд╛рдИрдВ Drupal рд▓рд┐рди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╣реА рдЪреАрдЬрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред
рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреБ
рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН
рдкрд╣рд┐рд▓реЗ, рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ
рдЕрд╣рд┐рд▓реЗ
рдпрджрд┐ рддрдкрд╛рдЗрдБрдХрд╛ рд╣рд╛рддрд╣рд░реВ рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЦреБрдЬрд▓реА рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рдЯрд╛рдЙрдиреБрд╣реЛрд╕реН рд╡рд╛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН, рдзреИрд░реНрдп рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╕рд╛рдЗрдЯ рдЕрдЭреИ GitLab рдорд╛ рдЬрдбрд╛рди рднрдПрдХреЛ рдЫреИрди, рд░ рд╣рд╛рдореА рд╕рдмреИ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ GitLab рдорд╛рд░реНрдлрдд рдЬрд╛рди рдЪрд╛рд╣рдиреНрдЫреМрдВред
рдПрдХрдкрдЯрдХ рд╣рд╛рдореАрд▓реЗ WordPress рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐, Pantheon рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ рд╡рд┐рдХрд╛рд╕ рдореЛрдбрд▓рд╛рдИ Git рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
GitLab рдорд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛
рдЕрдм рддрдкрд╛рдИрд▓реЗ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ WordPress рдХреЛрдб Pantheon рд╕рд╛рдЗрдЯрдмрд╛рдЯ GitLab рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ Pantheon рд╕рд╛рдЗрдЯрдХреЛ Git рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рдХреЛрдб рдХреНрд▓реЛрди рдЧрд░реНрдЫреМрдВ, рд░ рддреНрдпрд╕рдкрдЫрд┐ GitLab рднрдгреНрдбрд╛рд░рдорд╛ рдкрдард╛рдЙрдБрдЫреМрдВред
рдпрд╕рд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдЙрди,
рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╕рд╛рдЗрдЯ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдХреНрд▓реЛрди рд╡рд┐рде рдЧрд┐рдЯ рдлрд┐рд▓реНрдбрдмрд╛рдЯ рдЖрджреЗрд╢ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдкреНрдпрд╛рдиреНрдерд┐рдпрди рд╕рд╛рдЗрдЯрд▓рд╛рдИ рдХреНрд▓реЛрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдорджреНрджрдд рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреЗ, рдХрд╛рдЧрдЬрд╛рдд рдкрдвреНрдиреБрд╣реЛрд╕реН
рдЕрдм рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реМрдВ git remote origin
Pantheon рдХреЛ рд╕рдЯреНрдЯрд╛ GitLab рд▓рд╛рдИ рдФрдВрд▓реНрдпрд╛рдЙрдиред рдпреЛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ ╨║╨╛╨╝╨░╨╜╨┤╨╛╨╣ git remote
GitLab рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрдардорд╛ рдХреНрд▓реЛрди рдбреНрд░рдкрдбрд╛рдЙрдирдмрд╛рдЯ рднрдгреНрдбрд╛рд░ URL рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реНред SSH рд╡рд┐рдХрд▓реНрдкрдХреЛ рд╕рд╛рде рдХреНрд▓реЛрди рдЫрдиреЛрдЯ рдЧрд░реМрдВ, рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ SSH рдХреБрдЮреНрдЬреА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред
рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд git remote
рдХреЛрдб рднрдгреНрдбрд╛рд░рдХреЛ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рдХреЛ рд▓рд╛рдЧрд┐ - origin
ред рдпрд╕рд▓рд╛рдИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЧ git remote set-url origin [URL ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╤П GitLab]
, рдЬрд╣рд╛рдБ рдХреЛрд╖реНрдардХрдХреЛ рд╕рдЯреНрдЯрд╛ рд╣рд╛рдореА рд╡рд╛рд╕реНрддрд╡рд┐рдХ URL рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдЫреМрдВред
рдЕрдиреНрддрдорд╛, рд╣рд╛рдореА рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ git push origin master --force
Pantheon рдмрд╛рдЯ GitLab рдорд╛ WordPress рдХреЛрдб рдкреБрд╢ рдЧрд░реНрдиред
рдмрд▓ рд╡рд┐рдХрд▓реНрдк рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдЫред рддреНрдпрд╕рдкрдЫрд┐ рдЯреЛрд▓реАрд╣рд░реВрдорд╛
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 рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рд╣рд╛рдореА Pantheon рдХрд╛рдЧрдЬрд╛рдд рдорд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдирд┐рдЬреА SSH GitLab рдорд╛ рдЫ, рдЦреБрд▓рд╛ SSH Pantheon рдорд╛ рдЫред
рдХреЗрд╣реА рдердк рдкрд░рд┐рд╡реЗрд╢ рдЪрд░рд╣рд░реВ рд╕реЗрдЯ рдЕрдк рдЧрд░реМрдВред рдкрд╣рд┐рд▓реЛрд▓рд╛рдИ PANTHEON_SITE рднрдирд┐рдиреНрдЫред рдпрд╕рдХреЛ рдорд╛рди рддрдкрд╛рдИрдХреЛ рдореЗрд╕рд┐рдирдорд╛ рд░рд╣реЗрдХреЛ Pantheon рд╕рд╛рдЗрдЯрдХреЛ рдирд╛рдо рд╣реЛред
рдореЗрд╕рд┐рдирдорд╛ рдирд╛рдо Git рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдХреНрд▓реЛрдирдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд╕реВрдЪреАрдмрджреНрдз рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рд╕рд╛рдЗрдЯ рдХреНрд▓реЛрди рдЧрд░рд┐рд╕рдХреНрдиреБрднрдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд╕реНрдерд╛рдиреАрдп рднрдгреНрдбрд╛рд░ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдХреЛ рдирд╛рдо рд╣реБрдиреЗрдЫред
рдЕрд░реНрдХреЛ, рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдЕрдк рдЧрд░реМрдВ PANTHEON_GIT_URL
ред рдпреЛ Pantheon рд╕рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ Git рднрдгреНрдбрд╛рд░ URL рд╣реЛ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред
рдмрд┐рдирд╛ SSH рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА URL рдорд╛рддреНрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН
git clone
рд░ рдЕрдиреНрддрдорд╛ рдореЗрд╕рд┐рдирдорд╛ рд╕рд╛рдЗрдЯрдХреЛ рдирд╛рдоред
рдУрдлред рдпреЛ рд╕рдХрд┐рдпреЛ, рдЕрдм рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдлрд╛рдЗрд▓ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ .gitlab-ci.yml
.
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╣рд╛рдореАрд▓реЗ рд╕реБрд░реБрдорд╛ GitLab CI рд╕рдБрдЧ рдХреЗ рдЧрд░рд┐рд░рд╣рдиреЗрдЫреМрдВ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рд╡рд┐рдЧрддрдорд╛ Git рднрдгреНрдбрд╛рд░рд╣рд░реВрд╕рдБрдЧ рдЧрд░реЗрдХрд╛ рдерд┐рдпреМрдВред рддрд░ рдпрд╕ рдкрдЯрдХ, рджреЛрд╕реНрд░реЛ рд░рд┐рдореЛрдЯ Git рд╕реНрд░реЛрддрдХреЛ рд░реВрдкрдорд╛ Pantheon рднрдгреНрдбрд╛рд░ рдердкреМрдВ, рд░ рддреНрдпрд╕рдкрдЫрд┐ GitLab рдмрд╛рдЯ Pantheon рдорд╛ рдХреЛрдб рдкреБрд╢ рдЧрд░реМрдВред
рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реМрдВ deploy
╨╕ deploy:dev
, рдХрд┐рдирднрдиреЗ рд╣рд╛рдореА Pantheon рдорд╛ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рддреИрдирд╛рдд рдЧрд░реНрдиреЗрдЫреМрдВред рдирддрд┐рдЬрд╛ рдлрд╛рдЗрд▓ .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
Pantheon рдорд╛ред рд╣реЗрд░реМрдВред
Pantheon рдорд╛ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдереНрд░реЗрдбрд╣рд░реВ рдкрдард╛рдЙрдБрджреИ
рдпрд╣рд╛рдБ рд╣рд╛рдореА рдореЗрд░реЛ рдордирдкрд░реНрдиреЗ Pantheon рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ -
рдкрд╣рд┐рд▓реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдирдпрд╛рдБ Git рд╢рд╛рдЦрд╛ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН git checkout -b multidev-support
ред рдЕрдм рдлреЗрд░рд┐ рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реМрдВ .gitlab-ci.yml
.
рдо рдкреНрдпрд╛рдиреНрдерд┐рдпрди рд╡рд╛рддрд╛рд╡рд░рдг рдирд╛рдордорд╛ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдирдореНрдмрд░ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкрд╣рд┐рд▓реЛ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рд╣реЛ mr-1
, рджреЛрд╕реНрд░реЛ - mr-2
рдЖрджрд┐
рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ Pantheon рд╢рд╛рдЦрд╛ рдирд╛рдорд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред 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
.
рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН, рдирдпрд╛рдБ рдереНрд░реЗрдб Pantheon рдорд╛ рдкрдард╛рдЗрдПрдХреЛ рдЫред рддрд░ рдпрджрд┐ рд╣рд╛рдореА Pantheon рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдорд▓реНрдЯрд┐рдбреЗрдн рд╕реЗрдХреНрд╕рдирдорд╛ рдЬрд╛рдиреНрдЫреМрдВ рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ рддреНрдпрд╣рд╛рдБ рдирдпрд╛рдБ рд╡рд╛рддрд╛рд╡рд░рдг рджреЗрдЦреНрдиреЗ рдЫреИрдиреМрдВред
Git рд╢рд╛рдЦрд╛рд╣рд░реВ рдЦрдгреНрдб рд╣реЗрд░реМрдВред
рдлрд▓рд╕реНрд╡рд░реВрдк, рд╣рд╛рдореНрд░реЛ рдереНрд░реЗрдб mr-1
Pantheon рдкреБрдЧреНрдпреЛред рд╢рд╛рдЦрд╛рдмрд╛рдЯ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реГрдЬрдирд╛ рдЧрд░реМрдВ mr-1
.
рд╣рд╛рдореАрд▓реЗ рдорд▓реНрдЯрд┐рдбреЗрдн рд╡рд╛рддрд╛рд╡рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рдЕрдм GitLab рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ рдЦрдгреНрдбрдорд╛ рд╣реЗрд░реМрдВ рд╕рдЮреНрдЪрд╛рд▓рди > рд╡рд╛рддрд╛рд╡рд░рдгред рд╣рд╛рдореА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ рджреЗрдЦреНрдиреЗрдЫреМрдВ dev
╨╕ mr-1
.
рдпреЛ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдердкреЗрдХрд╛ рдЫреМрдВ environment
рдирд╛рдо рд╕рдВрдЧ name
╨╕ url
CI/CD рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЦреБрд▓рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдЗрдХрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдпреМрдВ рднрдиреЗ, рд╣рд╛рдореАрд▓рд╛рдИ Pantheon рдорд╛ multidev рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ URL рдорд╛ рд▓рдЧрд┐рдиреЗрдЫред
Multidev рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд
рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, рддрдкрд╛рдЗрдБ рдпрд╣рд╛рдБ рд░реЛрдХреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдкреНрд░рддреНрдпреЗрдХ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдмрд╣реБрджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдореНрдЭрдиреБрд╣реЛрд╕реН, рддрд░ рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реБрди рд╕рдХреНрдЫред
Pantheon рдорд╛ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдг рдЫ
рд╣рд╛рдореАрд▓рд╛рдИ рдпреЛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдирдпрд╛рдБ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдЪрд╛рд╣рд┐рдиреНрдЫред рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирдпрд╛рдБ рд╢рд╛рдЦрд╛ рдмрдирд╛рдФрдВ 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 рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫреМрдВред рдзреИрд░реНрдп рдЧрд░реНрдиреБрд╣реЛрд╕реН: multidev рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдзреЗрд░реИ рдорд┐рдиреЗрдЯ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫред
рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА Pantheon рдорд╛ multidev рд╕реВрдЪреА рд╣реЗрд░реНрди рдЬрд╛рдиреНрдЫреМрдВред рдП рдЪрдорддреНрдХрд╛рд░ ! рдмрд╣реБрджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг mr-2
рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╣рд╛рдБред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рд╣рд╛рдореАрд▓реЗ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЦреЛрд▓реНрди рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдерд╛рд▓реЗрдкрдЫрд┐ рдореЗрд░реЛ рдЯреЛрд▓реАрд▓реЗ рдзреЗрд░реИ рд░рдорд╛рдЗрд▓реЛ рдЧрд░реНтАНрдпреЛред
GitLab рд░ Pantheon рдХреЛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдгрд╣рд░реБ рд╕рдВрдЧ, рддрдкрд╛рдИрд▓реЗ GitLab рд▓рд╛рдИ Pantheon рдорд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рд╣рд╛рдореАрд▓реЗ GitLab CI/CD рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдмрдвреНрдиреЗ рдард╛рдЙрдБ рд╣реБрдиреЗрдЫред рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕реБрд░реБ рдЧрд░реНрди рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдЫрдиреН:
- рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдердкреНрдиреБрд╣реЛрд╕реНред
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдердкреНрдиреБрд╣реЛрд╕реНред
- рдХреЛрдб рдорд╛рдкрджрдгреНрдбрд╣рд░реВ рдкреВрд░рд╛ рднрдПрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдПрдЙрдЯрд╛ рдХрд╛рд░реНрдп рдердкреНрдиреБрд╣реЛрд╕реНред
- рдердкреНрдиреБрд╣реЛрд╕реН
рдЧрддрд┐рд╢реАрд▓ рдЖрд╡реЗрджрди рд╕реБрд░рдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг .
GitLab, Pantheon рд░ рд╕реНрд╡рдЪрд╛рд▓рди рдмрд╛рд░реЗ рддрдкрд╛рдИ рдХреЗ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫ рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рджрд┐рдиреБрд╣реЛрд╕реНред
PS рдХреЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдЯрд░реНрдорд┐рдирд╕, рдкреНрдпрд╛рдиреНрдерд┐рдпрдирдХреЛ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдг,
Pantheon рдорд╛ рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕рдВрд╕реНрдХрд░рдг 2 рдорд╛ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реЗрдХрд╛ рдЫреМрдВ build:project:create
рддрдкрд╛рдИрд▓рд╛рдИ рдкреНрдпрд╛рдиреНрдерд┐рдпрди рдЯреЛрдХрди рд░ GitLab рдЯреЛрдХрди рдорд╛рддреНрд░ рдЪрд╛рд╣рд┐рдиреНрдЫред рдЙрдирд▓реЗ рдХрдореНрдкреЛрдЬрд░ рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рд╛рде рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рддреИрдирд╛рдд рдЧрд░реНрдиреЗрдЫрд┐рдиреН, GitLab рдорд╛ рдирдпрд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ, рдирдпрд╛рдБ Pantheon рд╕рд╛рдЗрдЯ, рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд░ SSH рдХреБрдЮреНрдЬреАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЬрдбрд╛рди рдЧрд░реНрдиреЗрдЫред
рд▓реЗрдЦрдХрдХреЛ рдмрд╛рд░реЗрдорд╛
рдПрдиреНрдбреНрд░рдпреВ рдЯреЗрд▓рд░рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ
рд╕реНрд░реЛрдд: www.habr.com