GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•
Pantheon์˜ ๊ฒŒ์ŠคํŠธ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ž‘์„ฑ์ž๊ฐ€ GitLab CI/CD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WordPress ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

ะ’ ํŒํ…Œ์˜จ ์ €๋Š” ๊ฐœ๋ฐœ์ž ๊ด€๊ณ„ ์—…๋ฌด๋ฅผ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ WordPress์™€ Drupal ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์—… ํ๋ฆ„์˜ ์ž๋™ํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ €๋Š” ์ƒˆ๋กœ์šด ๋„๊ตฌ๋ฅผ ์‹คํ—˜ํ•˜๊ณ  ์„œ๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๋‹จ์ผ ์Šคํ…Œ์ด์ง• ์„œ๋ฒ„๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช๋Š” ๊ฒƒ์„ ์ข…์ข… ๋ด…๋‹ˆ๋‹ค.

์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ฐจ๋ก€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ "์—ฌ๊ธฐ๋ฅผ ๋ณด๋˜ ์•„์ง ์—ฌ๊ธฐ๋ฅผ ๋ณด์ง€ ๋งˆ์„ธ์š”"๋ผ๋Š” ๋ฉ”๋ชจ์™€ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ URL์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์ •๋ง ์ฆ๊ฑฐ์šด ์ผ์ž…๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ - ๋ฉ‹์ง„ Pantheon ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜ - ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”์— ๋”ฐ๋ผ Git ๋ธŒ๋žœ์น˜๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—๋Š” ๊ณ ์œ ํ•œ URL๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋กœ์˜ ๋ฐœ๋์„ ๋ฐŸ์ง€ ์•Š๊ณ ๋„ ์กฐ์šฉํžˆ ์ž‘์—…ํ•˜๊ณ , ํ’ˆ์งˆ์„ ํ™•์ธํ•˜๊ณ , ์Šน์ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Pantheon์—๋Š” ๋ฒ„์ „ ์ œ์–ด๋‚˜ CI/CD(์ง€์†์ ์ธ ํ†ตํ•ฉ ๋ฐ ๋ฐฐํฌ)๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ํŒ€์—์„œ๋Š” ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํŠน์ • ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์กฐ๋ฆฝ ๋ฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ๋„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฒ„์ „ ์ œ์–ด ๋ฐ CI/CD๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋ ค๋ฉด ๋„๊ตฌ๋ฅผ ์ด๋ฆฌ์ €๋ฆฌ ์‚ดํŽด๋ณด๊ณ  ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— GitLab ๋ฒ„์ „ ์ œ์–ด, ํ‹ฐ์ผ“, ๋ณ‘ํ•ฉ ์š”์ฒญ, ๋™๊ธ‰ ์ตœ๊ณ ์˜ CI/CD ํŒŒ์ดํ”„๋ผ์ธ, ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋“ฑ์„ ์œ„ํ•œ ์ „์ฒด ๊ฐœ๋ฐœ ๋„๊ตฌ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ด๋ ‡๊ฒŒ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์•„์ง ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ž๋™ํ™”๋ฅผ ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— GitLab์˜ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ ์ปค๋ฐ‹์ด Pantheon์˜ ๋ฉ”์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๋„๋ก Pantheon์„ GitLab์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  GitLab์˜ ๋ณ‘ํ•ฉ ์š”์ฒญ์€ Pantheon์˜ ๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” GitLab๊ณผ Pantheon ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  WordPress ๋ฐ Drupal ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. GitLab ์ €์žฅ์†Œ ๋ฏธ๋Ÿฌ๋งํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ํƒ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ์†์œผ๋กœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ๊นƒ๋žฉ CI ์•ž์œผ๋กœ๋Š” ์ด ๋„๊ตฌ๋ฅผ ๋ฐฐํฌ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์†Œ๊ฐœ

