๐ Jenkins๋
ํน์ง
ํด๋ง(Poliing) : ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์ ์ฅ์์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ธ
์นํ
(Webhook) : ์ ์ฅ์(Git ๋ฑ)์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์ํ์ ๋, ์ ํจ์ค์ ์ฆ์ ์๋ ค์ฃผ๋ ๋ฐฉ์
์ด๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ํจ์ค์ ํ์ดํ ๋ผ์ธ ์ค์ ์ ํตํด ์ด๋ฃจ์ด ์ง๋ค.
pipeline {
agent any
triggers {
// GitHub์์ Webhook์ ํตํด ์ด๋ฒคํธ๊ฐ ์ฌ ๋ ํธ๋ฆฌ๊ฑฐ๋จ
githubPush()
}
stages {
stage('Checkout') {
steps {
git url: 'https://github.com/your-org/your-repo.git', branch: 'main'
}
}
stage('Build') {
steps {
sh 'echo Building...'
}
}
}
----
agent any
triggers {
// 5๋ถ๋ง๋ค Git ๋ณ๊ฒฝ์ฌํญ ํ์ธ (cron ํํ์)
pollSCM('H/5 * * * *')
}
stages {
stage('Checkout') {
steps {
git url: 'https://github.com/your-org/your-repo.git', branch: 'main'
}
}
stage('Build') {
steps {
sh 'echo Building...'
}
}
}
}
Freestyle Job
: ๊ธฐ๋ณธ ์์
๋จ์ (๋น๋, ํ
์คํธ, ๋ฐฐํฌ ์ค์ )Pipeline
: Groovy ๊ธฐ๋ฐ DSL๋ก ๋ฉํฐ์คํ
์์
์ ์Multibranch Pipeline
: ๋ธ๋์น๋ง๋ค ํ์ดํ๋ผ์ธ ๋ถ๊ธฐ ์ค์ ํญ๋ชฉ | Jenkins | GitHub Actions | GitLab CI | CircleCI |
---|---|---|---|---|
์ค์น ๋ฐฉ์ | ์์ฒด ์ค์น (on-prem, cloud) | ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ | ์์ฒด/ํด๋ผ์ฐ๋ | ํด๋ผ์ฐ๋ ์ค์ฌ |
ํ์ดํ๋ผ์ธ ์ธ์ด | Groovy (Jenkinsfile) | YAML | YAML | YAML |
ํ์ฅ์ฑ | ๋งค์ฐ ๋์ (ํ๋ฌ๊ทธ์ธ ์ค์ฌ) | GitHub ์ฐ๊ณ ์ค์ฌ | GitLab๊ณผ ๋ฐ์ | ๋น ๋ฅธ CI ํนํ |
๋ฌ๋ ์ปค๋ธ | ์ค๊ฐ~๋์ | ์ฌ์ | ์ค๊ฐ | ์ฌ์ |
์ ํจ์ค์ ๋์ปค๋ ์๋ฒ ์๋ํ(CI/CD)ํ๊ฒฝ์์ ๋งค์ฐ ์์ฃผ ํจ๊ป ํ์ฉ๋๋ค. ๋ ๋๊ตฌ์ ์ญํ ์ ์๋ก ๋ค๋ฅด์ง๋ง ์๋ก๋ฅผ ๋ณด์ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
๋จผ์ ๋์ปค์ ์ฃผ ์ญํ ์ ์ ํ๋ฆฌ์ผ์ด์
์คํ ํ๊ฒฝ์ ์บก์ํ ์ด๋ค.
์ด๋ ๊ฒ ์บก์ํ๋ ๊ฒ์ ์ด๋ฏธ์ง
๋๋ ์ปจํ
์ด๋
๋ผ๊ณ ํ๋ค.
์ด๋ฏธ์ง์ ์ปจํ ์ด๋๋ ์ฌ์ค์ ๊ฐ์ ๊ฐ๋ ์ ๊ฐ๋ฆฌํค๋ ์ฉ์ด์ด๋ค.
๋์ปค ์ด๋ฏธ์ง : Docker๋ผ๋ ํน์ ๊ธฐ์ /ํ๋ซํผ์ ํตํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋ ์ด๋ฏธ์ง. Docker์ ์ข
์์
์ปจํ
์ด๋ : ๋ณด๋ค ์ผ๋ฐ์ ์ธ ์ฉ์ด๋ก, ์ปจํ
์ด๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๋ชจ๋ ํ๋ซํผ์ ์ด๋ฏธ์ง๋ฅผ ๋ปํ๋ค.
์ฆ, ์ ํจ์ค์ ๋์ปค์ ๊ด๊ณ๋ฅผ ์์ฝํ์๋ฉด Jenkins๋ Docker๋ฅผ ์ฌ์ฉํด ์ปจํ ์ด๋ ํ๊ฒฝ์์ ๋น๋์ ํ ์คํธ๋ฅผ ์คํํ๊ฑฐ๋, ์ ํ๋ฆฌ์ผ์ด์ ์ Docker ์ด๋ฏธ์ง๋ก ๋น๋ํ๊ณ ๋ ์ง์คํธ๋ฆฌ์ ๋ฐฐํฌํ๋ฉฐ, ํ์ ์ Jenkins ์์ฒด๋ Docker ์ปจํ ์ด๋๋ก ์คํํ ์ ์๋ค.
Dockerfile
์ `checkoutโ ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค์ ํ์ผ(์คํฌ๋ฆฝํธ)
์ฝ๊ฒ ๋งํด, โ์ด๋ค OS์, ์ด๋ค ์ฑ์ ์ค์นํ๊ณ , ์ด๋ค ๋ช
๋ น์ ์คํํ ๊ฒ์ธ์งโ๋ฅผ ์ ์ํ ๋ ์ํผ๋ผ๊ณ ๋ณผ ์ ์๋ค.
docker build -t my-app .
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ์ด๋ฏธ์ง ์์ฑ
docker run
์ผ๋ก ํ
์คํธ ์๋ํ ์คํ
docker push
์ํ