jenkins + miniprogram-ci + webhook发布小程序代码,发送钉钉消息预览小程序二维码
首先安装java
1. 下载java
2. 通过SFTP将压缩包上传至服务器然后解压
tar -zavf jdk-11.0.17_linux-x64_bin.tar.gz
rm -rf jdk-11.0.17_linux-x64_bin.tar.gz
3. 配置Java环境变量
3.1 编辑/etc/profile文件
vi /etc/profile
# 将下列代码粘贴到最后一行
#java config
export JAVA_HOME=/home/java/jdk-11.0.17
export JRE_HOME=/home/java/jdk-11.0.17/jre
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
3.2 重新载入当前文件
source /etc/profile
4. 其次安装jenkins
4.1 把jenkins源添加到yum
将jenkins的稳定版加入到yum 库中
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo --no-check-certificate
# (添加 --no-check-certificate 这个是为了不让服务器校验必须是https的url)
sudo rpm --importhttps://jenkins-ci.org/redhat/jenkins-ci.org.key
4.2 yum命令安装jenkins
sudo yum install jenkins
#启动/停止/重启
sudo systemctl start/stop/restart jenkins
4.3 启动失败情况列举及修复
1.3.1 第一种
execStart=/usr/bin/jenkins (code=exited, status=1/FAILURE)
#这个意思是说明jenkins没有找到服务器上java的安装路径,搞一个软链即可
ln -s /home/java/jdk-11.0.17/bin/java /usr/bin/java
4.4 初始化jenkins
安装完成后默认端口是8080,有时候会与其他端口冲突需要更改端口
- jenkins的配置文件在
/etc/sysconfig/jenkins下面
vi /etc/sysconfig/jenkins
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="9292"
- 修改配置文件之后,还需要修改启动服务文件,
centos的服务文件都在/usr/lib/systemd/system下
vi /usr/lib/systemd/system/jenkins.service
# Port to listen on for HTTP requests. Set to -1 to disable.
# To be able to listen on privileged ports (port numbers less than 1024),
# add the CAP_NET_BIND_SERVICE capability to the AmbientCapabilities
# directive below.
Environment="JENKINS_PORT=9292"
- 修改完之后如下执行命令,就可以重启jenkins服务了
systemctl daemon-reload
5. 配置jenkins创建项目
5.1 启动jenkins
通过服务器ip地址加上面设置好的端口访问jenkins

查看原始密码
vi /var/lib/jenkins/secrets/initialAdminPassword
5.2 创建管理员账号

5.3 安装插件
安装推荐的插件
5.4 创建任务及配置参数
输入任务名称
配置各项参数
- 通用面板~填写任务描述

参数设置面板~配置构建参数
- 操作路径 参数化构建过程->添加参数,主要用到下面几种参数

- 创建选项参数action是让用户来选择预览还是发布

- 创建git参数Branch-是让用户来选择构建git分支的

- 创建选项参数appId是用来选择构建哪一个微信小程序。

- 创建文本参数version和desc,是为了在发布时让用户输入版本号和版本描述

-
源码管理面板
-
设置gitlab相应的账户和密码。可以通过添加按钮管理账户
-
指定构建代码分支,这里要写成变量${Branch},如果写成常量,上面配置的git参数就不生效
前端代码及微信公众平台相关配置
操作步骤:登录公众平台,打开 开发-开发管理-开发设置,找到“小程序代码上传”配置项,生成小程序代码上传密钥,并添加ip白名单,密钥文件可以存放在要执行脚本的服务器上,或者保存在项目中,只要能让脚本访问到即可。
本次操作是将密钥文件放置在代码中,在根目录创建密钥文件
private.appid.key
配置Build Steps
操作路径 增加构建步骤->执行shell
其中action和appid还有version都是取自上面用户自行配置的参数变量
# 编译上传小程序并且生成二维码图片
project=miniprogram-alpha
set -e
echo "开始编译..."
start1=$(date +%s)
npm i
npm run build:mp-weixin
end1=$(date +%s)
take1=$(( end1 - start1 ))
echo "Compile Success:${take1}s"
echo "微信小程序上传..."
start2=$(date +%s)
#preview | upload
if [ ${action} == "preview" ]; then
miniprogram-ci \
preview \
--pp ./dist/build/mp-weixin \
--pkp ./private.${appid}.key \
--appid ${appid} \
--uv ${version} \
--threads 1 \
-r 1 \
--enable-es6 true \
--enable-es7 true \
--enable-autoprefixwxss true \
--enable-minify true \
--qrcode-format image \
--qrcode-output-dest "/data/img/Qrcode_img/miniprogram-alpha.jpg" \
else
miniprogram-ci \
upload \
--pp ./dist/build/mp-weixin \
--pkp ./private.${appid}.key \
--appid ${appid} \
--uv ${version} \
--threads 1 \
-r 1 \
--enable-es6 true \
--enable-es7 true \
--enable-autoprefixwxss true \
--enable-minify true \
fi
end2=$(date +%s)
take2=$(( end2 - start2 ))
echo "Upload Success: ${take2}s"
take3=$(( end2 - start1 ))
echo "Total Time: ${take3}s"
配置web_hook机器人发送钉钉消息。在钉钉群组中添加机器人,复制webhook地址
echo "webhook机器人发送钉钉消息..."
#此处的curl地址就是上图中的webhook地址
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxx' \
-H 'Content-Type: application/json' \
#选择使用markdown模板
#title 首屏会话透出的展示内容
#text markdown格式的内容消息,可以在其中添加要展示的二维码图片
-d '{
"msgtype": "markdown",
"markdown": {
"title":"xxxx",
"text": "## 小程序当前版本:'${version}' \n #### 更新内容:'${description}' \n \n"
},
"at": {
"atMobiles": [],
"atUserIds": [],
"isAtAll": false
}
}'
echo "webhook机器人发送钉钉消息成功"
发送成功后在钉钉群中展示的格式如下