์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” Pantheon์ด ๊ฐ ์‚ฌ์ดํŠธ๋ฅผ ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ์˜ ์„ธ ๊ฐ€์ง€ ์š”์†Œ๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์—๋Š” WordPress ์ฝ”์–ด, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ ํ…Œ๋งˆ์™€ ๊ฐ™์€ CMS ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ์€ ๋‹ค์Œ์—์„œ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํž˜๋‚ด ์ €์žฅ์†Œ, Pantheon์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๋ฏ€๋กœ Git์„ ์‚ฌ์šฉํ•˜์—ฌ GitLab์—์„œ Pantheon์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Pantheon์˜ ํŒŒ์ผ์€ ๋ฏธ๋””์–ด ํŒŒ์ผ, ์ฆ‰ ์‚ฌ์ดํŠธ์˜ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•˜๋ฉฐ Git์€ ์ด๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

๋ฌด๋ฃŒ ๊ณ„์ • ๋งŒ๋“ค๊ธฐ, ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ํŒํ…Œ์˜จ ์ž‘์—…ํ๋ฆ„ ๋˜๋Š” ๋ฐ๋ชจ ๋“ฑ๋ก pantheon.io์—์„œ

๊ฐ€์ •

Pantheon๊ณผ GitLab์— ๋Œ€ํ•œ ๋‚ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. pantheon-gitlab-blog-demo. ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์€ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” WordPress ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. Drupal์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค Git ๋ช…๋ น์ค„๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค, ์›ํ•˜๋Š” ๊ฒฝ์šฐ.

ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ

