1. ์๋ก
์๋ ํ์ธ์. ์ด๋ฒ์๋ ์ ๋ฒ์ ํ๋ ๋ฐฐํฌ์ Github๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐํฌ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฒ์ ๋ฐฐํฌ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ค๋ช ์ ํ๊ฒ ์ต๋๋ค.
์ ๋ฒ์ FreeStyle ๋ฐฐํฌ์ Github๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐํฌ๋ฅผ ํ๋ ค๊ณ ํฉ๋๋ค. ๋ง์ฝ์ ์ ๋ฒ์ ๋ฐฐํฌ๊ฐ ๊ถ๊ธํ์๋ฉด ์ด ๋ธ๋ก๊ทธ๋ฅผ ๋ณด์๋ฉด ๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
๊ธฐ์กด์ ํ๋ ๋ด์ฉ์ ์ค๋ณต์ด ์์ต๋๋ค. ๊ธฐ์กด์ ๋ธ๋ก๊ทธ์์ 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์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ค์์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ๋ฅผ ํด์ฃผ์ธ์.
์ดํ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์ ํ์ธ์ ํด์ฃผ์ธ์. ์ฒ์์๋ ํ๋ก์ ํธ๋ฅผ ์ ํ์ ํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ Github์ ์๋
Code > HTTPS๋ฅผ ์ ํํ์ฌ ๋ณต์ฌ๋ฅผ ํฉ๋๋ค.์ ๋ ๊ธฐ์กด์ ๋ฐฐํฌ๋ฅผ ์ํด ๋ง๋ค์๋ ํ๋ก์ ํธ๋ฅผ ์ ํ์ ํ๊ฒ ์ต๋๋ค.
๋ค์์ ์ฃผ์๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํด์ฃผ์๊ณ ๋ธ๋์น์ 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
์ฌ๊ธฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณด๋ฉด ๋ณด์์ ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋๋ค. ๊ทธ๋์ ํ ํฐ์ ์ด์ฉํ์ฌ ๋น๋ฐ๋ฒํธ ์ค์ ์ ํ๋๊ฒ ์ข์ต๋๋ค.
๋์ปค ํ๋ธ์ ๋ค์ด๊ฐ์ 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๋ฅผ ์ ๋ ฅํ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์ถ๋ ฅ์ด ๋๋ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
์ฐธ๊ณ
'๐ AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Jenkins ] Jenkins Pipeline์ ์ด์ฉํ CI/CD + SSHAgent (0) | 2023.04.23 |
---|---|
[ AWS ] Docker + AWS EC2 Aphache/ MySQL ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ (0) | 2023.04.21 |
[ Jenkins ] Jenkins Item Freestyle CI/CD ๋ฐฐํฌ (0) | 2023.04.19 |
[ Jenkins ] Jenkins CI/CD ๋ฌด์์ธ๊ฐ? (0) | 2023.04.15 |
[ AWS ] AWS๋ ์นํด์ง๊ธฐ - 3 (Docker๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌํ๊ธฐ) (0) | 2023.04.07 |