โ 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์ ์ฌ์ฉํ๋๊ฒ ๋ ์ปค์คํฐ๋ง์ด์ง์ด ํธํด์ ์์ ๋ฐฉ๋ฒ์ ํํ๋ค :)
'๐ป ๊ฐ๋ฐ ์ผ์ง > Ubuntu' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ 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์ ์ฌ์ฉํ๋๊ฒ ๋ ์ปค์คํฐ๋ง์ด์ง์ด ํธํด์ ์์ ๋ฐฉ๋ฒ์ ํํ๋ค :)