๐Ÿ’ป ๊ฐœ๋ฐœ ์ผ์ง€/Ubuntu

[Jenkins] ์›นํ›…์„ ์ด์šฉํ•œ Jenkins-Mattermost ์—ฐ๊ฒฐ

์ ์ด 2022. 5. 9. 10:29
๋ฐ˜์‘ํ˜•
โœ… Jenkins์˜ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฅผ Mattermost ๋ฉ”์‹ ์ €๋กœ ์ „๋‹ฌํ•ด๋ณด์ž

MatterMost ์„ค์ •

Webhook ์ถ”๊ฐ€

MatterMost > ์™ผ์ชฝ ์ƒ๋‹จ ๋ฉ”๋‰ด ๋ฒ„ํŠผ > ํ†ตํ•ฉ > ์ „์ฒด Incoming WebHook ํด๋ฆญ

Webhook ์„ค์ •

Incoming Webhook ์ถ”๊ฐ€ํ•˜๊ธฐ๋ฅผ ๋ˆ„๋ฅธ ํ›„, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ฃผ๊ณ  ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ฑ„๋„์„ ์„ค์ •ํ•œ๋‹ค.

์„ค์ • ํ›„, ์ €์žฅ์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด WebHook URL์ด ๋‚˜์˜จ๋‹ค. 

์ด URL์„ ์ž˜ ๊ธฐ์–ตํ•˜์ž!

Jenkins ์„ค์ •

Jenkins > item > ๊ตฌ์„ฑ ํด๋ฆญ

Curl ๋ช…๋ น์–ด๋กœ ๋ณด๋‚ด๊ธฐ

Shell script๋ฅผ ์‹คํ–‰ํ•˜์—ฌ curl ๋ช…๋ น์–ด๋กœ mattermost ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

Build์—์„œ Add build step > Execute shell ํด๋ฆญ ํ›„, ๊ฐ€์žฅ ์•„๋ž˜๋กœ ๋ณด๋‚ด๊ธฐ.

์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. 

 

๐Ÿ’ก $COMMIT_MSG: ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

๐Ÿ’ก $GIT_BRANCH, $JOB_NAME, $BUILD_DISPLAY_NAME: ๋ชจ๋‘ ์  ํ‚จ์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋“ค์ด๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ See the list of available environment variables๋ฅผ ํด๋ฆญํ•ด์„œ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’ก REQUEST์˜ ๊ฐ€์žฅ ์•„๋ž˜์ค„์— MatterMost์—์„œ ์ƒ์„ฑํ–ˆ๋˜ WebHook URL์„ ๋„ฃ๋Š”๋‹ค.

#!/bin/sh

COMMIT_MSG=$(git log --oneline --format=%B -n 1 HEAD | head -n 1)
REQUEST="curl -i \
        -X POST \
        -H 'Content-Type: application/json' \
        -d '{ \
                \"icon_url\": \"https://www.mattermost.org/wp-content/uploads/2016/04/icon.png\", \
                \"attachments\": [{ \
                		\"text\": \"$GIT_BRANCH Build & Depoly finished! :clap: \", \
                        \"author_name\": \"Jenkins\", \
                        \"author_icon\": \"https://www.jenkins.io/images/logos/jenkins/jenkins.png\", \
                        \"title\": \"$JOB_NAME $BUILD_DISPLAY_NAME - $COMMIT_MSG\" \
        }] \
        }'\
        https://{{WEBHOOK URL}}"
        
eval $REQUEST

์ด๋ ‡๊ฒŒ! Build ์„ฑ๊ณต ํ›„, MM ๋ฉ”์„ธ์ง€๊ฐ€ ์˜ค๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ Build ์‹คํŒจ ์‹œ, ๋ฉ”์„ธ์ง€๊ฐ€ ์˜ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!!!

์ฐธ๊ณ : https://docs.mattermost.com/developer/webhooks-incoming.html

Plugin์„ ํ™œ์šฉํ•˜์—ฌ ๋ณด๋‚ด๊ธฐ

์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๋‹ค์–‘ํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋„๋ก Plugin์„ ์„ค์น˜ํ•ด์„œ ๋ณด๋‚ด๋ณด์ž!

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

Jenkins > Jenkins ๊ด€๋ฆฌ > Plugin Manager ํด๋ฆญ

์„ค์น˜ ๊ฐ€๋Šฅ์—์„œ Mattermost Notification Plugin ์„ ์ฐพ์•„ ์„ค์น˜ํ•œ๋‹ค!

๋นŒ๋“œ ํ›„ ์กฐ์น˜ ์„ค์ •

Jenkins > item > ๊ตฌ์„ฑ ํด๋ฆญ

๋นŒ๋“œ ํ›„ ์กฐ์น˜์—์„œ Mattermost Notifications๋ฅผ ํด๋ฆญํ•œ๋‹ค.

์›ํ•˜๋Š” ์•Œ๋ฆผ์„ ์„ค์ •ํ•˜๊ณ  

๊ณ ๊ธ‰์„ ํด๋ฆญํ•œ๋‹ค.

๐Ÿ’ก Endpoint : MatterMost ์›น ํ›… URL 

๐Ÿ’ก Project Channel : MatterMost ์ฑ„๋„ > ์ •๋ณด ๋ณด๊ธฐ > URL ๊ฐ€์žฅ ๋’ค์— ๋‚˜์˜ค๋Š” ์ฑ„๋„ ์ด๋ฆ„

 

Test Connection์„ ๋ˆ„๋ฅด๋ฉด ์—ฐ๊ฒฐ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” Success๋ฉ”์„ธ์ง€์™€ MatterMost ์•Œ๋ฆผ์ด ์˜จ๋‹ค.

๊ทธ ํ›„, ์ €์žฅ์„ ํ•˜๊ณ  ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋™์ผํ•˜๊ฒŒ ์•Œ๋ฆผ์ด ์˜จ๋‹ค~~~~ (ํ˜•์‹์€ ๋‹ค๋ฆ„)


์ด๋ ‡๊ฒŒ Jenkins์™€ MM๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ Curl์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ํŽธํ•ด์„œ ์œ„์˜ ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ๋‹ค :)

๋ฐ˜์‘ํ˜•