Jenkins - π λ‘컬μμ jenkins μ°λνκΈ°
1. λ‘컬μμ Jenkins λ₯Ό λμΈ Dockerfile μ μ€λΉνλ€.
βοΈ Dockerfile-jenkins
FROM jenkins/jenkins:lts-jdk21 # 곡μ Jenkins μ΄λ―Έμ§ μ€ JDK 21μ μ§μνλ LTS λ²μ μ μ¬μ©
# νμν κ²½μ°, μΆκ°μ μΈ Jenkins μ€μ νμΌμ΄λ νλ¬κ·ΈμΈμ 볡μ¬ν μ μμ΅λλ€.
# μμλ‘ plugins.txt νμΌμ 볡μ¬νκ³ νλ¬κ·ΈμΈμ μ€μΉνλ λ°©λ²μ μλμ κ°μ΅λλ€.
# COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
# RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
EXPOSE 8080 50000 # (μ΅μ
) 컨ν
μ΄λ λ΄μμ μ¬μ©ν ν¬νΈλ₯Ό λͺ
μμ μΌλ‘ λ
ΈμΆν©λλ€.
# 곡μ μ΄λ―Έμ§μ ENTRYPOINT λ° CMDκ° μ΄λ―Έ μ€μ λμ΄ μμΌλ―λ‘ λ³λμ μ€ν λͺ
λ Ήμ νμνμ§ μμ΅λλ€.νλ‘μ νΈκ° Java λ²μ 21μ μ¬μ©νκ³ μμ΄, JDK21 μ μ§μνλ Jenkins μ΄λ―Έμ§λ₯Ό μ¬μ©νμμ΅λλ€. κ·Έλ μ§ μκ³ μΌλ° Jenkins lts λ²μ μ μ΄λ―Έμ§λ₯Ό μ¬μ©νλ©΄ Java 17 λ²μ μ΄ μ€μΉλμ΄μμ΄, λ³λλ‘ Java 21μ μ€μΉνκ³ κΈ°λ³Έ μ¬μ© λ²μ μΌλ‘ μ΄λ―Έμ§λ₯Ό 컀μ€ν°λ§μ΄μ§ ν΄μΌ ν©λλ€. Java 21 λ²μ μ μ¬μ©νλ λ°©λ²μ μλμ λΈλ‘κ·Έλ₯Ό μ°Έκ³ ν μ μμ΅λλ€.
Jenkins JDK 21 installation by Tools
Jenkins κ΄λ¦¬
Tools
JDK installations
Add JDK
Name(jdk21)
Install automatically Check
Add Installer (JDK μ§μ Site : Amazon-site)
Extract .zip/tar.gz

jenkins file μμ
2. [1.] μμ λ§λ Dockerfile μ μ¬μ©νμ¬ μ΄λ―Έμ§ μμ±
μ¬κΈ°μλ docker compose νμΌμ μ¬μ©νμ¬ μ΄λ―Έμ§λ₯Ό μμ±νμμ΅λλ€. docker compose λ₯Ό μ¬μ©νμ§ μλλ€λ©΄ docker run λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μ΄λ―Έμ§λ₯Ό λ§λ€ μ μμ΅λλ€.
3. Jenkins μ μ
μ¬κΈ°μλ localhost:9081 λ‘ ν¬νΈλ₯Ό λ§€ννμκΈ° λλ¬Έμ, http://localhost:9081 λ‘ μ μνλ©΄, λ‘컬 μ ν¨μ€ 컨ν μ΄λμ μ μν μ μμ΅λλ€.
Unlock νμ΄μ§λ₯Ό νμ΄μ€λλ€.
λΉλ°λ²νΈλ 컨ν μ΄λμ λ‘κ·Έμμ νμΈν μ μμ΅λλ€.
λν, μ§μ 컨ν μ΄λ μμ λ€μ΄κ°μ νμΈν μ λ μμ΅λλ€.


4. μ μ μμ±



5. νλ¬κ·ΈμΈ μ€μΉ



π₯² μ ν¨μ€κ° μκΎΈ λ©μΆλ νμμ΄ μμ΅λλ€. λ²νΌμ μ무리 ν΄λ¦ν΄λ λ¨Ήν΅μΌ λλ, κ³ λ―Όνμ§ λ§κ³ μ¬μ μ ν©λλ€.
6. New Item -> Pipeline

Item name μ μλ³κ°λ₯νλλ‘ μ μ΄μ€λλ€.
Pipeline λ₯Ό μ νν©λλ€.

Username with password
Scope λ Global λ₯Ό μ νν©λλ€.
Username μ λ³ΈμΈμ Github μμ΄λλ₯Ό μ μ΄μ€λλ€.
Password λ Github μμ λ°κΈλ°μ classic token μ μ μ΄μ€λλ€.
Profile
-> Settings
-> Developer settings
-> Personal access tokens
-> Tokens (classic)
-> Generate new token
μ ν¨κΈ°κ° μλλ‘, webhook 체ν¬

7. ngrok
Github Repository μ setting webhook μΌλ‘ λ€μ΄κ° μ£Όμλ₯Ό λ±λ‘ν΄μ€μΌ ν©λλ€. μ΄ λ localhost λλ νΌλΈλ¦ IPμ port 9081λ‘ λ±λ‘ν΄λ, λ‘컬 μ ν¨μ€ 컨ν μ΄λλ₯Ό μ°Ύμ μ μμΌλ―λ‘ ngrok λΌλ κ²μ μ¬μ©νμ¬ μΈλΆ IPλ₯Ό μμλ‘ μμ±νμ¬ λ±λ‘ν©λλ€.
7-1. ngrok μ€μΉ
7-2. ngrok κ°μ
7-3. ngrok μ¬μ©νμ¬ μΈλΆ IP λ§λ€κΈ°
κ°μ ν λ°κΈλ°μ auth ν ν°μ 볡μ¬νμ¬ μλμ κ°μ΄ 컀맨λλ₯Ό μ€νν©λλ€.
κ·Έλ¦¬κ³ , localhost:9081 μ λν μΈλΆ IPλ₯Ό μμ±ν©λλ€.

μμμ μμ±λ μΈλΆ IPλ₯Ό Github Repository Webhook μ λ±λ‘ν©λλ€.

8. Jenkinsfile μμ±νμ¬ μ€ν¬λ¦½νΈ μμ±νκΈ°
μμ Jenkinsfile μ€ν¬λ¦½νΈλ /feature/jenkins-test λΈλμΉμ νΈμλλ μκ° μλν©λλ€. ν΄λΉ λΈλμΉλ₯Ό jenkins 컨ν μ΄λμμ 체ν¬μμ&λΉλνκ³ , μ ν¨μ€ 컨ν μ΄λμ νΉμ ν΄λμ λΉλ μ°μΆλ¬ΌμΈ jar νμΌμ νΉμ ν΄λμ 볡μ¬ν©λλ€.
νΉμ ν΄λλ docker compose μμ λ³Όλ₯¨λ§μ΄νΈ νμ¬, λ‘컬 ν΄λμμλ ν΄λΉ jar νμΌμ λ³Ό μ μμ΅λλ€.
κ·Έ μΈ, jar νμΌμ μ€ν λ±μ κ³Όμ μ λ£μ§ μμμ΅λλ€.
λ€μμλ Docker μ AWSμ EC2/Jenkins λ₯Ό μ¬μ©νμ¬ CI/CD λ₯Ό ꡬμΆν΄λ³΄λ‘ νκ² μ΅λλ€.
Last updated