Jenkins CI/CD 自动化构建部署微信小程序体验版

一、环境准备

    1. 购买服务器,推荐 Ubuntu 系统。
    1. 开放 8080(Jenkins)等必要端口。
    1. 若需要Docker,安装 Docker 和 Docker Compose。
    1. 拉取 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 自动触发)。

九、构建与发布流程

  1. 手动或自动触发构建。
  2. Jenkins 自动完成:拉取代码、安装依赖、构建、上传小程序体验版、打包、归档。
  3. 构建日志可实时查看,失败可追溯。

十、小程序后台体验版设置

  • Jenkins 自动上传后,体验版路径如无变动会自动继承。
  • 若每次都需手动设置,建议检查 app.json 首页配置,确保首页路径一致。
相关推荐
racerun1 小时前
微信小程序如何实现再多个页面共享数据
微信小程序·小程序
HERR_QQ1 天前
【unify】unify的微信小程序开发学习 (to be continued)
学习·微信小程序·小程序
mg6681 天前
微信小程序入门实例_____快速搭建一个快递查询小程序
微信小程序·小程序
程序员柳1 天前
基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
数据库·微信小程序·layui
Jyywww1212 天前
微信小程序学习笔记
笔记·学习·微信小程序
The_era_achievs_hero2 天前
微信小程序41~50
微信小程序·小程序
走,带你去玩2 天前
uniapp 微信小程序水印
微信小程序·小程序·uni-app
是一碗螺丝粉2 天前
🔥 微信H5视频自动播放终极秘籍:WeixinJSBridge竟是官方“通行证”?
微信小程序
一笑code2 天前
vue/微信小程序/h5 实现react的boundary
微信小程序·vue·react
菌菇汤2 天前
uni-app实现单选,多选也能搜索,勾选,选择,回显
前端·javascript·vue.js·微信小程序·uni-app·app