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 首页配置,确保首页路径一致。
相关推荐
Jing_Rainbow1 天前
【 Weapp-1 /Lesson18(2025-11-03)】# 微信小程序开发全解析:从项目结构到生态优势 🚀
微信·微信小程序·程序员
千寻技术帮1 天前
50045_基于微信小程序的民宿预订管理系统
微信小程序·源码·ppt·项目文档·民宿
禁止摆烂_才浅1 天前
Taro 小程序页面返回传参完整示例
react.js·微信小程序·taro
vx_dmxq2112 天前
【微信小程序学习交流平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·微信小程序·小程序·idea
腾马科技2 天前
小酒馆白酒饮料订单配送立即点餐存酒小程序源码
微信小程序·点餐小程序
vx_dmxq2112 天前
【PHP考研互助系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·考研·微信小程序·小程序·php
我命由我123452 天前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
G佳伟2 天前
‌微信小程序Webview转发页面空白问题解决方案‌
微信小程序·小程序
小皮虾3 天前
告别服务器!小程序纯前端“图片转 PDF”工具,隐私安全又高效
前端·javascript·微信小程序
源码_V_saaskw4 天前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序