๐ GitLab ์๋ฒฝ ๊ฐ์ด๋: ๊ฐ๋ ๋ถํฐ ํ์ฉ๊น์ง!
“GitHub๊ณผ ๋ค๋ฅธ GitLab, ๋์ฒด ๋ญ๊ฐ ๋ค๋ฅธ ๊ฑฐ๊ณ ์ ์จ์ผ ํ ๊น? CI/CD๊น์ง ๋ค๋ฃจ๋ฉด์ GitLab์ ์์ ํ ๋ง์คํฐํด๋ณด์!”
๐ ๋ชฉ์ฐจ
1๏ธโฃ GitLab์ด๋?
2๏ธโฃ GitLab์ ์ฃผ์ ๊ธฐ๋ฅ
3๏ธโฃ GitHub๊ณผ GitLab์ ์ฐจ์ด์
4๏ธโฃ GitLab์ ์ฃผ์ ๊ตฌ์ฑ ์์
5๏ธโฃ GitLab ์ฌ์ฉ ๋ฐฉ๋ฒ
6๏ธโฃ GitLab CI/CD ํ์ฉํ๊ธฐ
7๏ธโฃ GitLab์ ์ฅ์ ๊ณผ ํ๊ณ
8๏ธโฃ ๊ฒฐ๋ก
1๏ธโฃ GitLab์ด๋?
GitLab์ Git์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ฝ๋ ์ ์ฅ์์ด๋ฉด์ CI/CD ๊ธฐ๋ฅ๊น์ง ํฌํจ๋ DevOps ํ๋ซํผ์ด๋ค.
๊ธฐ์ , ํ, ๊ฐ์ธ ๊ฐ๋ฐ์๋ค์ด ์์ค ์ฝ๋ ๊ด๋ฆฌ, ์ด์ ํธ๋ํน, ์ฝ๋ ๋ฆฌ๋ทฐ, ๋ฐฐํฌ ์๋ํ๊น์ง ํ ๊ณณ์์ ํ ์ ์๋๋ก ์ง์ํ๋ค.
๐ก ์ฃผ์ ํน์ง
โ Git ์ ์ฅ์: Git์ ๊ธฐ๋ฐ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ ๊ฐ๋ฅ
โ CI/CD ๋ด์ฅ: GitLab ์์ฒด์์ CI/CD ํ์ดํ๋ผ์ธ ์ ๊ณต
โ ์์ฒด ํธ์คํ ๊ฐ๋ฅ: ์จํ๋ ๋ฏธ์ค ์ค์น ๊ฐ๋ฅ (GitHub์ ํด๋ผ์ฐ๋ ์์ฃผ)
โ ๋ฌด๋ฃ/์ ๋ฃ ํ๋ ์ ๊ณต: ๋ฌด๋ฃ ํ๋์์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ ๊ณต
2๏ธโฃ GitLab์ ์ฃผ์ ๊ธฐ๋ฅ
GitLab์ ์ฝ๋ ์ ์ฅ์ ์ญํ ๋ฟ๋ง ์๋๋ผ DevOps ์ ์ฒด ๊ณผ์ ์ ๊ด๋ฆฌํ ์ ์๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
โ 1. ์์ค ์ฝ๋ ๊ด๋ฆฌ
โ Git ๊ธฐ๋ฐ ์ ์ฅ์ ๊ด๋ฆฌ
โ ๋ธ๋์น ๋ณดํธ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ
โ Merge Request(=GitHub์ Pull Request)
โ 2. CI/CD (Continuous Integration & Deployment)
โ GitLab CI/CD ๋ด์ฅ
โ .gitlab-ci.yml ํ์ผ๋ก ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ
โ ๋น๋, ํ ์คํธ, ๋ฐฐํฌ ์๋ํ ์ง์
โ 3. ์ด์ ํธ๋ํน & ํ๋ก์ ํธ ๊ด๋ฆฌ
โ Jira ๊ฐ์ ์ด์ ํธ๋์ปค ๋ด์ฅ
โ ์นธ๋ฐ ๋ณด๋ ์ ๊ณต
โ ํ์คํฌ ๊ด๋ฆฌ ๋ฐ ๋ง์ผ์คํค ์ค์
โ 4. ๋ณด์ ๋ฐ ๊ถํ ๊ด๋ฆฌ
โ ๋ธ๋์น๋ณ ์ ๊ทผ ์ ์ด ๊ฐ๋ฅ
โ ๋ ๋จ๊ณ ์ธ์ฆ(2FA) ์ง์
โ ์ฝ๋ ๋ณด์ ๋ถ์
3๏ธโฃ GitHub vs GitLab: ๋ญ๊ฐ ๋ค๋ฅผ๊น?
๊ธฐ๋ฅGitHubGitLab
์ฝ๋ ์ ์ฅ์ | โ ๊ฐ๋ฅ | โ ๊ฐ๋ฅ |
CI/CD ๋ด์ฅ | โ ๋ณ๋ GitHub Actions ์ฌ์ฉ | โ ๊ธฐ๋ณธ ๋ด์ฅ |
์์ฒด ์๋ฒ ์ด์ | โ ์ ํ์ | โ ๊ฐ๋ฅ (์จํ๋ ๋ฏธ์ค) |
์ด์ ํธ๋ํน | โ ์ ๊ณต | โ ์ ๊ณต (์นธ๋ฐ ๋ณด๋ ํฌํจ) |
๊ถํ ๊ด๋ฆฌ | โ ๊ฐ๋ฅ (์ํฐํ๋ผ์ด์ฆ ํ์ ) | โ ๊ธฐ๋ณธ ์ ๊ณต |
๐ก ๊ฒฐ๋ก :
• GitHub: ๊ฐ๋ฐ์ ์ค์ฌ, ๊นํ๋ธ ์ก์ ์ ํ์ฉํ CI/CD
• GitLab: ๊ธฐ์ & ์กฐ์ง ๋ง์ถคํ, CI/CD๊ฐ ๋ด์ฅ๋์ด ์์
4๏ธโฃ GitLab์ ์ฃผ์ ๊ตฌ์ฑ ์์
๐ GitLab์ ํต์ฌ ๊ฐ๋
๊ฐ๋ ์ค๋ช
ํ๋ก์ ํธ (Projects) | Git ์ ์ฅ์, ์ด์ ํธ๋ํน, CI/CD ๋ฑ ํฌํจ๋ ๋จ์ |
๋ ์ง์คํธ๋ฆฌ (Registry) | Docker ์ปจํ ์ด๋ ์ ์ฅ์ |
Merge Request (MR) | GitHub์ Pull Request์ ๋์ผํ ๊ฐ๋ |
Runner | GitLab CI/CD๋ฅผ ์คํํ๋ ์์ง |
Pipeline | .gitlab-ci.yml ๊ธฐ๋ฐ์ผ๋ก ์คํ๋๋ CI/CD ํ์ดํ๋ผ์ธ |
5๏ธโฃ GitLab ์ฌ์ฉ ๋ฐฉ๋ฒ
GitLab์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์น์์ ์ง์ ๊ฐ์ ํ๊ฑฐ๋ ์์ฒด ์๋ฒ์ ์ค์นํ ์ ์๋ค.
๐ GitLab ํ์๊ฐ์ ๋ฐ ๊ธฐ๋ณธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
1๏ธโฃ GitLab ๊ณต์ ์ฌ์ดํธ ๊ฐ์
2๏ธโฃ ์ ํ๋ก์ ํธ ์์ฑ
3๏ธโฃ ํ๋ก์ ํธ๋ฅผ ํผ๋ธ๋ฆญ/ํ๋ผ์ด๋น ์ค์
4๏ธโฃ GitLab์์ ์ ๊ณตํ๋ .gitlab-ci.yml์ ์ถ๊ฐํ์ฌ CI/CD ์คํ
6๏ธโฃ GitLab CI/CD ํ์ฉํ๊ธฐ
GitLab์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ CI/CD ์๋ํ์ด๋ค.
๐ .gitlab-ci.yml: CI/CD ์ค์ ํ์ผ
GitLab์ CI/CD๋ ํ๋ก์ ํธ ๋ฃจํธ์ .gitlab-ci.yml ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ์์๋๋ค.
โ ์์ : ๊ฐ๋จํ GitLab CI/CD ํ์ดํ๋ผ์ธ
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "๋น๋ ์คํ ์ค..."
- npm install
test_job:
stage: test
script:
- echo "ํ
์คํธ ์คํ ์ค..."
- npm test
deploy_job:
stage: deploy
script:
- echo "๋ฐฐํฌ ์คํ ์ค..."
๐ก ๋จ๊ณ๋ณ ์ค๋ช
1๏ธโฃ build: ํ๋ก์ ํธ ๋น๋
2๏ธโฃ test: ์๋ํ๋ ํ ์คํธ ์คํ
3๏ธโฃ deploy: ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์คํ
๐ GitLab Runner๋?
GitLab CI/CD๊ฐ ์คํ๋๋ ํ๊ฒฝ์ Runner๋ผ๊ณ ํ๋ค.
โ ๋ก์ปฌ ๋จธ์ ์ ์ค์น ๊ฐ๋ฅ
โ Docker, Kubernetes์์ ์คํ ๊ฐ๋ฅ
๐ Runner ์ค์น (๋ก์ปฌ)
sudo gitlab-runner register
๐ก Runner๋ฅผ ์ค์ ํ๋ฉด, GitLab์ด ์ง์ CI/CD๋ฅผ ์คํํ ์ ์๋ค.
7๏ธโฃ GitLab์ ์ฅ์ ๊ณผ ํ๊ณ
๐ฏ GitLab์ ์ฅ์
โ CI/CD ๋ด์ฅ: ๋ณ๋ ์ค์ ์์ด ๋ฐ๋ก CI/CD ์ฌ์ฉ ๊ฐ๋ฅ
โ ์์ฒด ์๋ฒ ์ด์ ๊ฐ๋ฅ: ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์์ ์ด์ ๊ฐ๋ฅ
โ ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ: ๊ถํ ๊ด๋ฆฌ, ์ฝ๋ ๋ณด์ ๋ถ์ ์ ๊ณต
โ ํตํฉ DevOps ํ๋ซํผ: ์ฝ๋ ์ ์ฅ์ + ๋ฐฐํฌ + ์ด์ ํธ๋ํน๊น์ง ๊ฐ๋ฅ
โ ๏ธ GitLab์ ๋จ์
โ GitHub๋ณด๋ค ์ปค๋ฎค๋ํฐ๊ฐ ์์
โ GitHub์ ๋นํด UI๊ฐ ๋ค์ ๋ฌด๊ฑฐ์
โ ์์ฒด ํธ์คํ ํ ๊ฒฝ์ฐ ๊ด๋ฆฌ ๋ถ๋ด ์ฆ๊ฐ
8๏ธโฃ ๊ฒฐ๋ก : GitLab์ ์ธ์ ์จ์ผ ํ ๊น?
โ CI/CD๊ฐ ์ค์ํ ํ๋ก์ ํธ: CI/CD๊ฐ ๋ด์ฅ๋ GitLab์ด ํจ์ฌ ํจ์จ์
โ ์์ฒด ์๋ฒ์์ Git ๊ด๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ: GitLab์ ์จํ๋ ๋ฏธ์ค ์ค์น ๊ฐ๋ฅ
โ ๊ธฐ์ /ํ ๋จ์์ ํ์ : ๋ณด์ ๊ธฐ๋ฅ๊ณผ ๊ถํ ๊ด๋ฆฌ๊ฐ ํ์ํ ๋ ์ ํฉ
๐ “GitHub์ด๋, GitLab์ด๋?”
๐ ๊ฐ์ธ ํ๋ก์ ํธ๋ผ๋ฉด GitHub์ด ๋ ์ฝ๋ค!
๐ CI/CD + Git ํตํฉ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ฉด GitLab์ด ๊ฐ๋ ฅํ ์ ํ!
๐ท ์ ์ค์ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ด ์๋น! ๐ท
'Dev-ops' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ Heroku ์๋ฒฝ ๊ฐ์ด๋ (0) | 2025.03.30 |
---|---|
๐ GCP (Google Cloud Platform) (0) | 2025.03.29 |
๐ GitHub Actions CI ์ํฌํ๋ก (0) | 2025.03.27 |
๐ GitHub Actions ์๋ฒฝ ๊ฐ์ด๋ (0) | 2025.03.26 |
๐ ๋ํ์ ์ธ CI ๋๊ตฌ ์๋ฒฝ ๋น๊ต (0) | 2025.03.25 |