1. Architecture
์ค๋ช
1 GitHub์ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ ๋ฐ์
2 GitHub์ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ฐ์ง๋๋ฉด, ์ค์ ๋ GitHub Webhook์ด Jenkins์๊ฒ HTTP POST ์์ฒญ
3 Jenkins์์ ๋ณ๊ฒฝ์ฌํญ ๊ฐ์งํ๊ณ CI / CD ํ์ดํ๋ผ์ธ ์คํ
4 ๋น๋ & ๋ฐฐํฌ
5 ์ํํธ์จ์ด๋ฅผ ๋น๋ํ๊ณ ํ ์คํธํ ํ, Docker ์ด๋ฏธ์ง๋ก ํจํค์งํ๊ณ EC2 ์ธ์คํด์ค์ ๋ฐฐํฌํ๋ค.
๋จผ์ ๊ธฐ์กด์ ๊ฐ์ง๊ณ ์๋ ํ๋ก์ ํธ ํ์ผ์ด ๋น๋๊ฐ ์๋๋์ง ๋ก์ปฌ์์ ํ์ธํ๋ค.
2. EC2 ์ธํ
EC2์์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ค๋ค. ์ดํด์ ํธ์์ฑ๊ณผ ์ฌ์ฉ ํ ec2๋ฅผ ๋ด๋ฆด๊ฑฐ๊ธฐ์ ip๋ฅผ ๊ฐ๋ฆฌ์ง ์๊ณ ์ค๋ช ํ๊ฒ ๋ค.
๋ณธ์ธ์ Ubuntu ํ๋ฆฌํฐ์ด๋ก ๋ง๋ค์๋ค. ํ๋ ฅ์ IP๋ก ์ ์์ ์ํ IP๋ฅผ ์์ฑํ๋ค.
๋ง๋ ec2์ ์ฐ๊ฒฐํด์ค๋ค.
ec2์์ฑ์ ์ฌ์ฉํ .pemํค๋ฅผ ์ด์ฉํด์ ์๊ฒฉ์ ์ฐ๊ฒฐํด์ค๋ค.
ssh -i opensource.pem ubuntu@3.35.152.81
3. docker ์ค์น
SWAP MEMORY
$ sudo fallocate -l 2G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
์๋์ ๊ฐ์ ํ๋ฉด์ด ๋จ๋ฉด ์ฑ๊ณต์ด๋ค.
repository setup
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
docker GPG ์ถ๊ฐ
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
repository setup
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
docker install
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker install check
$ sudo docker run hello-world
๋์ปค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์๋ค.
4. ์ ํจ์ค ์ค์น
์ ํจ์ค ์ด๋ฏธ์ง ๋ค์ด๋ก๋
$ docker pull jenkins/jenkins:lts
์ ํจ์ค ์ปจํ
์ด๋
$ sudo docker run -d -p 8080:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts
docker-compose ์ฌ์ฉํ๊ธฐ
docker-compose๋ ์ปจํ ์ด๋๋ค์ ์คํ์ ๊ด๋ฆฌํ๋ ๋์ปค์ ๊ธฐ๋ฅ์ผ๋ก, ํ๋์ ์ปจํ ์ด๋๋ง ์ฌ์ฉ ํ ๋๋ ์ ์ฉํ๋ค.
$ sudo apt install docker-compose
Docker Compose ์ ๊ทธ๋ ์ด๋
$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
๋์ปค ์คํ ๊ฒฝ๋ก์์
$ sudo vim docker-compose.yml
์๋ ๋ด์ฉ ์์ฑ
version: "3"
services:
jenkins:
image: jenkins/jenkins:lts
user: root
volumes:
- ./jenkins:/var/jenkins_home
ports:
- 8081:8080
์์ฑํ docker-compose.yml ์ด ์กด์ฌํ๋ ๊ฒฝ๋ก์์ ์๋์ ๋ช ๋ น์ ์คํํ๋ฉด ๋ณต์กํ ๋ช ๋ น ์์ด๋ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋ค.
- version: Docker Compose ํ์ผ์ ๋ฒ์
- services: Docker Compose๊ฐ ๊ด๋ฆฌํ ์๋น์ค๋ฅผ ์ ์
- jenkins: ๊ด๋ฆฌํ ์๋น์ค ์ด๋ฆ
- image: ์ฌ์ฉํ ์ด๋ฏธ์ง ์ง์
- user: ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ์ฉํ ์ฌ์ฉ์๋ฅผ ์ง์
- volumes: ํธ์คํธ์ ์ปจํ ์ด๋ ๊ฐ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ฉฐ, ํธ์คํธ์ ./jenkins ๋๋ ํ ๋ฆฌ๋ฅผ ์ปจํ ์ด๋์ /var/jenkins_home ๋๋ ํ ๋ฆฌ์ ์ฐ๊ฒฐ
- ports: ํธ์คํธ์ ์ปจํ ์ด๋ ๊ฐ์ ํฌํธ ๋งคํ, ํธ์คํธ์ 8081 ํฌํธ๋ฅผ ์ปจํ ์ด๋์ 8080 ํฌํธ๋ก ๋งคํ
- jenkins: ๊ด๋ฆฌํ ์๋น์ค ์ด๋ฆ
์ด๋ ๊ฒ ์ค์ ๋ Docker Compose ํ์ผ์ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ๋จธ์ ์์ Jenkins๋ฅผ ์คํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํ๊ณ , 8081 ํฌํธ๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ค.
$ sudo docker-compose up -d
-d ์ต์ ์ ์ปจํ ์ด๋๊ฐ ๋ฐ๋ชฌ์ผ๋ก ์คํ๋จ์ ์๋ฏธ
๋ฐ๋ชฌ์ด๋?
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ํ๋ก์ธ์ค.
ํ๋ก์ธ์ค๋ค์ ์ฃผ๋ก ์์คํ ์๋น์ค๋ ์์ ์ ์ํํ๋ฉฐ, ์ฌ์ฉ์์ ์ ๋ ฅ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์คํ
"-d" ์ต์ ์ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ฉฐ, ๋ณดํต ์์คํ ๋ถํ ์ ์๋์ผ๋ก ์์๋๊ณ , ์ฌ์ฉ์์์ ์ํธ ์์ฉ ์์ด ์์ ์ ์ํ
8080ํฌํธ์ http๋ฅผ ์ด์ด์ค์ผํ๋ค.
http๋ฅผ ์ด์ด์ฃผ์ง ์์ผ๋ฉด webhooks๊ฐ ์ฐ๊ฒฐ์ด ๋์ง์์ ๊นํ๋ธ์ Pushํด๋ ์๋์ผ๋ก ๋ฐฐํฌ๊ฐ ๋์ง์๋๋ค.
'๐ณ ์ธํ๋ผ > Jenkins' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Jenkins ์๊ฒฉ ์๋ฒ ๋ฐฐํฌ(Publish Over SSH) (4) (0) | 2024.05.13 |
---|---|
Jenkins ์๊ฒฉ ์๋ฒ ๋ฐฐํฌ(Publish Over SSH) (3) (0) | 2024.05.13 |
Jenkins ์๊ฒฉ ์๋ฒ ๋ฐฐํฌ(Publish Over SSH) (2) (0) | 2024.05.13 |
Jenkins๋? (0) | 2024.05.13 |