在这篇文章中结合具体的示例来介绍在Jenkins中如何向企业微信群推送消息。
环境准备
这里使用Easypack的Jenkins 2.164.3来创建验证用的Jenkins环境。使用如下步骤即可完成。
事前准备
事前准备docker和docker-compose,版本要求如下所示:
- Docker: >= 1.13.1
- docker-compose: >= 1.13
启动Jenkins
使用Easypack中准备好的LTS的Jenkins镜像,启动Jenkins。
- git clone
命令:git clone https://github.com/liumiaocn/easypack.git
- 启动服务
命令:
cd easypack/containers/alpine/jenkins
docker-compose up -d
- 使用的docker-compose配置文件
liumiaocn:jenkins liumiao$ cat docker-compose.yml
version: '2'
services:
# jenkins service based on Jenkins LTS version
jenkins:
image: liumiaocn/jenkins:2.164.3centos7.7openjdk1.8
ports:
- "32002:8080"
- "50000:50000"
environment:
- JENKINS_ADMIN_ID=root
- JENKINS_ADMIN_PW=liumiaocn
- JENKINS_MODE=master
volumes:
- ./data/:/data/jenkins
- /var/run/docker.sock:/var/run/docker.sock
restart: "no"
liumiaocn:jenkins liumiao$
- 执行日志
liumiaocn:jenkins liumiao$ docker-compose up -d
Creating network "jenkins_default" with the default driver
Creating jenkins_jenkins_1 ... done
liumiaocn:jenkins liumiao$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------
jenkins_jenkins_1 /bin/tini -- /usr/local/bi ... Up 0.0.0.0:50000->50000/tcp, 0.0.0.0:32002->8080/tcp
liumiaocn:jenkins liumiao$
Job示例
本文示例的Job将流水线分按照功能分为逻辑上的三段:构建(Build) 、测试(Test)、部署(Deploy),顺序如下所示。
创建一个名为test-wechat-notification的Pipeline类型的Job,具体Job内容如下:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'echo Build stage ...'
}
}
stage('Test'){
steps {
sh 'echo Test stage ...'
}
}
stage('Deploy') {
steps {
sh 'echo Deploy stage ...'
}
}
}
}
执行一次之后,通过BlueOcean确认运行结果如下所示:
插件方式
插件方式本文不再详细验证,本文直接使用企业微信提供的API进行消息推送。
通用消息推送示例
详细使用示例可参看:https://liumiaocn.blog.csdn.net/article/details/103753450
在本例中将使用此脚本进行消息推送。
扫描二维码关注公众号,回复:
8675100 查看本文章
增加钉钉消息推送
脚本准备
在每个阶段添加消息推送,首先将上述脚本拷贝至Jenkins镜像的/usr/local/bin下并设置可以执行权限。
liumiaocn:chatops liumiao$ ls
dingtalk send_message.sh wechat
liumiaocn:chatops liumiao$ docker cp send_message.sh jenkins_jenkins_1:/usr/local/bin
liumiaocn:chatops liumiao$ docker exec -it jenkins_jenkins_1 sh
sh-4.2# which send_message.sh
which: no send_message.sh in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
sh-4.2# chmod 755 /usr/local/bin/send_message.sh
sh-4.2# which send_message.sh
/usr/local/bin/send_message.sh
sh-4.2# send_message.sh
usage: /usr/local/bin/send_message.sh TYPE TITLE CONTENT [URL]
TYPE: wechat|dingtalk
sh-4.2#
添加消息推送
修改流水线代码,添加如下消息推送示例
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'echo Build stage ...'
sh 'export CHAT_WEBHOOK_KEY=your_owen_wechat_key_info; send_message.sh wechat "Build Stage" "Build Stage has been successfully completed..."'
}
}
stage('Test'){
steps {
sh 'echo Test stage ...'
sh 'export CHAT_WEBHOOK_KEY=your_owen_wechat_key_info; send_message.sh wechat "Test Stage" "Test Stage has been successfully completed..."'
}
}
stage('Deploy') {
steps {
sh 'echo Deploy stage ...'
sh 'export CHAT_WEBHOOK_KEY=your_owen_wechat_key_info; send_message.sh wechat "Deploy Stage" "Deploy Stage has been successfully completed..."'
}
}
}
}
注:请替换自己的key信息(your_owen_wechat_key_info部分)
Jenkins上的执行结果如下所示
企业微信群的消息推送信息确认