jenkins + miniprogram-ci + webhook发布小程序代码,发送钉钉消息预览小程序二维码

516 阅读2分钟

jenkins + miniprogram-ci + webhook发布小程序代码,发送钉钉消息预览小程序二维码

首先安装java

1. 下载java

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

screenshot

查看原始密码


vi /var/lib/jenkins/secrets/initialAdminPassword

5.2 创建管理员账号

screenshot

5.3 安装插件

安装推荐的插件

5.4 创建任务及配置参数

输入任务名称

WeChat3a46d366ac38f2e33534b9e8c780582d.png

配置各项参数

  • 通用面板~填写任务描述

screenshot

参数设置面板~配置构建参数

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

screenshot

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

screenshot

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

screenshot

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

screenshot

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

screenshot

  • 源码管理面板

  • 设置gitlab相应的账户和密码。可以通过添加按钮管理账户

  • 指定构建代码分支,这里要写成变量${Branch},如果写成常量,上面配置的git参数就不生效

WeChat35af3b7aa4edc9534150321b8c69767f.png

前端代码及微信公众平台相关配置

操作步骤:登录公众平台,打开 开发-开发管理-开发设置,找到“小程序代码上传”配置项,生成小程序代码上传密钥,并添加ip白名单,密钥文件可以存放在要执行脚本的服务器上,或者保存在项目中,只要能让脚本访问到即可。

WeChat7638313920a854981afd3d228a2ec7a5.png

本次操作是将密钥文件放置在代码中,在根目录创建密钥文件private.appid.key

WeChat8bbf07b65c7426a71226b5cbf5f0b816.png

配置Build Steps

操作路径 增加构建步骤->执行shell

其中actionappid还有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地址

WeChatf381d02c79266305e1e4bd8f87e596bc.png


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 ![screenshot](http://127.0.0.1:9293/miniprogram-alpha.jpg)\n"

},

"at": {

"atMobiles": [],

"atUserIds": [],

"isAtAll": false

}

}'

echo "webhook机器人发送钉钉消息成功"

发送成功后在钉钉群中展示的格式如下

WeChat122a50af8e3351359a1dc3c77a5186d8.png

到这里所需要的配置和代码就完成了。日常记录。