๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ‹ AWS

[ Jenkins ] Jenkins FreeStyle Github ๋ฐฐํฌํ•˜๊ธฐ

by MuGeon Kim 2023. 4. 21.
๋ฐ˜์‘ํ˜•

 

1. ์„œ๋ก 


์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์—๋Š” ์ €๋ฒˆ์— ํ–ˆ๋˜ ๋ฐฐํฌ์— Github๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์— ๋ฐฐํฌ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €๋ฒˆ์— FreeStyle ๋ฐฐํฌ์— Github๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ์ €๋ฒˆ์— ๋ฐฐํฌ๊ฐ€ ๊ถ๊ธˆํ•˜์‹œ๋ฉด ์ด ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด์‹œ๋ฉด ๋ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

[ Jenkins ] Jenkins Item Freestyle CI/CD ๋ฐฐํฌ

1. ์„œ๋ก  ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์—๋Š” AWS EC2์—์„œ Jenkins Item์— FreeStyle ๋ฐฐํฌ์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ธ€์„ ์ž‘์„ฑ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๋ฅผ ํฌ๊ฒŒ 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด Github๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹๊ณผ ์‚ฌ์šฉํ•˜

pos04167.tistory.com

๊ธฐ์กด์— ํ–ˆ๋˜ ๋‚ด์šฉ์˜ ์ค‘๋ณต์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋ธ”๋กœ๊ทธ์—์„œ SSH ์—ฐ๊ฒฐ๊นŒ์ง€ ํ™•์ธ์„ ํ•ด์ฃผ์‹œ๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ํ•˜์‹œ๋ฉด ๋ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Dockerfile์„ ๋งŒ๋“ค์–ด์„œ Docker Hub์— ์ด๋ฏธ์ง€ ์˜ฌ๋ฆฌ๊ธฐ

1. Dockerfile ๋งŒ๋“ค๊ธฐ

FROM openjdk:11-jdk

LABEL maintainer="kimmugeon@naver.com"

