
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ์ต์๊ธ
๐ 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
์ง๋ ์๊ฐ์๋ #CI/CD ์ ๊ฐ๋ ๊ณผ ํ์์ฑ์ ์ดํดํ์ต๋๋ค. ์ด์ ์ด ์๋ํ๋ ํ๋ก์ธ์ค๋ฅผ ์ค์ ๋ก ๊ตฌํํ๊ธฐ ์ํด ์ด๋ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง ์์๋ณผ ์ฐจ๋ก์ ๋๋ค. ํ๋์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ ๊ฐ์ง ๊ฐ๋ ฅํ #CICD๋๊ตฌ ๋ GitLab CI/CD์ GitHub Actions์ ๋๋ค.
๋ ๋๊ตฌ ๋ชจ๋ Git ์ ์ฅ์์์ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ๋ ์๋์ผ๋ก ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ์ฌ ๋น๋, ํ ์คํธ, ๋ฐฐํฌ๋ฅผ ์ํํ๋ #์๋ํํ๋ซํผ ์ ๋๋ค. ๋ ๋๊ตฌ์ ์๋ ๋ฐฉ์๊ณผ #PHP์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค.
1. GitLab CI/CD: ์๋ฒฝํ ํตํฉ ํ๊ฒฝ
#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 ์์ ์ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง๋๋ค
build: #PHP์ด๋ฏธ์ง ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก #Docker์ด๋ฏธ์ง ๋ฅผ ๋น๋ํฉ๋๋ค
test:
composer install
ํ PHPUnit์ด๋ #PHPStan ๊ฐ์ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์คํํฉ๋๋คdeploy: ๋น๋๋ #Docker์ด๋ฏธ์ง ๋ฅผ ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ํธ์ํ๊ณ , ์ต์ข ์ด์ ์๋ฒ์ ๋ฐฐํฌ ๋ช ๋ น(SSH, Kubernetes ๋ฑ)์ ์ ์กํฉ๋๋ค
2. GitHub Actions: ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ์ํฌํ๋ก์ฐ
#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์ ํ์ฉํ์ฌ ์ค์ ํ์ผ ๊ธธ์ด๋ฅผ ์ค์ด๊ณ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
Event Trigger:
push
๋๋pull_request
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ํฌํ๋ก์ฐ๊ฐ ์์๋ฉ๋๋คJob:
runs-on: ubuntu-latest
ํ๊ฒฝ์ ์ง์ ํฉ๋๋คSteps:
shivammathur/setup-php@v2
๊ฐ์ Action์ ์ฌ์ฉํ์ฌ ์ํ๋ #PHP๋ฒ์ ๊ณผ ํ์ฅ(Extension)์ ์ฝ๊ฒ ์ค์นํ๊ณ ,composer install
๋ช ๋ น์ ์คํํฉ๋๋ค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/