216.73.216.26 TODAY : 24,196

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ตœ์ƒ๊ธ‰

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 4์ฃผ์ฐจ: CI/CD (์ง€์†์  ํ†ตํ•ฉ/์ง€์†์  ๋ฐฐํฌ) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•- 02 GitLab CI/CD, GitHub Actions ๋“ฑ ํ™œ์šฉ

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 4์ฃผ์ฐจ: CI/CD (์ง€์†์  ํ†ตํ•ฉ/์ง€์†์  ๋ฐฐํฌ) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•- 02 GitLab CI/CD, GitHub Actions ๋“ฑ ํ™œ์šฉ

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free
  • ์šด์˜์ฒด์ œ:
  • ํŒŒ์ผ ํฌ๊ธฐ: 0

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ๋‹ค์šด๋กœ๋“œ ์ˆ˜: 1
  • ์กฐํšŒ์ˆ˜: 2

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-10-14 10:48:51
  •  

- ์„ค๋ช…

CI/CD ๋„๊ตฌ ์„ ํƒ: #GitLabCI ์™€ #GitHubActions

uploadImage


์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” #CI/CD ์˜ ๊ฐœ๋…๊ณผ ํ•„์š”์„ฑ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ์ž๋™ํ™”๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ํ˜„๋Œ€์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ•๋ ฅํ•œ #CICD๋„๊ตฌ ๋Š” GitLab CI/CD์™€ GitHub Actions์ž…๋‹ˆ๋‹ค.

๋‘ ๋„๊ตฌ ๋ชจ๋‘ Git ์ €์žฅ์†Œ์—์„œ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ž๋™์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” #์ž๋™ํ™”ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค. ๋‘ ๋„๊ตฌ์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ #PHP์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



1. GitLab CI/CD: ์™„๋ฒฝํ•œ ํ†ตํ•ฉ ํ™˜๊ฒฝ

uploadImage


#GitLabCI ๋Š” GitLab ํ”Œ๋žซํผ์— ์™„๋ฒฝํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์™ธ๋ถ€ ๋„๊ตฌ ์—ฐ๊ฒฐ ์—†์ด, ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ๋ฐ”๋กœ ๊ทธ๊ณณ์—์„œ #CI/CD ๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


1. .gitlab-ci.yml ํŒŒ์ผ


#GitLabCI ์˜ ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ ์„ค์ •์€ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์œ„์น˜ํ•œ .gitlab-ci.yml ํŒŒ์ผ์— YAML ํ˜•์‹์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ํŒŒ์ดํ”„๋ผ์ธ์˜ **๋‹จ๊ณ„(Stages)**์™€ ๊ฐ ๋‹จ๊ณ„์—์„œ ์‹คํ–‰๋  **์ž‘์—…(Jobs)**์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.


2. ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ


  • Stages (๋‹จ๊ณ„): ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ˆœ์„œ(์˜ˆ: build, test, deploy)๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค

  • Jobs (์ž‘์—…): ๊ฐ ๋‹จ๊ณ„์—์„œ ์‹ค์ œ๋กœ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค #Docker์ด๋ฏธ์ง€ ๋ฅผ ์‚ฌ์šฉํ• ์ง€, ์–ด๋–ค ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ• ์ง€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค

  • Runners: ์ž‘์—…์„ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๋Š” ์—์ด์ „ํŠธ(์„œ๋ฒ„)์ž…๋‹ˆ๋‹ค. GitLab์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ณต์œ  ๋Ÿฌ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ง์ ‘ ๊ตฌ์ถ•ํ•œ Private Runner๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค


3. PHP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉ


#PHP์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ ๊ฒฝ์šฐ, #GitLabCI ์ž‘์—…์€ ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค

  1. build: #PHP์ด๋ฏธ์ง€ ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ #Docker์ด๋ฏธ์ง€ ๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค

  2. test: composer install ํ›„ PHPUnit์ด๋‚˜ #PHPStan ๊ฐ™์€ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

  3. deploy: ๋นŒ๋“œ๋œ #Docker์ด๋ฏธ์ง€ ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œํ•˜๊ณ , ์ตœ์ข… ์šด์˜ ์„œ๋ฒ„์— ๋ฐฐํฌ ๋ช…๋ น(SSH, Kubernetes ๋“ฑ)์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค



2. GitHub Actions: ์œ ์—ฐํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์›Œํฌํ”Œ๋กœ์šฐ

uploadImage


#GitHubActions ๋Š” GitHub์—์„œ ์ œ๊ณตํ•˜๋Š” #CICD๋„๊ตฌ ๋กœ, **์›Œํฌํ”Œ๋กœ์šฐ(Workflow)**๋ผ๋Š” ๊ฐœ๋…์„ ํ†ตํ•ด ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋†’์€ ์œ ์—ฐ์„ฑ๊ณผ ๋ฐฉ๋Œ€ํ•œ ์•ก์…˜(Actions) ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๊ฐ€ ํŠน์ง•์ž…๋‹ˆ๋‹ค.


