Jenkins集成微信,工作中檔git有新代碼提交會觸發(fā)鉤子自動完成上線,運(yùn)維和開發(fā)人員不須時(shí)刻盯著Jenkins,通過企業(yè)微信的方式顯示給運(yùn)維和開發(fā)人員
- 注冊企業(yè)微信的公眾號 申請地址:https://mp.weixin.qq.com/
搜索微信公眾平臺->注冊->選擇企業(yè)微信
image.png
選擇完成后把下面信息進(jìn)行完善->使用自己微信掃描二維碼進(jìn)行管理后-點(diǎn)注冊

注冊成功登陸后點(diǎn)擊應(yīng)用管理->創(chuàng)建應(yīng)用

上傳圖片->填寫應(yīng)用名稱-可見范圍->創(chuàng)建應(yīng)用-保存好agentld和secret寫入py腳本

更改py腳本內(nèi)對應(yīng)的內(nèi)容 touser 為賬號名稱


Corpid為企業(yè)ID 這里只把corpid寫入對應(yīng)的位置

python腳本內(nèi)容
#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
import requests,sys,json
import urllib3
urllib3.disable_warnings()
reload(sys)
sys.setdefaultencoding('utf-8')
def GetToken(Corpid,Secret):
Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
Data = {
"corpid":Corpid,
"corpsecret":Secret
}
r = requests.get(url=Url,params=Data,verify=False)
Token = r.json()['access_token']
return Token
def SendMessage(Token,Subject,Content, ProName):
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
#Data = {
# "chatid": "JenkinsAlarm", # 此處不明白請參考企業(yè)微信官網(wǎng)
# "msgtype": "text",
# "text": {
# "content": "[項(xiàng)目名稱] : " + ProName + '\n' + "[項(xiàng)目地址] : " + Subject + '\n' + Content + '\n'
# },
# "safe": "0"
#}
data = {
"touser" : "XXXXXX",
"msgtype" : "text",
"agentid" : 1000002,
"text" : {
"content" : "[項(xiàng)目名稱] : " + ProName + '\n' + "[項(xiàng)目地址] : " + Subject + '\n' +
Content + '\n'
},
"safe":0
}
r = requests.post(url=Url,data=json.dumps(data),verify=False)
return r.text
def action_from_file(filename):
try:
str1 = '[變更日志] : '
with open(filename, 'r') as f:
for i in f.readlines():
str1 += i
print str1
if len(str1) == 17:
str1 += " 無變更"
# print str1
return str1
except Exception as e:
#print('[ERROR] {0}'.format(e))
str1 += str(e)
if __name__ == '__main__':
Corpid = "企業(yè)ID"
Secret = "Secret"
Subject = sys.argv[1]
Content = action_from_file(sys.argv[2])
ProName = sys.argv[3]
Token = GetToken(Corpid, Secret)
Status = SendMessage(Token,Subject,Content,ProName)
print Status
完成后配置Jenkins
1.由于Jenkins沒有官網(wǎng)的插件來完成此功能,所以我們只能用網(wǎng)絡(luò)上一些開源的插件(線下班不需要以下步驟,已集合在plugins)
Github下載代碼:https://github.com/daniel-beck/changelog-environment-plugin
解壓到某個(gè)目錄 -> 進(jìn)入目錄執(zhí)行以下操作
cd 到 changelog-environment-plugin-master 下,執(zhí)行mvn verify時(shí)間較長,會在changelog-environment-plugin-master/target/下有個(gè)changelog-environment.hpi 文件,上傳到Jenkins即可使用
2、配置jenkins
Jenkins進(jìn)入到項(xiàng)目中->構(gòu)建環(huán)境多了Add Changelog Information to Environment->點(diǎn)擊選擇
Entry Format中添加 %3$s(at %4$s via %1$s),參數(shù)分別為ChangeLog內(nèi)容,時(shí)間,提交人。
Date Format中添加 yyyy‐MM‐dd HH:mm:ss 就是時(shí)間格式。

構(gòu)建后操作選擇Post build task, 如果沒有此選擇請安裝Hudson Post build task插件,SCM_CHANGELOG須安裝changelog插件
上傳py腳本->jenkins服務(wù)器上安裝python requests模塊。
如果網(wǎng)絡(luò)速比較慢的,可以找國內(nèi)源下載
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install python-pip
pip2.7 install requests
參考文檔:Python安裝流程 - python2 安裝 pip
http://www.itdecent.cn/p/0dc71548b213
1) 是使用gitlab 配置自動觸發(fā)構(gòu)建、需要設(shè)置安全令牌Secret token


2) gitee 配置自動觸發(fā)構(gòu)建 Generic Webhook Trigger

配置遠(yuǎn)程倉庫的鉤子

進(jìn)入到我們的遠(yuǎn)程倉庫中,選擇左側(cè)的WebHooks后,配置URL,URL的格式為:
http://JENKINS_URL/generic-webhook-trigger/invoke?token=owner_token
JENKINS_URL指的是你的IP地址和服務(wù)器的端口號
owner_token指的是之前在上一步配置的token

配置完成后,點(diǎn)擊更新/完成。然后測試一下請求是否成功,如果成功的話,可以在請求歷史中看到對應(yīng)的請求結(jié)果

如果遇到請求狀態(tài)是403的話,就需要檢查一下返回的錯(cuò)誤信息,看一下jenkins那邊的配置有沒有問題了。
可以試一下重啟一下Jenkins,或者是檢查一下關(guān)于Jenkins安全相關(guān)的配置,在跨站請求偽造保護(hù)模塊中,選擇啟用代理兼容。需要注意的是,由于我的Jenkins版本比較高,所以不一定和你們的頁面完全一樣,如果這里解決不了你的問題的話,還是另外需要百度解決。


實(shí)現(xiàn)信息推送的操作(Gitee、GitLab等)
添加 Post build task
echo "==========Start Notify=============="
echo ${SCM_CHANGELOG} > /tmp/${JOB_NAME}_change.log
python /data/script/jenkins_notify.py ${BUILD_URL} /tmp/${JOB_NAME}_change.log ${JOB_NAME}
rm -fv /tmp/${JOB_NAME}_change.log

1) Gitee WebHooke發(fā)送請求

# 企業(yè)微信收到的信息
[項(xiàng)目名稱] : Java-Project01
[項(xiàng)目地址] : http://JenkinsIP:端口/job/Java-Project01//
[變更日志] : XXXXXXXXXXXXXX
2)GitLab Webhook發(fā)送請求
# 手動上傳代碼庫
git tag -a v1.X -m "v1.x穩(wěn)定版"
git commit -m "update index.html"
git push -u origin v1.x
# 企業(yè)微信收到的信息
[項(xiàng)目名稱] : Java-Project01
[項(xiàng)目地址] : http://JenkinsIP:端口/job/Java-Project01//
[變更日志] : XXXXXXXXXXXXXX
