๊ด€๋ฆฌ ๋ฉ”๋‰ด

Algo ์“ฐ์ž

[Jenkins Plugin] Jenkins Plugin ๊ฐœ๋ฐœ ํ™˜๊ฒฝ Setting ๋ณธ๋ฌธ

๐Ÿฑ Etc/Jenkins Plugin ์ œ์ž‘๊ธฐ

[Jenkins Plugin] Jenkins Plugin ๊ฐœ๋ฐœ ํ™˜๊ฒฝ Setting

S.Honey 2023. 3. 10. 21:06

์ด๋ฒˆ ์—ฐ๊ณ„ ํ”„๋กœ์ ํŠธ์—์„œ Jenkins Plugin์„ ์ง์ ‘ ๊ฐœ๋ฐœํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ฒผ๋‹ค.

 

์ž์„ธํ•˜๊ฒŒ๋Š” ์–ธ๊ธ‰ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด์•ผ๊ธฐํ•˜๋ฉด ์•ž์œผ๋กœ ๊ฐœ๋ฐœํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์€ ํ™”๋ฉด๋‹จ์—์„œ ์›ํ•˜๋Š” input ๊ฐ’์„ ๋ฐ›์•„ ๊ทธ input ๊ฐ’์œผ๋กœ Jenkins Pipeline์„ ๊ตฌ์ถ•ํ•ด Job์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค.

 

input ๊ฐ’์˜ ํ˜•ํƒœ๋Š” String ๊ฐ’์„ ๋ฐ›๊ณ , jenkins plugin documentation์„ ์ตœ๋Œ€ํ•œ ์ฐธ๊ณ ํ•˜์—ฌ ์ œ์ž‘ํ•  ๊ณ„ํš์ด๋‹ค.

 

https://www.jenkins.io/doc/developer/tutorial/

 

Plugin Tutorial

 

www.jenkins.io

 

 

0. ๋“ค์–ด๊ฐ€๋ฉด์„œ...

  • ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ์•ž์œผ๋กœ์˜ ์ง„ํ–‰๊ณผ์ •์€ Jenkins Plugin ๊ณต์‹๋ฌธ์„œ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ–ˆ๋Š”์ง€ ํ๋ฆ„์„ ์ž‘์„ฑํ•ด๋‚˜๊ฐˆ ๊ณ„ํš์ด๋‹ค.
  • ์œ„์˜ Document๋ฅผ ๋ณด๋ฉฐ ์ง„ํ–‰ํ•˜๋ฉด ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค๋ผ๊ณ ๋ผ๊ณ ๋ผํŒŒ๋•.

 

 

1. Java ๋ฐ Maven ์„ค์น˜

  • Java Version์€ Jenkins ์—์„œ์˜ ๊ถŒ์žฅ๋ฒ„์ „์ธ 11๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ๋‹ค.
  • Maven Version ๋˜ํ•œ ๊ถŒ์žฅ ๋ฒ„์ „์ธ 3๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
    • (Jenkins์—์„œ๋Š” Maven ๋ฒ„์ „์˜ ๊ฒฝ์šฐ 3.8.3 ๋ณด๋‹ค ์ตœ์‹ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ด์ƒ์ ์ด๋ผ๊ณ  ํ•œ๋‹ค.)

๊ฐ๊ฐ์˜ ์„ค์น˜ ์ดํ›„ ๋ฒ„์ „์„ ํ™•์ธํ•ด์ค€๋‹ค.

$ java --version
$ mvn --version

 

2. IDE ์ค€๋น„

  • Jenkins์—์„œ ์ถ”์ฒœํ•˜๋Š” IDE๋กœ๋Š” ํฌ๊ฒŒ NetBeans IntelliJ IDEA Eclipse ๊ฐ€ ์žˆ๋‹ค.
  • ์ธํ…”๋ฆฌ์ œ์ด๋ฅผ ์„ ํƒํ–ˆ๋‹ค.(Ultimate ๋ฒ„์ „์„ ์‚ฌ์šฉํ•œ๋‹ค.)

 

3. Skeleton ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  • ๋ณธ์ธ์€ ํ˜ผ์ž ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ์—ฌ๊ธฐ์„œ ์• ๋ฅผ ์ข€ ๋จน์—ˆ๋‹ค.
  • ์ด์ „ ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” IDE ๋ฅผ ์„ค์น˜ ํ›„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ˆ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ํ•ด๋‹น ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ์—์„œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด pom.xml ํŒŒ์ผ์˜ ์ค‘๋ณต์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ์ •๋ฆฌํ•˜์ž๋ฉด ๊ทธ๋ƒฅ ์ƒˆ๋กœ ์ƒ์„ฑํ•  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์žก์•„ ๊ทธ๊ณณ์—์„œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Jenkins Plugin Skeleton ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์ž.
mvn -U archetype:generate -Dfilter="io.jenkins.archetypes:"
  • ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด archetype์„ ์„ค์ •ํ•˜๋ผ๋Š” ๋‚ด์šฉ์ด ๋‚˜ํƒ€๋‚˜๋Š”๋ฐ ๋ณธ์ธ์€ 4๋ฒˆ ํƒ€์ž…(Skeleton of a Jenkins plugin with a POM and an example build step.) ์„ ์„ ํƒํ–ˆ๊ณ  ๋ฒ„์ „์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ตœ์‹ ๋ฒ„์ „์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” 17๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
  • ์ดํ›„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ๋”ฐ๋ผ mvn verify๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
    • ํ˜น์‹œ mvn verify ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์•„๋ž˜์˜ ๋”๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ด๋ณด๋„๋ก ํ•˜์ž.

 

๋”๋ณด๊ธฐ

mvn verify ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ๋“ค์ด ๋ฐœ์ƒํ•œ๋‹ค.

  1. Maven์€ ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€ ์ปดํŒŒ์ผํ•œ๋‹ค.
  2. ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ํŒจํ‚ค์ง•์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. ํŒจํ‚ค์ง•๋œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  5. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ๋Š” ์ฝ”๋“œ์˜ ์ •์  ๋ถ„์„, ๋ฌธ์„œ ์ƒ์„ฑ, ๋ฆฌ์†Œ์Šค ๋ณต์‚ฌ ๋“ฑ์˜ ์ž‘์—…์ด ์ˆ˜ํ–‰๋œ๋‹ค.
  6. ๊ฒ€์ฆ์„ ๋งˆ์นœ ํ›„, ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์ด ๋กœ์ปฌ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— ์„ค์น˜๋œ๋‹ค.

์ฆ‰, mvn verify ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋นŒ๋“œ๋˜๊ณ  ๊ฒ€์ฆ๋˜์–ด ์™„์ „ํ•˜๊ณ  ์‹ ๋ขฐ์„ฑ ๋†’์€ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์ด ์ƒ์„ฑ๋œ๋‹ค.

 

 

- ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž…๋ ฅํ•œ๋‹ค.

 

$ mv demo demo-plugin 
$ cd demo-plugin
$ mvn verify

 

 

4. ๋นŒ๋“œ ๋ฐ ์‹คํ–‰

  • 3๋ฒˆ ๊ณผ์ •์„ ํ†ตํ•ด mvn verify ๊นŒ์ง€ ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์ดํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
$ mvn hpi:run
  • ์œ„์˜ ๋ช…๋ น์–ด์— ์žˆ์–ด์„œ ์˜ต์…˜์„ ํ†ตํ•ด ๋…ธ์ถœํ•  ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. Ex) mvn hpi:run -Dport=5000
  • ํ•ด๋‹น ๊ณผ์ •์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค๋ฉด ์  ํ‚จ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ๊ฐœ๋ฐœํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋‹ค.

 

5. ์ •๋ฆฌ ๋ฐ ์ดํ›„์˜ ๊ณผ์ œ

  • ์  ํ‚จ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ž‘์—…ํ•˜๋Š” Java version์ด 11๋ฒ„์ „์œผ๋กœ ๊ณ ์ •๋œ ๋Š๋‚Œ์ด ๋“ ๋‹ค.(๋ฌผ๋ก  ๋‚˜์ค‘์— ๋ณ€๊ฒฝ๋  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ)
  • Jenkins Plugin Docs๋ฅผ ๋ณด๋ฉด ์ดํ›„์˜ ๊ณผ์ •์€ ์–ด๋–ป๊ฒŒ ์  ํ‚จ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ณ  UI๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.
  • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์•ž์œผ๋กœ์˜ ๊ฐœ๋ฐœ์ผ์ง€๋ฅผ ์ž‘์„ฑํ•ด ๋‚˜๊ฐˆ ๊ณ„ํš์ธ๋ฐ ๋๊นŒ์ง€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž˜๋งˆ๋ฌด๋ฆฌ ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.