🌐 Infra

[CI/CD] Github Actions, Jenkins

jcowwk 2025. 1. 15. 21:13

Github Actions, Jenkins


1. CI/CD

2. Github Actions

3. Jenkins


1. CI/CD

CI/CDλŠ” 지속적 톡합(Continuous Integration)κ³Ό 지속적 배포(Continuous Deployment)μž…λ‹ˆλ‹€.

μ½”λ“œ μˆ˜μ • ν›„ λ°”λ‘œ 배포 ν™˜κ²½μ— 반영될 수 μžˆλ„λ‘ μžλ™ν™”ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.

 

μ—¬κΈ°μ—λŠ” Github Actions, Jenkins와 같은 도ꡬ가 μ‘΄μž¬ν•©λ‹ˆλ‹€.

μžλ™μœΌλ‘œ λΉŒλ“œ, ν…ŒμŠ€νŠΈ, λ°°ν¬κΉŒμ§€μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ§„ν–‰λ˜μ–΄ λΉ λ₯΄κ³  μ•ˆμ •μ μœΌλ‘œ λ³€κ²½ 사항이 μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λ©λ‹ˆλ‹€.

 

- CI/CD λ™μž‘ 방법

1. μ½”λ“œ μž‘μ„±

κ°œλ°œμžκ°€ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ 버그λ₯Ό μˆ˜μ •ν•˜λ©΄ Git μ €μž₯μ†Œμ— λ³€κ²½λœ μ½”λ“œλ₯Ό ν‘Έμ‹œν•©λ‹ˆλ‹€.

 

2. λΉŒλ“œ

μ½”λ“œκ°€ λ³€κ²½λ˜λ©΄ CI/CD νŒŒμ΄ν”„λΌμΈμ΄ μžλ™μœΌλ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.

 

3. ν…ŒμŠ€νŠΈ

μ½”λ“œκ°€ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λŠ”μ§€ κ²€μ¦ν•˜λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€.

CI/CDμ—μ„œλŠ” μžλ™ν™”λœ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜λ©°, ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•˜λ©΄ 배포가 μ€‘λ‹¨λ©λ‹ˆλ‹€.

 

4. 배포

ν…ŒμŠ€νŠΈκ°€ ν†΅κ³Όν•˜λ©΄ μ„œλ²„ λ˜λŠ” ν΄λΌμš°λ“œ ν™˜κ²½μ— μžλ™μœΌλ‘œ λ°°ν¬ν•©λ‹ˆλ‹€.

 

- CI/CD λ“±μž₯ μ „ 배포 ν”„λ‘œμ„ΈμŠ€

CI/CD와 같은 μžλ™ν™” 도ꡬ가 생기기 μ΄μ „μ—λŠ” 배포λ₯Ό ν•˜κ±°λ‚˜ μ½”λ“œμ— 변경사항이 μžˆμ„ λ•Œ 쑰금 더 λ³΅μž‘ν•œ λ°©μ‹μœΌλ‘œ μ§„ν–‰λμŠ΅λ‹ˆλ‹€.

 

1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œν•˜μ—¬ .war νŒŒμΌμ„ 생성

2. κΈ°μ‘΄ μ„œλ²„μ˜ .war 파일 μ‚­μ œ

3. μƒˆλ‘œμš΄ .war 파일 μ—…λ‘œλ“œ

4. μ„œλ²„ μž¬μ‹œμž‘

5. μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„μ—μ„œ 이 과정을 반볡

 

μˆ˜λ™ μž‘μ—…μ΄ 많고, μ‹€μˆ˜ λ°œμƒ κ°€λŠ₯성이 높은 λ°©μ‹μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

 

- CI/CD μ‚¬μš© 이유

μ½”λ“œκ°€ λ³€κ²½λ˜λ©΄ μžλ™μœΌλ‘œ λΉŒλ“œ, ν…ŒμŠ€νŠΈ, 배포가 μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— 배포 μ‹œκ°„μ΄ λ‹¨μΆ•λœλ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ, μžλ™μœΌλ‘œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•΄μ£Όμ–΄ 버그λ₯Ό 쑰기에 λ°œκ²¬ν•˜μ—¬ μ•ˆμ •μ μΈ 배포가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

2. Github Actions

Githubμ—μ„œ μ œκ³΅ν•˜λŠ” CI/CD λ„κ΅¬μž…λ‹ˆλ‹€.

μ½”λ“œ 리포지토리 λ‚΄μ—μ„œ 직접 μ›Œν¬ν”Œλ‘œ(Workflow)λ₯Ό μ •μ˜ν•˜μ—¬ μžλ™ν™”λœ λΉŒλ“œ, ν…ŒμŠ€νŠΈ, 배포 등을 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

Github의 리포지토리와 μ‰½κ²Œ ν†΅ν•©λ˜κ³ , κ°„λ‹¨ν•œ μ„€μ •μœΌλ‘œ CI/CDλ₯Ό μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

3. Jenkins

μ˜€ν”ˆ μ†ŒμŠ€ μžλ™ν™” μ„œλ²„λ‘œ, CI/CD νŒŒμ΄ν”„λΌμΈμ„ κ΅¬μ„±ν•˜κ³  관리할 수 μžˆλŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

