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)

chatwork_api_documentation

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 ).*\&gt\;(.*)\&lt\;.*/\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ử

4. Kết quả