๋จผ์ €, ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. GitLab ํ”„๋กœ์ ํŠธ (๋‚˜์ค‘์— ์ด์— ๋Œ€ํ•ด ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

์ง€๊ธˆ Pantheon์—์„œ WordPress ์›น์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ์šฉ WordPress๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ๋“ฑ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์–ด ์†์ด ๊ฐ€๋ ต๋‹ค๋ฉด ์ธ๋‚ด์‹ฌ์„ ๊ฐ€์ง€์‹ญ์‹œ์˜ค. ์‚ฌ์ดํŠธ๊ฐ€ ์•„์ง GitLab์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด GitLab์„ ํ†ต๊ณผํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

WordPress๋ฅผ ์„ค์น˜ํ•œ ํ›„ Pantheon ์›น์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ๋กœ ๋Œ์•„๊ฐ€ ๊ฐœ๋ฐœ ๋ชจ๋“œ๋ฅผ Git์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

GitLab์˜ ์ดˆ๊ธฐ ์ปค๋ฐ‹

์ด์ œ ์ดˆ๊ธฐ WordPress ์ฝ”๋“œ๋ฅผ Pantheon ์‚ฌ์ดํŠธ์—์„œ GitLab์œผ๋กœ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Pantheon ์‚ฌ์ดํŠธ์˜ Git ์ €์žฅ์†Œ์—์„œ ์ฝ”๋“œ๋ฅผ ๋กœ์ปฌ๋กœ ๋ณต์ œํ•œ ๋‹ค์Œ GitLab ์ €์žฅ์†Œ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋ณด๋‹ค ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด, Pantheon์— SSH ํ‚ค ์ถ”๊ฐ€ Pantheon Git ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•  ๋•Œ๋งˆ๋‹ค ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์ด๋ฏธ GitLab์— SSH ํ‚ค ์ถ”๊ฐ€.

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ์˜ Clone with Git ํ•„๋“œ์—์„œ ๋ช…๋ น์„ ๋ณต์‚ฌํ•˜์—ฌ Pantheon ์‚ฌ์ดํŠธ๋ฅผ ๋กœ์ปฌ๋กœ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•
๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ์„ค๋ช…์„œ๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”. Pantheon์šฉ Git ์‹œ์ž‘ํ•˜๊ธฐ.

์ด์ œ ๋ฐ”๊ฟ”๋ณด์ž git remote originPantheon ๋Œ€์‹  GitLab์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ•  ์ˆ˜ ์žˆ๋‹ค ะบะพะผะฐะฝะดะพะน git remote.

GitLab ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์˜ ๋ณต์ œ ๋“œ๋กญ๋‹ค์šด์—์„œ ์ €์žฅ์†Œ URL์„ ๋ณต์‚ฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. SSH ํ‚ค๋ฅผ ์ด๋ฏธ ๊ตฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ SSH๋กœ ๋ณต์ œ ์˜ต์…˜์„ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ธฐ๋ณธ์ ์œผ๋กœ git remote ์ฝ”๋“œ ์ €์žฅ์†Œ์˜ ๋กœ์ปฌ ๋ณต์‚ฌ๋ณธ์˜ ๊ฒฝ์šฐ - origin. ์ด๊ฒƒ์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. git remote set-url origin [URL ั€ะตะฟะพะทะธั‚ะพั€ะธั GitLab], ๋Œ€๊ด„ํ˜ธ ๋Œ€์‹  ์‹ค์ œ URL์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋“œ๋””์–ด ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค git push origin master --forceWordPress ์ฝ”๋“œ๋ฅผ Pantheon์—์„œ GitLab์œผ๋กœ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.

โ€“force ์˜ต์…˜์€ ํ•œ ๋ฒˆ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํŒ€์œผ๋กœ git push GitLab์—๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž๊ฒฉ ์ฆ๋ช… ๋ฐ ๋ณ€์ˆ˜ ์„ค์ •

Pantheon๊ณผ GitLab์— ๋กœ๊ทธ์ธํ•˜๊ธฐ ์œ„ํ•ด SSH ํ‚ค๋ฅผ ๋กœ์ปฌ๋กœ ์ถ”๊ฐ€ํ•œ ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•˜์‹œ๋‚˜์š”? SSH ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ GitLab ๋ฐ Pantheon์„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitLab์—๋Š” ํ›Œ๋ฅญํ•œ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์ž GitLab CI/CD์—์„œ SSH ํ‚ค ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ฌธ์„œ์˜ Docker ์‹คํ–‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ 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 ๋ฌธ์„œ์˜ ์ง€์นจ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. Pantheon์— SSH ํ‚ค ์ถ”๊ฐ€ ์ด ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์–ตํ•˜์„ธ์š”: ๋น„๊ณต๊ฐœ SSH๋Š” GitLab์— ์žˆ๊ณ  ๊ณต๊ฐœ SSH๋Š” Pantheon์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋” ์„ค์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” PANTHEON_SITE์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ’์€ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” Pantheon ์‚ฌ์ดํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๋จธ์‹ ์˜ ์ด๋ฆ„์€ Git์œผ๋กœ ๋ณต์ œ ๋ช…๋ น ๋์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์‚ฌ์ดํŠธ๋ฅผ ๋กœ์ปฌ๋กœ ๋ณต์ œํ–ˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ๋กœ์ปฌ ์ €์žฅ์†Œ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ด๋ฆ„์ด ๋ฉ๋‹ˆ๋‹ค.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‹ค์Œ์œผ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. PANTHEON_GIT_URL. ์ด๋Š” ์ด๋ฏธ ์‚ฌ์šฉํ•œ Pantheon ์‚ฌ์ดํŠธ์˜ Git ์ €์žฅ์†Œ URL์ž…๋‹ˆ๋‹ค.

์—†์ด SSH ์ €์žฅ์†Œ URL๋งŒ ์ž…๋ ฅํ•˜์„ธ์š”. git clone ๊ทธ๋ฆฌ๊ณ  ๋์—๋Š” ์ปดํ“จํ„ฐ์˜ ์‚ฌ์ดํŠธ ์ด๋ฆ„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํœด. ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŒŒ์ผ์„ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .gitlab-ci.yml.

๋ฐฐํฌ ์ž‘์—… ์ƒ์„ฑ

์ฒ˜์Œ์— GitLab CI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์€ ๊ณผ๊ฑฐ์— Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” Pantheon ์ €์žฅ์†Œ๋ฅผ ๋‘ ๋ฒˆ์งธ ์›๊ฒฉ Git ์†Œ์Šค๋กœ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ 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 ํŒํ…Œ์˜จ์—์„œ. ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

Pantheon์— ๋ณ‘ํ•ฉ ์š”์ฒญ ์Šค๋ ˆ๋“œ ๋ณด๋‚ด๊ธฐ

์—ฌ๊ธฐ์„œ๋Š” ์ œ๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” Pantheon ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์ค‘ ๊ฐœ๋ฐœ์ž, ์š”์ฒญ ์‹œ Git ๋ธŒ๋žœ์น˜๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ Pantheon ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.์ด๋ฏ€๋กœ ์ด ์„น์…˜์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ GitLab ๋ณ‘ํ•ฉ ์š”์ฒญ์—์„œ Pantheon์˜ ๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ž๋™ ์ƒ์„ฑ์„ ์„ค์ •ํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ์ƒˆ Git ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. git checkout -b multidev-support. ์ด์ œ ๋‹ค์‹œ ๋ญ”๊ฐ€๋ฅผ ๋ฐ”๊ฟ”๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. .gitlab-ci.yml.

Pantheon ํ™˜๊ฒฝ ์ด๋ฆ„์— ๋ณ‘ํ•ฉ ์š”์ฒญ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒซ ๋ฒˆ์งธ ๋ณ‘ํ•ฉ ์š”์ฒญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. mr-1, ๋‘๋ฒˆ์งธ - mr-2 ๋“ฑ.

๋ณ‘ํ•ฉ ์š”์ฒญ์ด ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ Pantheon ๋ถ„๊ธฐ ์ด๋ฆ„์„ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GitLab์—์„œ๋Š” ์‰ฝ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „ ์ •์˜๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜.

์šฐ๋ฆฌ๋Š” ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค $CI_MERGE_REQUEST_IID๋ณ‘ํ•ฉ ์š”์ฒญ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์ง€์ •ํ•œ ์ „์—ญ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ ์šฉํ•˜๊ณ  ํŒŒ์ผ ๋์— ์ƒˆ ๋ฐฐํฌ: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 ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ณด์„ธ์š”, ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๊ฐ€ ํŒํ…Œ์˜จ์œผ๋กœ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Pantheon ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ์˜ ๋‹ค์ค‘ ๊ฐœ๋ฐœ์ž ์„น์…˜์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๊ฑฐ๊ธฐ์—์„œ ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

Git Branches ์„น์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ ์Šค๋ ˆ๋“œ๋Š” mr-1 ํŒํ…Œ์˜จ์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋žœ์น˜์—์„œ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด๋ณด์ž mr-1.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ GitLab์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ์„น์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šด์˜ > ํ™˜๊ฒฝ. ๋‹ค์Œ์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. dev ะธ mr-1.

ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. environment ์ด๋ฆ„์œผ๋กœ name ะธ url CI/CD ์ž‘์—…์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐฉํ˜• ํ™˜๊ฒฝ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด Pantheon์˜ ๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ URL๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๊ฐœ๋ฐœ ์ƒ์„ฑ ์ž๋™ํ™”

์›์น™์ ์œผ๋กœ ์—ฌ๊ธฐ์—์„œ ๋ฉˆ์ถ”๊ณ  ๊ฐ ๋ณ‘ํ•ฉ ์š”์ฒญ์— ๋Œ€ํ•ด ๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋˜์ง€๋งŒ ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์ž๋™ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Pantheon์—๋Š” ๋ช…๋ น์ค„ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง๋‹จ, ํ”Œ๋žซํผ์—์„œ ์ž๋™์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Terminus๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…๋ น์ค„์—์„œ ๋‹ค์ค‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊นƒ๋žฉ CI.

์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ๋ณ‘ํ•ฉ ์š”์ฒญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ถ„๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. git checkout -b auto-multidev-creation.

GitLab CI/CD ์ž‘์—…์—์„œ Terminus๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Terminus๋ฅผ ์‚ฌ์šฉํ•œ ์ธ์ฆ์„ ์œ„ํ•œ ๋จธ์‹  ํ† ํฐ๊ณผ Terminus๋ฅผ ์‚ฌ์šฉํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Pantheon ๋จธ์‹  ํ† ํฐ ์ƒ์„ฑ, ์•ˆ์ „ํ•œ ์žฅ์†Œ์— ์ €์žฅํ•˜๊ณ  ์ด๋ฆ„์œผ๋กœ GitLab์˜ ์ „์—ญ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. PANTHEON_MACHINE_TOKEN.

GitLab ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์žŠ์–ด๋ฒ„๋ฆฐ ๊ฒฝ์šฐ ์ •์˜ํ•œ ์œ„์น˜๋กœ ๋Œ์•„๊ฐ€์„ธ์š”. PANTHEON_SITE.

Terminus๊ฐ€ ์žˆ๋Š” Dockerfile ๋งŒ๋“ค๊ธฐ

Docker๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํŒŒ์ผ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ Dockerfile, ๋‚ด ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐ€์„ธ์š” registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest ์ด ์„น์…˜์„ ๊ฑด๋„ˆ๋›ฐ์„ธ์š”.

GitLab์—๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค., ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Dockerfile์„ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Pantheon๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด Terminus๊ฐ€ ํฌํ•จ๋œ Dockerfile์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Terminus๋Š” PHP ๋ช…๋ น์ค„ ๋„๊ตฌ์ด๋ฏ€๋กœ PHP ์ด๋ฏธ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Composer๋ฅผ ํ†ตํ•ด Terminus๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ Docker Composer ์ด๋ฏธ์ง€. ์šฐ๋ฆฌ๋Š” ์ฐฝ์กฐํ•œ๋‹ค 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 ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ธ๋‚ด์‹ฌ์„ ๊ฐ€์ง€์‹ญ์‹œ์˜ค. ๋‹ค์ค‘ ๊ฐœ๋ฐœ์ž๋Š” ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ Pantheon์˜ ๋‹ค์ค‘ ๊ฐœ๋ฐœ์ž ๋ชฉ๋ก์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ค ๊ธฐ์ ์ด๋‹ค! ๋‹ค์ค‘๊ฐœ๋ฐœ ํ™˜๊ฒฝ mr-2 ์ด๋ฏธ ์—ฌ๊ธฐ์—.

GitLab๊ณผ Pantheon์„ ์—ฐ๊ฒฐํ•˜๊ณ  Drupal ๋ฐ WordPress ์›Œํฌํ”Œ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฒฐ๋ก 

์šฐ๋ฆฌ ํŒ€์€ ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ์—ด๊ณ  ์ž๋™์œผ๋กœ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ํ›จ์”ฌ ๋” ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

GitLab๊ณผ Pantheon์˜ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด GitLab์„ Pantheon์— ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitLab CI/CD๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์›Œํฌํ”Œ๋กœ๊ฐ€ ์„ฑ์žฅํ•  ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

GitLab, Pantheon ๋ฐ ์ž๋™ํ™”์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์ƒ๊ฐ์„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

PS Pantheon์˜ ๋ช…๋ น์ค„ ๋„๊ตฌ์ธ Terminus๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ํ™•์žฅ ๊ฐ€๋Šฅ?

Pantheon์—์„œ๋Š” ๋ฒ„์ „ 2๋ฅผ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Terminus ๋นŒ๋“œ ๋„๊ตฌ์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ GitLab ์ง€์›. ๊ฐ ํ”„๋กœ์ ํŠธ์˜ ์„ค์ •์— ์‹ ๊ฒฝ์“ฐ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด๋ณด๊ณ  v2 ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ๋ฅผ ๋„์™€์ฃผ์„ธ์š”. ํ„ฐ๋ฏธ๋„ˆ์Šค ํŒ€์˜ ๊ฒฝ์šฐ build:project:create Pantheon ํ† ํฐ๊ณผ GitLab ํ† ํฐ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋…€๋Š” Composer ๋ฐ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์ƒˆ๋กœ์šด Pantheon ์‚ฌ์ดํŠธ์ธ GitLab์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ SSH ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

ะžะฑ ะฐะฒั‚ะพั€ะต

Andrew Taylor๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํŒํ…Œ์˜จ.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€