CI/CD๋ ๊ฐ๋ฐ ๊ฒฐ๊ณผ๋ฌผ์ ๋ํด ์ง์์ ์ธ ํตํฉ๊ณผ ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ํ๋ ํ๋ก์ธ์ค์ด๋ฉฐ ํตํฉ, ๋น๋, ํ ์คํธ, ๋ฐฐํฌ ์ ๊ณผ์ ์ ๋ํ ์๋ํ๋ฅผ ๊ฑฐ์น๋ค.
CI์์๋ ์ปดํ์ผ, ํ ์คํธ, ํจํค์ง ์์ ์ด ํฌํจ๋๊ณ
CD๋ CI์ ์ํด ํจํค์ง๋ ๊ฒ์ ๋ฐฐํฌํ๋ ์์ ์ ํ๊ฒ ๋๋ค.
ํนํ ๋ถ์ฐ๋ ์๋ฒ์์ ์คํ๋๋ MSA ํ๊ฒฝ์์์ ์๋ํ ๋ฐฐํฌ๋ ๋ณด๋ค ํจ์จ์ ์ธ ์์ ์ ํ ์ ์๊ฒ ํด์ค๋ค.
CI/CD WorkFlow
- ๊ฐ๋ฐ์๊ฐ git commit์ ํ๋ค.
- CI/CD ๋๊ตฌ(Jenkins)๊ฐ SCM(git)์ ์ ์ฅ๋ ์ฝ๋๋ฅผ ๋ถ๋ฌ์จ๋ค.
- CI/CD ๋๊ตฌ๊ฐ ์์ค์ฝ๋์ build, test, package๋ฅผ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ์คํจ ์ fail, ์ฑ๊ณต ์ pass
- ์๋ฒ์ ๋ฐฐํฌํ๋ค.
์์ผ๋ก ์์ ๊ฐ์ ๊ณผ์ ์ ์คํํด ๋ณผ ๊ฒ์ด๋ค !
Jenkins
๐ท Docker Container๋ก Jenkins ์ค์นํ๊ธฐ
์ด๋ฏธ์ง ๋ค์ด๋ก๋ : docker pull jenkins/jenkins
Jenkins ์คํ : docker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --restart=on-failure --name jenkins-server jenkins/jenkins:lts-jdk17
Jenkins๋ฅผ ์คํํ๊ณ 127.0.0.1:8080์ ์ ์ํ๋ฉด ํจ์ค์๋๋ฅผ ์ ๋ ฅํ๋ผ๋ ์ฐฝ์ด ๋ฌ๋ค.
ํจ์ค์๋๋ docker logs jenkins-server
๋ก๊ทธ์์ ํ์ธํ ์ ์๋ค.
ํจ์ค์๋๋ฅผ ์ ๋ ฅํ๋ฉด plugin์ ์ค์นํ ์ ์๊ณ , ์ค์น ํ์๋ ๊ณ์ ์ ์์ฑํ๋ผ๊ณ ํ๋ค.
๊ณ์ ๊น์ง ์์ฑํ๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.
์ผ์ชฝ ์๋จ์ ์๋ item์ Jenkins์์ ์ฌ์ฉํ๊ณ ์๋ ์์ ์ ์ต์๋จ์์ด๋ค.
Jenkins ๊ด๋ฆฌ ๋ฉ๋ด์์๋ Maven, Gradle, Git, JDK ๋ฑ์ ์ค์ ํ ์ ์๋ค.
๐ก ๋ง์ฝ macOS ํ๊ฒฝ์์ Jenkins๋ฅผ ๋ณ๋๋ก ์ค์นํ๋ค๋ฉด JDK ๊ฒฝ๋ก๋ฅผ ์ค์ ํด์ผํ๋ค.
(๋๋ Docker ํํ๋ก Jenkins๋ฅผ ๊ธฐ๋ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ค์ ํ์์์ !)
๐น Item (ํ๋ก์ ํธ) ์์ฑํ๊ธฐ
์์์ ์ธ๊ธํ ์ผ์ชฝ ์๋จ์ item์ ์์ฑํ๋ ค๋ฉด '+ ์๋ก์ด item' ๋ฉ๋ด๋ฅผ ํตํด์ ์์ฑํ๋ฉด ๋๋ค.
'์ง๊ธ ๋น๋'๋ฅผ ๋๋ฅด๋ฉด ํ๋จ์ Build History ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๊ณ ,
์ฝ์ ๋ด์ฉ ๋ํ ํ์ธํ ์ ์๋ค.
๋ค์์๋ Tomcat ์๋ฒ์ Docker ์ปจํ ์ด๋์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์์ฑํด๋ณด๊ฒ ๋ค !
์ฐธ๊ณ ์๋ฃ
https://github.com/jenkinsci/docker
'DevOps > โ๏ธ CI&CD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[โ๏ธCI/CD] GitHub Actions - AWS CodeDeploy & S3 ์ด์ฉํด์ ๋ฐฐํฌ (0) | 2024.04.22 |
---|---|
[โ๏ธ CI/CD] CI/CD์ GitHub Actions ํ์ฉ๋ฒ (1) | 2024.04.19 |
[โ๏ธ CI/CD] Jenkins๋ฅผ ์ด์ฉํด ๋ฐฐํฌํ๊ธฐ 2 - ๋ค๋ฅธ ์๋ฒ (0) | 2024.01.26 |
[โ๏ธ CI/CD] Jenkins๋ฅผ ์ด์ฉํด ๋ฐฐํฌํ๊ธฐ 1 - ๋ก์ปฌ ์๋ฒ (1) | 2024.01.24 |