一、环境准备
-
- 购买服务器,推荐 Ubuntu 系统。
-
- 开放 8080(Jenkins)等必要端口。
-
- 若需要Docker,安装 Docker 和 Docker Compose。
-
- 拉取 Jenkins 官方镜像,建议使用国内镜像源。
二、Jenkins Docker 镜像自定义
Dockerfile 示例:
dockerfile
FROM jenkins/jenkins:lts
USER root
RUN apt-get update && apt-get install -y nodejs npm zip \
&& npm install -g miniprogram-ci \
&& rm -rf /var/lib/apt/lists/*
USER jenkins
# 设置 Jenkins 插件国内镜像源(清华大学)
ENV JENKINS_UC_DOWNLOAD=https://mirrors.tuna.tsinghua.edu.cn/jenkins
RUN jenkins-plugin-cli --plugins \
git \
workflow-aggregator \
nodejs
- 说明:安装 Node.js、npm、miniprogram-ci、zip,预装 Jenkins 插件。
三、Jenkins 容器启动与挂载 注意端口
bash
docker run -d \
-p 18080:8080 \
-v /your/jenkins_home:/var/jenkins_home \
-v /your/wechat:/var/jenkins_home/wechat \
--name jenkins-weapp \
your-jenkins-image:latest
or compose
version: '3.8'
services:
jenkins:
build: .
container_name: jenkins
ports:
- "18080:8080"
- "50000:50000"
volumes:
- jenkins_home:/var/jenkins_home
restart: unless-stopped
volumes:
jenkins_home:
driver: local
- 说明:挂载 Jenkins 数据目录和微信小程序密钥目录。
四、微信小程序密钥配置
- 将 private.wx****.key 上传到服务器 /your/wechat/ 目录。
- 确保 Jenkins 容器内 /var/jenkins_home/wechat/ 能访问到密钥文件。
五、Jenkins 插件与全局工具配置
- 进入 Jenkins Web UI,安装 NodeJS、Git、Pipeline 等插件(如未在 Dockerfile 预装)。
- 配置全局 NodeJS 版本(与项目一致)。
- 建议安装 Workspace Cleanup Plugin 插件,便于流水线 cleanWs 步骤自动清理工作区。
六、GitHub 仓库配置
- 新建或使用已有的 GitHub 仓库,上传你的微信小程序项目代码。
- 在 Jenkins 新建凭据,类型选择"用户名和密码"或"Personal Access Token",用于拉取私有仓库。
- 在 Jenkins 任务配置中填写 GitHub 仓库地址,并选择对应凭据。
七、Jenkinsfile 示例
建议将 Jenkinsfile 放在项目根目录,内容如下:
groovy
pipeline {
agent any
environment {
NODE_VERSION = '18.19.0' // 使用 Node.js 18 LTS 版本
PROJECT_NAME = 'my-vue3-project'
WECHAT_CLI_VERSION = '3.0.0' // 微信小程序命令行工具版本
APPID = 'wx2774e41f733aff1d' // 微信小程序的 APPID
PRIVATE_KEY_PATH = '/var/jenkins_home/wechat/private.wx2774e41f733aff1d.key' // 微信小程序上传密钥路径
}
stages {
stage('拉取代码') {
steps {
checkout scm
}
}
stage('安装依赖') {
steps {
sh 'npm install'
// 安装微信小程序 CI 工具
// sh 'npm install miniprogram-ci -g'
}
}
// stage('代码检查') {
// steps {
// script {
// // 如果项目中添加了 ESLint,可以在这里运行代码检查
// echo '运行代码检查...'
// // sh 'npm run lint' // 如果有配置 lint 命令的话
// }
// }
// }
stage('构建') {
steps {
script {
// 构建微信小程序
sh 'npm run build:mp-weixin'
}
}
}
stage('读取版本号') {
steps {
script {
env.VERSION = sh(
script: "grep '\"version\"' package.json | head -1 | sed 's/.*: *\"\\([^\"]*\\)\".*/\\1/'",
returnStdout: true
).trim()
echo "当前版本号:${env.VERSION}"
}
}
}
stage('获取提交备注') {
steps {
script {
env.GIT_COMMIT_MSG = sh(
script: "git log -1 --pretty=%B",
returnStdout: true
).trim()
echo "本次提交备注:${env.GIT_COMMIT_MSG}"
}
}
}
stage('上传微信小程序') {
steps {
sh '''
npx miniprogram-ci upload \
--project-path dist/build/mp-weixin \
--appid $APPID \
--private-key-path $PRIVATE_KEY_PATH \
--robot 1 \
--type trial \
--upload-version "$VERSION" \
--desc "$GIT_COMMIT_MSG"
'''
}
}
stage('打包') {
steps {
script {
// 压缩构建产物
sh '''
cd dist/build/mp-weixin
zip -r ../../${PROJECT_NAME}-weixin.zip ./*
'''
}
}
}
stage('归档') {
steps {
// 归档构建产物
archiveArtifacts artifacts: 'dist/*.zip', fingerprint: true
}
}
}
post {
success {
echo '构建并上传成功!'
}
failure {
echo '构建或上传失败!'
}
always {
// 清理工作空间
cleanWs()
}
}
}
八、Jenkins 任务创建与配置
- 新建 Pipeline 类型任务。
- 配置源码仓库地址,选择对应分支。
- 指定 Jenkinsfile 路径(如根目录则默认)。
- 选择合适的触发方式(如 GitHub Webhook 自动触发)。
九、构建与发布流程
- 手动或自动触发构建。
- Jenkins 自动完成:拉取代码、安装依赖、构建、上传小程序体验版、打包、归档。
- 构建日志可实时查看,失败可追溯。
十、小程序后台体验版设置
- Jenkins 自动上传后,体验版路径如无变动会自动继承。
- 若每次都需手动设置,建议检查 app.json 首页配置,确保首页路径一致。