ARG JAR_FILE=build/libs/*.jar

COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

 

2. Plane jar false๋กœ ์„ค์ •ํ•˜๊ธฐ

jar {
    enabled = false
}

 

3. ./gradlew ๊ถŒํ•œ ์„ค์ •ํ•˜๊ธฐ

chmod +x gradlew

 

4. jar ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ

./gradlew clean build

 

5. Docker build๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ

docker build -t kimmugeon/docker-jenkins-github-test .

 

6. ์ด๋ฏธ์ง€ ํ™•์ธ ๋ฐ ์ด๋ฏธ์ง€ Docker Hub์— ์˜ฌ๋ฆฌ๊ธฐ

//์ด๋ฏธ์ง€ ํ™•์ธ
docker images

// Docker Hub์— pushํ•˜๊ธฐ
docker push kimmugeon/docker-jenkins-github-test

 

2. ๋ณธ๋ก 


๊ธฐ์กด์— ํ–ˆ๋˜ ๋ฐฉ์‹์„ ์ง„ํ–‰ํ•˜๊ณ  FreeStyle Item์„ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์‹œ๊ณ  FreeStyle project๋ฅผ ์„ ํƒ์„ ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ดํ›„ ์†Œ์Šค ์ฝ”๋“œ ๊ด€๋ฆฌ๋ฅผ ์„ ํƒ์„ ํ•ด์ฃผ์„ธ์š”. ๋งŒ์•ฝ์— ๋ฐฐํฌ๋ฅผ ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ public์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ๋ฅผ ํ•ด์ฃผ์„ธ์š”.

 

Jenkins Git Credentials & Github webhook ์„ค์ •

Jenkins ํ™ˆํŽ˜์ด์ง€์—์„œ Iteml ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด Git ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋“ฑ๋กํ•˜๊ณ Build Trggers์—์„œ Github hook์„ ๊ฑฐ๋Š” ๊ฒƒ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Github hook์„ ์„ค์ •ํ• ๋ ค๋ฉด ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ Webhook์ด

velog.io

์ดํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ€๋ถ„์„ ํ™•์ธ์„ ํ•ด์ฃผ์„ธ์š”. ์ฒ˜์Œ์—๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” Github์— ์žˆ๋Š” 

Code > HTTPS๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ณต์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.์ €๋Š” ๊ธฐ์กด์— ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์—ˆ๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒ์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

GitHub - KMGeon/DeployAWS: Jenkins CI/CD ์—ฐ์Šต & Git Squash Merge ์—ฐ์Šต

Jenkins CI/CD ์—ฐ์Šต & Git Squash Merge ์—ฐ์Šต. Contribute to KMGeon/DeployAWS development by creating an account on GitHub.

github.com

๋‹ค์Œ์˜ ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•ด์ฃผ์‹œ๊ณ  ๋ธŒ๋žœ์น˜์™€ Credentials๋ฅผ ์„ ํƒ์„ ํ•ด์ฃผ์„ธ์š”.

๋งŒ์•ฝ์— public์ธ ํ”„๋กœ์ ํŠธ์ด๋ฉด Credentials๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •์„ ํ•ด์ฃผ์„ธ์š”.

์ดํ›„ Build > Invoke Grade script > Use Gradle Wrapper๋ฅผ ์„ ํƒํ•˜์—ฌ Use Gradle Wrapper๋ฅผ ์„ ํƒ์„ ํ•ด์ฃผ์‹œ๊ณ 

Make gradlew excutable๋ฅผ ์ฒดํฌ๋ฅผ ํ•ด์ฃผ์„ธ์š”. 

๋งŒ์•ฝ์— ์—ฌ๊ธฐ๊นŒ์ง€ ์„ฑ๊ณต์„ ํ•˜์˜€์œผ๋ฉด Task์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ์„ ํ•ด์ฃผ์„ธ์š”.

clean build

์ดํ›„ Build > Execute shell์„ ์„ ํƒ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ Execute shell์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

docker login -u [๋„์ปคํ—ˆ๋ธŒID] -p [๋„์ปคํ—ˆ๋ธŒPassword]

docker build -t [๋„์ปคํ—ˆ๋ธŒID]/docker-jenkins-github-test .
docker push [๋„์ปคํ—ˆ๋ธŒID]/docker-jenkins-github-test

์—ฌ๊ธฐ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณด๋ฉด ๋ณด์•ˆ์ƒ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ† ํฐ์„ ์ด์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •์„ ํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

 

 

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

๋„์ปค ํ—ˆ๋ธŒ์— ๋“ค์–ด๊ฐ€์„œ Account Settings์— ๋“ค์–ด๊ฐ€์„œ Security๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Token์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ›„ New Access Token์„ ์„ ํƒ์„ ํ•˜์—ฌ Token์„ ๋ณต์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด Token์„ ๋น„๋ฐ€๋ฒˆํ˜ธ์— ์ž…๋ ฅ์„ ํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ SSH Server์— Name์„ ์ž…๋ ฅ์„ ํ•˜๊ณ  Exec command์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

docker rm -f docker-jenkins-github-test
docker rmi -f docker-jenkins-github-test
nohup docker run -p 8081:8080 kimmugeon/docker-jenkins-github-test > /dev/null 2>&1 &

์ •์ƒ์ ์œผ๋กœ ์„ค์ •์„ ํ•˜์˜€๋‹ค๋ฉด ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๊ฐ€ ๋œ๋‹ค.

์ดํ›„ ํƒ„๋ ฅ์  IP:8081/test๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์ถœ๋ ฅ์ด ๋˜๋Š” ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ 


 

 

Jeinkins/Docker ๋ช…๋ น์–ด๋กœ FreeStyle publish-over-ssh ๋ฐฐํฌํ•˜๊ธฐ ver 0.2

Spring Boot๋กœ ์ž‘์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ Jenkins์™€ Docker๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ AWS EC2์— ์ž๋™ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์„ ์‹ค์Šต

velog.io

 

 

[Jenkins] Docker๋ฅผ ์ด์šฉํ•œ Jenkins - Spring Boot ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Docker ํ™˜๊ฒฝ์—์„œ์˜ Jenkins ๋นŒ๋“œ ์ž๋™ํ™” ๊ตฌ์ถ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Docker๋Š” OS, ํ”„๋กœ๊ทธ๋žจ ๋“ฑ๊ณผ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋ผ๋Š” ๋‹จ์œ„๋กœ ๋ฌถ์–ด ๋ณ„๋„์˜ ๊ฒฉ๋ฆฌ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹ค

dev-overload.tistory.com

 

 

Scheduling a Job in Jenkins | Baeldung

A quick and practical example of various ways of Jenkins job scheduling.

www.baeldung.com

 

๋ฐ˜์‘ํ˜•