45人参与 • 2025-02-15 • 云虚拟主机
通过 jenkins 和 docker 部署微信小程序,并实现自动构建、发布和版本更新,主要涉及以下几个步骤:
以下是详细的步骤说明:
首先,确保你已经安装和配置了 jenkins 服务器。假设你已经安装了 jenkins,并且 jenkins 能够正常运行。
安装 jenkins 所需插件:
在 jenkins 上安装插件的方法:
确保你在 jenkins 上配置了与 gitlab 的集成,以便 jenkins 可以从 gitlab 获取代码并触发构建。
配置 gitlab webhook
登录到你的 gitlab 仓库。
进入 settings -> webhooks。
添加一个新的 webhook,输入 jenkins 服务器的 url,格式为:
http://<jenkins_url>/project/<jenkins_job_name>
例如:
http://localhost:8080/project/wechat-miniapp-build
选择 push events 和 merge requests,这样每次代码提交到 gitlab 时,jenkins 会自动开始构建。
在 jenkins 中创建一个 pipeline 作业,用来构建 docker 镜像并部署微信小程序。
首先,在你的微信小程序项目根目录下创建一个 dockerfile
,用于构建 docker 镜像。
# 使用 node.js 镜像作为基础镜像 from node:16 # 创建并设置工作目录 workdir /app # 将当前目录下的项目文件复制到 docker 容器中 copy . . # 安装依赖 run npm install # 执行构建命令 run npm run build # 暴露端口 expose 3000 # 启动微信小程序构建服务(例如,使用 nginx 或其他方式) cmd ["npm", "start"]
创建一个 jenkins pipeline 来执行代码的拉取、docker 镜像的构建和发布。
pipeline { agent any environment { docker_image = "wechat-miniapp" docker_registry = "your-docker-registry" // docker registry 地址 } stages { stage('checkout') { steps { // 从 gitlab 获取代码 git 'http://your_gitlab_repo_url.git' } } stage('build docker image') { steps { script { // 构建 docker 镜像 sh 'docker build -t ${docker_registry}/${docker_image}:latest .' } } } stage('push docker image') { steps { script { // 将构建的镜像推送到 docker registry sh 'docker push ${docker_registry}/${docker_image}:latest' } } } stage('deploy') { steps { script { // 在服务器上拉取并运行 docker 镜像 sh 'docker pull ${docker_registry}/${docker_image}:latest' sh 'docker run -d -p 3000:3000 ${docker_registry}/${docker_image}:latest' } } } } post { always { // 构建结束后执行的操作,比如清理旧的容器 sh 'docker system prune -f' } } }
说明:
构建微信小程序的发布版本:
使用 npm run build
命令来构建生产版本,通常会生成一个用于发布的文件夹(例如,dist/
或 build/
)。然后将这些文件部署到你选择的 web 服务器上(例如 nginx、apache 等)。
上传小程序代码:
微信小程序通常需要使用微信开发者工具上传到微信服务器。你可以在构建完成后,利用微信小程序开发者工具的命令行工具进行自动化上传。
微信小程序提供了 cli 工具,叫做 weapp-cli
,你可以通过以下方式上传代码:
npm install -g weapp-cli weapp-cli upload --appid <your_app_id> --project <path_to_your_project>
然后可以将 upload
命令添加到 jenkins pipeline 的最后一个阶段。
stage('upload to wechat') { steps { script { // 上传到微信小程序 sh 'weapp-cli upload --appid <your_app_id> --project ./dist' } } }
每次有新代码提交到 gitlab 时,jenkins 会通过 webhook 自动触发构建过程。确保你的 gitlab 项目正确配置了 webhook,指向 jenkins 的构建 url。
配置 webhook:
在 gitlab 项目中,添加 jenkins 的 webhook,确保它能在每次推送代码后触发 jenkins 构建任务。
总结
在 almalinux 上配置 jenkins 自动化构建、docker 部署和与 gitlab 集成的步骤,涵盖从系统安装到 jenkins 配置、docker 部署、gitlab 集成、以及微信小程序自动构建和上传等过程。下面是详细的安装和配置步骤。
首先,我们需要在 almalinux 上安装 jenkins。
jenkins 需要 java 运行环境,通常推荐使用 openjdk。
sudo dnf install java-11-openjdk-devel -y
jenkins 官方提供了 rhel/centos 8 和 almalinux 8 的安装包。你可以通过以下步骤安装 jenkins:
添加 jenkins 仓库
sudo wget -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
导入 jenkins gpg 密钥
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
安装 jenkins
sudo dnf install jenkins -y
安装完成后,启动 jenkins 服务并使其开机自启:
sudo systemctl start jenkins sudo systemctl enable jenkins
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload
在浏览器中访问 jenkins:
http://<your-server-ip>:8080
首次访问时,jenkins 会要求你输入解锁密钥。你可以在以下位置找到它:
sudo cat /var/lib/jenkins/secrets/initialadminpassword
输入密码后,你可以继续设置 jenkins。
在 jenkins 中,我们需要安装一些插件来支持 docker 和 gitlab 集成。
安装完成后,重启 jenkins。
在 jenkins 中使用 docker 来构建和部署微信小程序。首先,你需要安装 docker。
# 安装 docker 依赖 sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 # 设置 docker 仓库 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 docker ce sudo dnf install docker-ce docker-ce-cli containerd.io -y # 启动并启用 docker sudo systemctl start docker sudo systemctl enable docker
为了避免每次运行 docker 命令时都需要使用 sudo
,你可以将 jenkins 用户添加到 docker
组:
sudo usermod -ag docker jenkins
然后重新启动 jenkins 服务:
sudo systemctl restart jenkins
jenkins 需要能够从 gitlab 获取代码并触发构建。
4.1 配置 gitlab webhook
在 gitlab 上,进入你的项目。
进入 settings -> webhooks。
添加一个新的 webhook,设置 url 为 jenkins 构建的 url:
http://<jenkins-ip>:8080/project/<jenkins-job-name>
选择 push events 和 merge request events,确保每次提交或合并时 jenkins 都能触发构建。 4.2 配置 gitlab plugin 在 jenkins 中,点击 manage jenkins -> configure system。在 gitlab 配置部分,输入 gitlab 的 url 和 api token。 在 gitlab 中生成 api token:进入 user settings -> access tokens 创建一个新的访问令牌。 配置完成后,保存并测试连接。
使用 jenkins pipeline 来定义整个构建过程。创建一个新的 pipeline 类型的 job。
以下是一个完整的 jenkins pipeline 脚本示例:
pipeline { agent any environment { docker_image = "wechat-miniapp" docker_registry = "your-docker-registry" } stages { stage('checkout') { steps { // 从 gitlab 获取代码 git 'http://your_gitlab_repo_url.git' } } stage('build docker image') { steps { script { // 构建 docker 镜像 sh 'docker build -t ${docker_registry}/${docker_image}:latest .' } } } stage('push docker image') { steps { script { // 推送 docker 镜像到 docker registry sh 'docker push ${docker_registry}/${docker_image}:latest' } } } stage('deploy') { steps { script { // 拉取并运行 docker 镜像 sh 'docker pull ${docker_registry}/${docker_image}:latest' sh 'docker run -d -p 3000:3000 ${docker_registry}/${docker_image}:latest' } } } stage('upload to wechat') { steps { script { // 使用微信小程序 cli 上传代码 sh 'weapp-cli upload --appid <your_app_id> --project ./dist' } } } } post { always { // 清理 docker 系统 sh 'docker system prune -f' } } }
如果你需要自动化上传微信小程序,可以使用 weapp-cli 工具。
在你的构建过程中,安装并使用微信小程序 cli 来上传小程序代码:
npm install -g weapp-cli
将上传命令添加到 jenkins pipeline 中的最后一个阶段:
stage('upload to wechat') { steps { script { // 上传到微信小程序 sh 'weapp-cli upload --appid <your_app_id> --project ./dist' } } }
你需要替换 <your_app_id>
和 ./dist
为你实际的小程序 app id 和构建后的目录。
通过这些步骤,你可以在 almalinux 上配置 jenkins,结合 docker 部署和 gitlab 集成,自动化构建和发布微信小程序:
要将微信小程序部署到 docker 上,并使用 jenkins 实现自动构建和更新,我们需要明确几个关键步骤。主要的步骤包括:
微信小程序本身是一个前端项目,通常使用 npm run build
进行构建,这样会生成一个可以通过 web 服务器提供的构建文件夹(例如 dist/
或 build/
)。
首先,确保你已经准备好微信小程序的代码并能够通过以下命令构建它:
npm install npm run build
接下来,我们需要为微信小程序创建一个 dockerfile,这样就能将构建好的文件夹部署到 docker 容器中。
在微信小程序的项目根目录下创建一个 dockerfile
,示例如下:
# 使用 nginx 作为基础镜像 from nginx:alpine # 设置工作目录 workdir /usr/share/nginx/html # 将本地构建的文件(例如 dist 文件夹)复制到容器的工作目录中 copy ./dist /usr/share/nginx/html # 暴露 nginx 的默认端口 80 expose 80 # 默认命令:启动 nginx cmd ["nginx", "-g", "daemon off;"]
这里的 dockerfile 做了以下几件事情:
dist/
)复制到 nginx 默认的 web 根目录 /usr/share/nginx/html
。在项目根目录下,执行以下命令来构建 docker 镜像:
docker build -t wechat-miniapp .
构建镜像之后,运行 docker 容器:
docker run -d -p 8080:80 wechat-miniapp
这将启动一个 nginx 服务器,监听宿主机的 8080 端口。你可以通过访问 http://<your-server-ip>:8080
来查看你的微信小程序。
接下来,我们要使用 jenkins 自动化构建和更新过程。主要的任务是:从 gitlab 获取代码、构建 docker 镜像、推送镜像到 docker hub 或私有仓库,然后在目标服务器上拉取最新的镜像并运行。
在 jenkins 上,安装以下插件:
在 jenkins 上配置 gitlab 集成:
pipeline { agent any environment { docker_image = "wechat-miniapp" docker_registry = "your-docker-registry" // docker 仓库地址(例如 docker hub 或私有仓库) docker_tag = "latest" // docker 镜像标签 } stages { stage('checkout') { steps { // 从 gitlab 获取代码 git 'http://your_gitlab_repo_url.git' } } stage('install dependencies') { steps { script { // 安装依赖 sh 'npm install' } } } stage('build') { steps { script { // 构建微信小程序 sh 'npm run build' } } } stage('build docker image') { steps { script { // 构建 docker 镜像 sh 'docker build -t ${docker_registry}/${docker_image}:${docker_tag} .' } } } stage('push docker image') { steps { script { // 将镜像推送到 docker 仓库 sh 'docker push ${docker_registry}/${docker_image}:${docker_tag}' } } } stage('deploy docker container') { steps { script { // 在目标服务器上拉取最新镜像并运行 docker 容器 sh 'docker pull ${docker_registry}/${docker_image}:${docker_tag}' sh 'docker stop wechat-miniapp || true' sh 'docker rm wechat-miniapp || true' sh 'docker run -d --name wechat-miniapp -p 8080:80 ${docker_registry}/${docker_image}:${docker_tag}' } } } } post { always { // 清理 docker 镜像和容器 sh 'docker system prune -f' } } }
说明:
dist/
或 build/
文件夹。dockerfile
构建 docker 镜像。在 gitlab 中,进入你的项目设置,配置 webhook,使每次代码推送后自动触发 jenkins 构建:
在 gitlab 中,进入项目设置 -> webhooks。
添加 jenkins 的 webhook 地址:
http://<jenkins-ip>:8080/project/<jenkins-job-name>
选择 push events 和 merge requests,这样每次代码提交或合并时,jenkins 会自动构建。
通过以上步骤,你可以实现以下目标:
这样,你就可以通过 docker 容器化的方式,利用 jenkins 自动化构建和部署微信小程序,从而提高开发和发布的效率。
到此这篇关于docker部署微信小程序自动构建发布和更新的文章就介绍到这了,更多相关docker部署微信小程序内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论