์ด๋ฒ ์ฐ๊ณ ํ๋ก์ ํธ์์ 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 ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ผ๋ค์ด ๋ฐ์ํ๋ค.
- Maven์ ํ๋ก์ ํธ์ ์์ค ์ฝ๋๋ฅผ ๊ฐ์ ธ์ ์ปดํ์ผํ๋ค.
- ์ปดํ์ผ๋ ์ฝ๋์ ๋ํด ๋จ์ ํ ์คํธ๋ฅผ ์ํํ๋ค.
- ๋จ์ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ฝ๋์ ๋ํด ํจํค์ง์ ์ํํ๋ค.
- ํจํค์ง๋ ์ฝ๋์ ๋ํด ํตํฉ ํ ์คํธ๋ฅผ ์ํํ๋ค.
- ํตํฉ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ฝ๋์ ๋ํด ๊ฒ์ฆ์ ์ํํ๋ค. ์ด ๊ณผ์ ์์๋ ์ฝ๋์ ์ ์ ๋ถ์, ๋ฌธ์ ์์ฑ, ๋ฆฌ์์ค ๋ณต์ฌ ๋ฑ์ ์์ ์ด ์ํ๋๋ค.
- ๊ฒ์ฆ์ ๋ง์น ํ, ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ก์ปฌ ๋ ํ์งํ ๋ฆฌ์ ์ค์น๋๋ค.
์ฆ, 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๋ฅผ ์ถ๊ฐํ ์ ์๋์ง์ ๋ํ ๋ด์ฉ์ด ๋ํ๋๋ค.
- ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์์ผ๋ก์ ๊ฐ๋ฐ์ผ์ง๋ฅผ ์์ฑํด ๋๊ฐ ๊ณํ์ธ๋ฐ ๋๊น์ง ํ๋ก์ ํธ๊ฐ ์๋ง๋ฌด๋ฆฌ ๋์์ผ๋ฉด ์ข๊ฒ ๋ค.