๋ชฉ์
์์
๊ฒฐ๊ณผ๋ฌผ(Springboot jar file, gradle ์ด์ฉ)์ AWS EC2์ ๋ฐ์ํด๋ณด๊ธฐ
โฃ jenkins ์๋ฒ์ ์์
๊ฒฐ๊ณผ๋ฌผ์ ๋น๋ / ๋ฐฐํฌํ๋ ์
.
โฃ ์์
๊ฒฐ๊ณผ๋ฌผ์ ๊ฐ์ธ github ์์ ๊ฐ์ ธ์ด! (github ์ webhook ๊ธฐ๋ฅ ์ด์ฉ)
์์
์์
1๏ธโฃ EC2 ์์ฑ ๋ฐ ํฐ๋ฏธ๋ ์ ์
โฃ EC2 ์์ฑ๋ฐฉ๋ฒ์ ์๋ตํจ. (t2.micro ์ด์ฉ (๋ฉ๋ชจ๋ฆฌ 1GB..jenkins ๋ฐฐํฌ๋ ๋๊ธดํจ!..), aws linux ์ด์ฉ)
โฃ pem key ์์คํ๊ฒ ๋ณด๊ดํ๋๋กํ๊ธฐ (ssh ํด๋์ ์ด๋์ํค๋ ๋ฑ)
1-1. EC2 ๋ณด์๊ทธ๋ฃน ์ค์ ํ๊ธฐ (์ธ๋ฐ์ด๋ ๊ท์น ์ค์ )
1-2. EC2 ์ธ์คํด์ค ์๋ฒ ์ ์ ์๋ (2๊ฐ์ง)
- pem key ์ .ssh ํด๋๋ก ์ฎ๊ฒจ์ฃผ๋ ์์
์ ์ถ๊ฐํจ.
$ sudo mv {pem key ์์น๊ฒฝ๋ก}/jenkins.pem ~/.ssh
โญ๏ธ ์ฐธ๊ณ ๋ก ์ค์ต์ ์ํฉ์ด๊ธฐ์ EC2 ์๋ฒ๋ฅผ ๋ด๋ฆฌ๊ณ ์ฌ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค๋ฉด
[1. ssh ์ผ๋ก ์ ์ํ๋ ๋ฐฉ๋ฒ] ์ผ๋ก ํ๋๊ฒ์ด ๋ง์๋ฏ. (IPv4๊ฐ ์๋ฒ ์ฌ์์์ ๋ฐ๋)
1-2-1. ssh ์ผ๋ก ์ ์ํ๋ ๋ฐฉ๋ฒ
# ssh -i {pem key ๊ฒฝ๋ก} {ec2 ์ธ์คํด์ค ๊ณ์ ID}@{ํผ๋ธ๋ฆญ IPv4 DNS or ํผ๋ธ๋ฆญ IPv4 IP}
$ ssh -i ~/.ssh/jenkins.pem ec2-user@ec2-2-3-4-5.ap-northeast-2.compute.amazonaws.com
# root ๊ถํ์ด ์๋ ๊ฒฝ์ฐ
$ sudo ssh -i ~/.ssh/jenkins.pem ec2-user@ec2-2-3-4-5.ap-northeast-2.compute.amazonaws.com
1-2-2. ~/.ssh/config file ์ ์ ์์ ๋ณด ์ถ๊ฐ ํ, Host ๋ช
์ผ๋ก ์ ์ํ๋ ๋ฐฉ๋ฒ
$ vi ~/.ssh/config
# ์ด์ด์ ์๋๋ด์ฉ ์ถ๊ฐ
Host test_jenkins
User ec2-user
HostName ec2-2-3-4-5.ap-northeast-2.compute.amazonaws.com
IdentityFile ~/.ssh/jenkins.pem
# ๊ทธ๋ฆฌ๊ณ ์ ์ฅ (:wq!)
# ์ ์์๋๋ ์๋์ ๊ฐ์ด ํจ. (root ๊ถํ ์๋ ๊ฒฝ์ฐ sudo ssh ~)
$ ssh test_jenkins
๐ฅ ๊ทธ๋ฐ๋ฐ, Host ๋ช
์ผ๋ก ์ ์ ์๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ?
> pem key ๊ถํ์ ๋ณ๊ฒฝํด์ฃผ๋ ์ ์์ด ๊ฐ๋ฅํจ! (chmod 400 ~ ๋์๊ฒ๋ง ์ฝ๊ธฐ ๊ถํ ์ค์ )
2๏ธโฃ EC2 ์๋ฒ ์ ์ ํ, ํ๋ก๊ทธ๋จ ์ค์น ๋ฐ ์๋ฒ ์
ํ
2-1. java ์ค์น
โฃ ๋์ ๊ฒฝ์ฐ, aws linux์ ์ฌ์ฉํ๊ธฐ์ ํด๋น๋ฌธ์ ← ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ค์นํจ
2-2. ํ์์กด ๋ณ๊ฒฝ (ํ๊ตญ ์๊ฐ)
$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# ๋ ์ง ํ์ธ
$ date
2-3. ํธ์คํธ๋ค์ ๋ณ๊ฒฝ
$ sudo hostnamectl set-hostname mungmang-jenkins
$ sudo reboot
# ๋ช๋ถ ํ ๋ค์์ ์
# ํ์ธ
$ hostname
2-4. jenkins ์ค์น
# jenkins repository ์ ์ค์ ํ์ผ ์์ฑ
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# jenkins ์ค์น
$ sudo yum install jenkins
# jenkins ์คํ
$ sudo systemctl start jenkins
# ๋ง์ฝ ๋ถํ
์ ๊ฐ๋ฅํ๊ฒ ์ค์ ํ๋ ค๋ฉด ๋ค์๋ ์ถ๊ฐ
$ sudo systemctl enable jenkins
2-5. jenkins ์ ์ ๋ฐ ํ๋ฌ๊ทธ์ธ ์ค์น
.. ํ๋ฌ๊ทธ์ธ ์ค์น ํ,
jenkins ์ ์ ๋ฑ๋ก ํ๋ฉด์์ ๋ก๊ทธ์ธํ ๊ณ์ ์ ๋ณด ์
๋ ฅ ↓ ↓ ↓ (๊ณ์ ๋ช
๋ฐ ์ํธ๋ก jenkins ๋ก๊ทธ์ธ ๊ฐ๋ฅ!)
2-6. gradle ์ค์น https://docs.gradle.org/6.9.1/userguide/installation.html ์ฐธ๊ณ ํจ
$ mkdir /opt/gradle
$ unzip -d /opt/gradle gradle-6.9.1-bin.zip
$ ls /opt/gradle/gradle-6.9.1
$ export PATH=$PATH:/opt/gradle/gradle-6.9.1/bin
$ gradle -version
2-7. git ์ค์น https://gamoo12.tistory.com/205 ์ฐธ๊ณ ํจ
$ sudo yum update -y
$ sudo yum install git -y
$ git version
3๏ธโฃ github ์ค์
3-0. ๋ฐ์ํ ํ๋ก์ ํธ๋ ์๋ค๊ณ ๊ฐ์ (์์
๊ฒฐ๊ณผ๋ฌผ)
3-1. EC2์์ ssh key ์์ฑ
$ cd ~/.ssh
$ ssh-keygen
# id_rsa key ์์ฑ
3-2. github project ๋ด XXX.pub key ๋ฑ๋ก ํ์
3-2-1. https://github.com/{git๊ณ์ }/{gitํ๋ก์ ํธ}/settings/keys/new ์ด๋
$ cat ~/.ssh/id_rsa.pub
# ssh-rsa ~ ๋ด์ฉ์ ๋ณต์ฌ
3-3. github ํ๋ก์ ํธ ๋ด webhook ์ค์ ํ์
3-2-1.https://github.com/{git๊ณ์ }/{gitํ๋ก์ ํธ}/settings/hooks/new ์ด๋
• Payload URL : http://{ec2์ jenkins ๋์ด ์ฃผ์ (ex. ec2~~:8080}/github-webhook/ ์
๋ ฅ
• Content type : application/json
4๏ธโฃ jenkins ์ค์
1. Credentials ๋ฑ๋ก ํ์ (github ๐ jenkins ์ฐ๊ฒฐ์ ๋)
Jenkins ๊ด๋ฆฌ > Manage Credentials > Stores scoped Jenkins ์ Jenkins ํด๋ฆญ > Global credentials
Kind : SSH Username with private key ์ ํ
Private Key: .ssh/id_rsa ์ ์
๋ ฅ
2. ๋น๋ ๋ฐ ์คํ (Dashboard > ๋์ ํ๋ก์ ํธ > ๊ตฌ์ฑ)
๋น๋์ ๋ฐ
GitHub hook trigger for GITScm polling ์ ํ
[ํ๋ฌ๊ทธ์ธ ์ค์น ํ์] post build task (์๋์ ๋ด์ฉ ๊ธฐ์
, ์์
๊ฒฐ๊ณผ๋ฌผ jar ํ์ผ๋ก ๋ง๋ ๊ฒ์ ์คํ)
JAR=$(ls -tr /var/lib/jenkins/workspace/{jenkins working directory ๋ช
}/build/libs | grep jar | tail -n 1)
echo $JAR
nohup java -jar /var/lib/jenkins/workspace/{jenkins working directory ๋ช
}/build/libs/$JAR &
• $(ls -tr /var/lib/jenkins/workspace/{jenkins working directory ๋ช
}/build/libs | grep jar | tail -n 1) : jar ํ์ผ๋ช
์ถ์ถ ์ํจ.
• nohup java -jar /var/lib/jenkins/workspace/{jenkins working directory ๋ช
}/build/libs/$JAR & : jar ์คํ์ํจ, nohup ์ ๋ถ์์ผ๋ก์จ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ! (ํฐ๋ฏธ๋ ์ข
๋ฃ ํ๋๋ผ๋ ์์
๊ฒฐ๊ณผ๋ฌผ์ ๊ณ์ ์๋ฒ์ ์คํ๋์ด ์๋๋ก ํ๊ธฐ์ํจ)
๋๋์
โฃ ์ฝ์ง์ ์ค์ผ ํ์์ฑ์ด์๊ฒ ๋ค.
โฃ ํ์ดํ๋ผ์ธ ์์ฑ์ ์ด์ฉํ ๋ฐฐํฌ๋ ํ๋ฒ ํด๋ณด์์ผ ํ ๊ฒ๊ฐ๋ค.
โฃ docker..kubernetes ๋ฑ์ ์ด์ฉํ ๋ฐฐํฌ๋ฐฉ๋ฒ๋ ํด๋ณด์์ผ ํ ๊ฒ๊ฐ๋ค. + ๋ค๋ฅธ ์๋ฒ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ ๋ฑ
์ฐธ๊ณ
์ฑ
: ์คํ๋ง ๋ถํธ์ AWS๋ก ํผ์ ๊ตฌํํ๋ ์น ์๋น์ค
๋งํฌ: https://lemontia.tistory.com/656