1. .github/workflows/*.yml ํŒŒ์ผ


์›Œํฌํ”Œ๋กœ์šฐ ์„ค์ • ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ .github/workflows/ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— .yml ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.


2. ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ


  • Workflow (์›Œํฌํ”Œ๋กœ์šฐ): ์ „์ฒด ์ž๋™ํ™” ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, Git ํ‘ธ์‹œ๋‚˜ Pull Request ์ƒ์„ฑ ๋“ฑ ํŠน์ • ์ด๋ฒคํŠธ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค

  • Jobs (์ž‘์—…): ์›Œํฌํ”Œ๋กœ์šฐ ๋‚ด์—์„œ ๋ณ‘๋ ฌ ๋˜๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๋ฌถ์Œ์ž…๋‹ˆ๋‹ค

  • Steps (๋‹จ๊ณ„): Job ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฐœ๋ณ„ ๋ช…๋ น์–ด๋กœ, ์…ธ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์˜ Action์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

  • Actions (์•ก์…˜): GitHub ์ปค๋ฎค๋‹ˆํ‹ฐ๋‚˜ ๊ณต์‹์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค (์˜ˆ: PHP ์„ค์น˜, #Composer ์‹คํ–‰ ์•ก์…˜)


3. PHP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉ


#GitHubActions ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์˜ Action์„ ํ™œ์šฉํ•˜์—ฌ ์„ค์ • ํŒŒ์ผ ๊ธธ์ด๋ฅผ ์ค„์ด๊ณ  ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Event Trigger: push ๋˜๋Š” pull_request ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค

  2. Job: runs-on: ubuntu-latest ํ™˜๊ฒฝ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค

  3. Steps: shivammathur/setup-php@v2 ๊ฐ™์€ Action์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” #PHP๋ฒ„์ „ ๊ณผ ํ™•์žฅ(Extension)์„ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ , composer install ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

  4. Deployment: SSH Action์ด๋‚˜ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด(AWS, Azure)์˜ ๋ฐฐํฌ Action์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค



3. CI/CD ๋„๊ตฌ ์„ ํƒ ์‹œ ๊ณ ๋ ค ์‚ฌํ•ญ



๋‘ #CICD๋„๊ตฌ ๋ชจ๋‘ #PHP๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๊ฐ•๋ ฅํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์„ ํƒ ์‹œ ๋‹ค์Œ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ†ตํ•ฉ ํ™˜๊ฒฝ (Integration): ์ด๋ฏธ GitLab์ด๋‚˜ GitHub๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ํ”Œ๋žซํผ์— ํ†ตํ•ฉ๋œ #GitLabCI ๋‚˜ #GitHubActions ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค

  • ์‚ฌ์šฉ์ž ์ •์˜ (Customization): #GitHubActions ๋Š” ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ Action์„ ํ†ตํ•ด ์œ ์—ฐ์„ฑ์ด ๋†’๊ณ , #GitLabCI ๋Š” ์ž์ฒด Runner๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๋ณด์•ˆ์ด๋‚˜ ํŠน์ • ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค

  • ๋น„์šฉ (Pricing): ์†Œ๊ทœ๋ชจ ํŒ€์ด๋‚˜ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—๋Š” ๋‘ ๋„๊ตฌ ๋ชจ๋‘ ๋ฌด๋ฃŒ ๋˜๋Š” ๋งค์šฐ ์ €๋ ดํ•œ ํ‹ฐ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๊ฒฐ๋ก 



#PHP์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ ์•ˆ์ •์ ์ธ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด #CI/CDํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. #GitLabCI ์™€ #GitHubActions ๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ฐ•์ ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๋Š” ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ๊ณผ ๊ธฐ์กด ํ™˜๊ฒฝ์— ๋งž์ถฐ ๊ฐ€์žฅ ์ ํ•ฉํ•œ #CICD๋„๊ตฌ ๋ฅผ ์„ ํƒํ•˜์—ฌ #์ž๋™ํ™”ํ”Œ๋žซํผ ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ์ด ์ค‘ ํ•˜๋‚˜์˜ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹ค์ œ PHP ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌํ•˜๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.



๋น ๋ฅธ์†๋„, ๊ฐ„ํŽธํ•œ์‚ฌ์šฉ, ์žฅ์• ์—†๋Š”VPN, ์‚ฌ์šฉ์ด๋ ฅ์—†๋Š” ๊นจ๋—ํ•œ ์•„์ดํ”ผ

https://xn--299ao67b9qbmsf04c.net/