Bamboo Chatwork Notification
Giới thiệu
Trong nhiều dự án có sử dụng bộ sản phẩm của Atlassian Jira, Confluence, Stash, Bamboo…, nhưng lại không dùng Hipchat mà lại dùng Chatwork để trao đổi công việc . Trong bài viết này mình sẽ hướng dẫn cách thiết lập để sau khi build , tự động gửi kết quả (build thành công hay thất bại , user thực hiện , branch thực hiện …) đến Chatwork.
1. Cài đặt Bamboo server
Trong hướng dẫn này mình cài Bamboo server trên Ubuntu.
- Trước tiên ta cái Docker
sudo apt-get install curl curl -sSL https://get.docker.com/ | sh
- Sau đó pull template trong đó có cài sẵn Bamboo về
docker pull nkatsaros/atlassian-bamboo
- Tạo Container
docker run --detach --publish 8085:8085 cptactionhank/atlassian-bamboo test
- Tiếp theo ta phải cài curl và xmllint trong Container
Để truy cập được vào Container ta cần Container ID
docker ps -a
Truy cập vào Container
docker exec -it 0ba78fd835e4 bash
Cài curl và xmllint
sudo apt-get install curl sudo apt-get install -y libxml2-utils
- Sau đó Restart lại Ubuntu
- Start Container
docker start 0ba78fd835e4
2 . Chatwork bot
Đầu tiên ta cần 1 tài khoản Chatwork
xxxxxxxxx@its-lab.net
chatwork_id : xxxxxxxbamboo
pass : xxxxxxxxxx
- Lấy ChatworkToken
Đăng nhập vào Chatwork và truy cập vào Operation setting->API->nhập lại pass
- Lấy ChatworkRoomID
- Lấy ChatworkBaseApiUrl (trong tài liệu đính kèm bên dưới)
Base URL : https://api.chatwork.com/v1/
3. Thực hiện việc gửi thông báo
Bài toán đặt ra là sau khi build xong gửi kết quả bulild đến Chatwork . Do đó ta cấn 2 plan , 1 plan để đành cho việc build và sau khi build xong kích hoạt plan gửi kết quả đến Chatwork , ở plan gửi kết quả đến Chatwork ta cần phải đọc được kết quả build từ plan build và gửi đi .
- Lấy kết quả build bằng cách gọi API của Bamboo
- Gửi kết quả bằng cách gọi API của Chatwork với nội dung là kết quả build của Bamboo
- Truy cập vào địa chỉ http:// localhost:8085
- Nhập License - Sau khi truy cập vào địa chỉ trên bạn sẽ được yêu cầu nhập License , để có License bạn tạo 1 tài khoản trên Atlassian sẽ nhận được 1 License 30 ngày sử dụng để test, sau đó copy License và điền vào .
- Set up adminstator user
- Tạo plan build
Chú ý : sau khi chạy xong phải kích hoạt plan Chatwork
- Enable và chọn Repository
- Cấu hình plan build
Action->configurePlan
- Chọn Add task -> search ->chọn task types là script
- Trong phần script body ,ta viết đoạn script để kích hoạt plan chatwork
export BAMBOO_USER=giangpt
export BAMBOO_PASS=cuixxxxxxxxxxxxx
export PROJECT_NAME=TEST
export PLAN_NAME=CHAT
export STAGE_NAME=STAGE1
curl --user $BAMBOO_USER:$BAMBOO_PASS -X POST -d "$STAGE_NAME&ExecuteAllStages" http://192.168.20.39:8085/rest/api/latest/queue/$PROJECT_NAME-$PLAN_NAME
- Tạo plan Chatwork
- Cấu hinh plan Chatwork giống phần plan build
- Trong phần script body , ta lấy kết quả build thông qua API Bamboo , và gọi API của Chatwork để gửi thông báo
#Config
##Bamboo bambooApiBaseUrl="http://192.168.20.39:8085/rest/api/latest/result"
bambooBuildPlanCode="TEST-FOR"
bambooBuildNo="latest"
bambooBuildResultApi="$bambooApiBaseUrl/$bambooBuildPlanCode/$bambooBuildNo?buildstate"
##Chatwork
chatworkBaseApiUrl="https://api.chatwork.com/v1"
chatworkToken="1965bxxxxxxxxxxxxxxxxxxxxxxxx"
chatworkRoomId="56715999"
chatworkApiUrl="$chatworkBaseApiUrl/rooms/$chatworkRoomId/messages"
#Get xml build result file
curl -X GET $bambooBuildResultApi > bamboo_result.xml
#Get element in xml file
buildState=`echo "cat //result/buildState" | xmllint --shell bamboo_result.xml | sed '/^\/ >/d' | sed 's/<[^>]*.//g'`
echo $buildState
buildReason=`echo "cat //result/buildReason" | xmllint --shell bamboo_result.xml | sed '/^\/ >/d' | sed 's/<[^>]*.//g' | sed -r "s/(Manual run by ).*\>\;(.*)\<\;.*/\1\2/"`
echo $buildReason
#Remove bamboo xml result file
rm bamboo_result.xml
#Send build result to chatwork
message="buildstate: $buildState buildReason: $buildReason"
echo $message
curl -X POST -H "X-ChatWorkToken:$chatworkToken" -d "body=$message" $chatworkApiUrl
- chạy test thử