Github Actions에 λΉ„ν•΄ 더 λ³΅μž‘ν•˜κ³  μœ μ—°ν•œ CI/CD νŒŒμ΄ν”„λΌμΈμ„ ν•„μš”λ‘œ ν•˜λŠ” 경우 μ‚¬μš©λ©λ‹ˆλ‹€.

λ‹€μ–‘ν•œ ν”ŒλŸ¬κ·ΈμΈκ³Ό ν™•μž₯성을 톡해 λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

4. Github Actions VS Jenkins

ꡬ뢄 Github Actions Jenkins
μ„€μΉ˜ 및 μœ μ§€λ³΄μˆ˜ Githubμ—μ„œ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€λ‘œ 별도 μ„œλ²„ 운영 λΆˆν•„μš” 자체 μ„œλ²„ μ„€μΉ˜ 및 μœ μ§€λ³΄μˆ˜ ν•„μš”
Github 연동 Github λ ˆν¬μ§€ν„°λ¦¬μ— μ΅œμ ν™”λ˜μ–΄ μ½”λ“œ ν‘Έμ‹œ, PR, λ¨Έμ§€ 이벀트 μžλ™ λ°˜μ‘ Webhook을 μ‚¬μš©ν•΄ Github와 μˆ˜λ™ μ—°κ²° ν•„μš”
μ„€μ • 방식 .github/workflows/*.yml 파일 μ‚¬μš© Groovy 기반 Pipeline 슀크립트 μ‚¬μš©
운영 λΉ„μš© 무료 μ‹€ν–‰ μ‹œκ°„(μ›” 2,000λΆ„) 자체 μ„œλ²„ 운영 ν•„μš”ν•˜λ―€λ‘œ μœ μ§€ λΉ„μš© λ°œμƒ
λ³΄μ•ˆ 및 μ—…λ°μ΄νŠΈ GitHubμ—μ„œ λ³΄μ•ˆ 및 μ—…λ°μ΄νŠΈ μžλ™ 관리 ν”ŒλŸ¬κ·ΈμΈ μ—…λ°μ΄νŠΈ 및 λ³΄μ•ˆ 패치 μˆ˜λ™ 관리 ν•„μš”
λΉŒλ“œ ν™˜κ²½ GitHubμ—μ„œ μ œκ³΅ν•˜λŠ” κ΄€λ¦¬ν˜• VMμ—μ„œ μ‹€ν–‰ μ‚¬μš©μžκ°€ 직접 μ„œλ²„μ™€ λΉŒλ“œ ν™˜κ²½μ„ μ„€μ •ν•΄μ•Ό 함

 

μ €λŠ” Github Actionsλ₯Ό μ‚¬μš©ν•΄λ³΄μ•˜λŠ”λ° κ·Έ μ΄μœ λŠ” μ§€κΈˆκΉŒμ§€ 비ꡐ적 κ°„λ‹¨ν•œ μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•΄μ™”κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ•žμœΌλ‘œ 더 큰 규λͺ¨μ˜ μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•˜κ²Œ λœλ‹€λ©΄ Jenkins와 같은 보닀 ν™•μž₯성이 높은 CI/CD 도ꡬλ₯Ό μ‚¬μš©ν•˜κ²Œ 될 κ°€λŠ₯성이 ν½λ‹ˆλ‹€. GitHub Actionsλ₯Ό 톡해 λ¨Όμ € CI/CD κ²½ν—˜μ„ μŒ“μŒμœΌλ‘œμ¨ λ‚˜μ€‘μ— Jenkins와 같은 κ³ κΈ‰ CI/CD μ‹œμŠ€ν…œμ„ λ„μž…ν•  λ•Œλ„ 보닀 μ‰½κ²Œ μ΄ν•΄ν•˜κ³  μ μš©ν•  수 μžˆμ„ 것이라 μƒκ°ν•©λ‹ˆλ‹€.


μ°Έκ³  μ‚¬μ΄νŠΈ

 

[CI/CD] Github Actions 에 λŒ€ν•΄

μ—…λ‘œλ“œμ€‘..

velog.io

 

 

Jenkinsλž€? κ°œλ…λΆ€ν„° μ„€μΉ˜ μ‹€ν–‰κΉŒμ§€ (μΏ λ²„λ„€ν‹°μŠ€ ν™˜κ²½)

λ¨Όμ €, Jenkinsλ₯Ό μ•ŒκΈ° μ „ CI/CDκ°€ 무엇인지 μ•Œμ•„μ•Ό ν•œλ‹€. CI/CDλž€?CIλŠ” 지속적 톡합(Continuous Integration), CDλŠ” 지속적 배포(Continuous Deployment)의 μ•½μ–΄λ‘œ, κ°œλ°œμžλ“€μ΄ λ™μ‹œμ— μž‘μ—…ν•œ μ½”λ“œ λ³€κ²½ 사항을 톡합

wlsdn3004.tistory.com

 

 

λ¬Έμ œκ°€ 있으면 λŒ“κΈ€ λ‚¨κ²¨μ£Όμ„Έμš” !

ν”Όλ“œλ°±μ€ μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ <3