1000sj
SJ CODE
1000sj
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Security
      • ๋„คํŠธ์›Œํฌ
      • ๋ณด์•ˆ
      • CTF
      • Exploit
      • Fuzzing
    • System Programming
      • Kernel
      • Operating System
      • Compiler
      • Device Driver
      • Emulator
      • Parrelel Processing
      • Assembly
    • Application Programming
      • Script
      • Android
    • Cloud Computing
      • Cloud Native
      • Public Cloud
      • Infrastructure
      • Database
      • DevOps
    • TroubleShooting
    • ETC
      • ๋ฌธํ™” ์ƒํ™œ
      • ์ปค๋ฎค๋‹ˆํ‹ฐ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
1000sj

SJ CODE

[Jenkins] ์  ํ‚จ์Šค ์„ค์น˜ & ๋นŒ๋“œ ์„ค์ • ์„ธํŒ…
Cloud Computing/Infrastructure

[Jenkins] ์  ํ‚จ์Šค ์„ค์น˜ & ๋นŒ๋“œ ์„ค์ • ์„ธํŒ…

2022. 9. 1. 09:47

๐ŸŒˆ ์  ํ‚จ์Šค๋ž€

์  ํ‚จ์Šค๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์‹œ ์ง€์†์  ํ†ตํ•ฉ(conticuous integration) ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํˆด์ด๋‹ค. ๋‹ค์ˆ˜์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ฒ„์ „ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ž ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ  ์˜์—ญ์— ์žˆ๋Š” Git๋“ฑ์˜ ์ €์žฅ์†Œ์— ๋นˆ๋ฒˆํžˆ ์—…๋กœ๋“œํ•จ์œผ๋กœ์จ ์ง€์†์  ํ†ตํ•ฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ค€๋‹ค.

 

๐Ÿš€ ์  ํ‚จ์Šค ์„ค์น˜

  • jenkins๋ฅผ ๊ตฌ๋™ํ•  ํฌํŠธ๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  • ๊ธฐ๋ณธ๊ฐ’์€ 8080์ด์ง€๋งŒ ์‚ฌ์šฉ์ค‘์ผ ํ™•๋ฅ ์ด ๋†’์•„์„œ 80์œผ๋กœ ํ•ด์คฌ๋‹ค.

  • jdk๊ฐ€ ์„ค์น˜๋œ java home ๊ฒฝ๋กœ ์„ค์ •

์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด localhost:80์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

 

Set up

์•„๋ž˜ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ€ initialAdminPassword๋ฅผ ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์—ด๊ณ  ์ž…๋ ฅ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.

C:\ProgramData\Jenkins\.jenkins\secrets

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ localhost:80์— Administrator Password์— ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค.

Install suggested plugins๋ฅผ ์„ ํƒํ•˜๋ฉด ์›ฌ๋งŒํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ฏธ๋ฆฌ ๋‹ค ์„ค์น˜๋œ๋‹ค.

  • O

์„ค์น˜๊ฐ€ ๋‹ค ๋œํ›„์—๋Š” Admin User๋ฅผ ๋งŒ๋“ค๋„๋ก ํ•˜๋Š”๋ฐ ์•ž์œผ๋กœ jenkins ๋กœ๊ทธ์ธ์—์„œ ์‚ฌ์šฉํ•  ๊ณ„์ •์„ ์ž…๋ ฅํ•˜๋ฉด๋œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด ์  ํ‚จ์Šค ์„ค์น˜์™€ ์  ํ‚จ์Šค ์„œ๋ฒ„๊ฐ€ ๊ตฌ์ถ•๋œ ๋Œ€์‹œ๋ณด๋“œ ์ฐฝ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

(์Šคํ‚ต๊ฐ€๋Šฅ) Jenkins ๊ด€๋ฆฌ > ์‹œ์Šคํ…œ ์„ค์ •์— ๋“ค์–ด๊ฐ€๋ฉด ๋งจ ์œ„์— ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ฃผ์†Œ๊ฐ€๋œฌ๋‹ค. ์ด๊ฑธ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ถ”๊ฐ€

 

โšก Git ์—ฐ๋™ํ•˜๊ธฐ

๋จผ์ € ๊นƒ developer settings์—์„œ personal token์„ ๋ฐ›์•„์•ผํ•œ๋‹ค.

ํ† ํฐ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์ ‘๊ทผ ๋ฒ”์œ„๋Š” repo์™€ admin:repo_hook์„ ์„ ํƒํ•œ๋‹ค.

Jenkins ๊ด€๋ฆฌ > Manage Credential > Add Credentials๋กœ ๋“ค์–ด๊ฐ€์„œ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

๊ทธ๋Ÿผ crediential์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœจ Jenkins ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

package com.jenkinstest;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    
    @GetMapping("/")
    public String hello() {
        return "hello";
    }
}

build.gradle

// @SpringBootApplication์ด ์„ค์ •๋œ ํŒŒ์ผ
bootJar {
	mainClassName = 'com.jenkintest.JenkinstestApplication'
}

bootRun {
	String activeProfile = System.properties['spring.profiles.active']
	systemProperty "spring.profiles.active", activeProfile
}

git์— ์˜ฌ๋ ค์ค€๋‹ค.

gradle ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๊ณ 

 

gradle-wrapper.properties ์— ์žˆ๋Š” gradle ๋ฒ„์ „์œผ๋กœ Global Tool Configuration์„ ์„ค์ •ํ•ด์ค€๋‹ค.

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

Jenkins์™€ github ์—ฐ๊ฒฐ์ด ๋๋‚ฌ์œผ๋ฉด Jenkins์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๋นŒ๋“œ ํŠธ๋ฆฌ๊ฑฐ ์„ค์ •

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Build Triggers๋ฉ”๋‰ด์—์„œ Github hook trigger for GITScm polling ์„ ์„ ํƒํ•˜๋ฉด Github์— ์ฝ”๋“œ๊ฐ€ ํ‘ธ์‰ฌ๋ ๋•Œ๋งˆ๋‹ค ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ๋ง ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด GitHub์—์„œ ์ฝ”๋“œ ์ฝ”๋“œ ํ‘ธ์‰ฌ๊ณผ ๋  ๋•Œ webHook ๋ฉ”์„ธ์ง€๋ฅผ Jenkins์— ๋ณด๋‚ด์ฃผ๋Š”๋ฐ ์ด WebHook๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ๋นŒ๋“œ๋ฅผ ํ•˜๊ฒŒ๋œ๋‹ค.

 

 

    1000sj
    1000sj

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”