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 首页配置,确保首页路径一致。
相关推荐
半生过往10 小时前
微信小程序文件下载与预览功能实现详解
微信小程序·小程序·notepad++·压缩包下载解压
源码_V_saaskw10 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
996幸存者14 小时前
uni-app区域选择、支持静态、动态数据
微信小程序·uni-app
ᥬ 小月亮16 小时前
Uniapp编写微信小程序,绘制动态圆环进度条
微信小程序·小程序·uni-app
The_era_achievs_hero1 天前
UniappDay03
vue.js·微信小程序·uni-app
Python大数据分析2 天前
uniapp之微信小程序标题对其右上角按钮胶囊
微信小程序·小程序·uni-app
The_era_achievs_hero2 天前
uni-appDay02
javascript·vue.js·微信小程序·uni-app
黑马源码库miui520863 天前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
郭邯4 天前
小程序视图层学习笔记
微信小程序
拾光拾趣录5 天前
小程序双线程架构:为什么需要两个线程才能跳舞?
前端·微信小程序