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 首页配置,确保首页路径一致。
相关推荐
G佳伟5 小时前
微信小程序带数组参数跳转页面,微信小程序跳转页面带数组参数
微信小程序·小程序
胡斌附体5 小时前
uniapp与微信小程序开发平台联调无法打开IDE
微信小程序·小程序·uni-app·联调·联网
程序员阿龙6 小时前
基于微信小程序的云校园信息服务平台设计与实现(源码+定制+开发)云端校园服务系统开发 面向师生的校园事务小程序设计与实现 融合微信生态的智慧校园管理系统开发
微信小程序·小程序·小程序开发·云校园平台·校园信息化·学生服务系统
Simon—欧阳19 小时前
微信小程序真机调试时如何实现与本地开发环境服务器交互
服务器·微信小程序·小程序
FE_C_P小麦1 天前
AI中国象棋双人游戏开发尝试:AI_Grok
前端·微信·微信小程序
前端小配角2 天前
微信小程序开发——Skyline中Worklet动画
微信小程序
^Rocky3 天前
微信小程序(uniapp)实现腾讯云 IM 消息撤回
微信小程序·uni-app·腾讯云
疯狂的沙粒3 天前
uniapp开发企业微信小程序时 wx.qy.login 在uniapp中使用的时候,需要导包吗?
前端·javascript·微信小程序·小程序·uni-app
1099054183 天前
微信小程序进阶第2篇__事件类型_冒泡_非冒泡
微信小程序