专栏首页TLingC's Zone使用Jenkins持续集成部署QQ小程序

使用Jenkins持续集成部署QQ小程序

QQ小程序提供了Docker镜像来对小程序项目进行CI构建(文档)。文档中提供的Github Actions及Drone CI两种CI工具都对Docker的相关操作进行了深度集成,以至于不需要调用docker自身的命令。

而改写成Jenkinsfile也很简单,在检出代码后,只需要先拉取镜像然后运行即可。

操作步骤

  1. 在QQ小程序后台获取AppToken,然后赋值到环境变量PLUGIN_APPTOKEN
  2. 在检出代码后,新建一个拉取镜像的stage,拉取镜像。 stage('拉取镜像') { steps { sh 'docker pull qqminiapp/build:latest' } }
  3. 追加部署的stage,运行docker镜像,并根据文档设置传递的参数,我这里把小程序版本设置为CI构建的编号,描述为提交的commit id。 注意在设置workdir后,还需要-v挂载目录,否则在容器内也无法读取到目录文件。 stage('部署') { steps { sh '''docker run --rm --workdir /root/workspace \ --env PLUGIN_VERSION=${CI_BUILD_NUMBER} \ --env PLUGIN_DESC=${GIT_BUILD_REF} \ --env PLUGIN_APPTOKEN=${PLUGIN_APPTOKEN} \ --env PLUGIN_BUILDUSER=${GIT_AUTHOR_EMAIL} \ --env PLUGIN_EXPERIENCE=true \ -v "/root/workspace":"/root/workspace" qqminiapp/build:latest''' } }
  4. 最后整个Jenkinsfile应该为这样。 pipeline { agent any stages { stage('检出') { steps { checkout([ $class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]) } } stage('拉取镜像') { steps { sh 'docker pull qqminiapp/build:latest' } } stage('部署') { steps { sh '''docker run --rm --workdir /root/workspace \ --env PLUGIN_VERSION=${CI_BUILD_NUMBER} \ --env PLUGIN_DESC=${GIT_BUILD_REF} \ --env PLUGIN_APPTOKEN=${PLUGIN_APPTOKEN} \ --env PLUGIN_BUILDUSER=${GIT_AUTHOR_EMAIL} \ --env PLUGIN_EXPERIENCE=true \ -v "/root/workspace":"/root/workspace" qqminiapp/build:latest''' } } } }
  5. 开始一次构建任务,如果出现手Q打开体验版字样则代表上传成功,可在后台中看到新上传的版本了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker 19.03 设置Docker Hub镜像地址

    在 Docker 19.03 中,通过修改/etc/default/docker文件:

    TLingC
  • 在Jenkins上不使用插件进行Git系统Webhook触发集成

    最近使用到Jenkins来进行持续集成,代码库在自建的Gitlab上,而Jenkins里已有提供GitLab Plugin插件,很方便地就完成了部署。但是若使用...

    TLingC
  • 使用Coding企业版自动部署mkdocs文档

    mkdocs自身放在master分支,master分支有修改时调用持续集成,进行构建并把构建后的文件推送回gh-pages分支,再触发持续部署中的静态网站功能,...

    TLingC
  • Docker 学习系列21 远程连接Docker

    Docker为C/S架构,服务端为docker daemon (daemon是守护进程的意思,进程名叫dockerd),客户端为docker.service。 ...

    mafeifan
  • Elasticsearch Mapping类型映射概述与元字段详解

    Mapping,映射,相当于关系型数据库创建语句,定义文档字段及其类型、索引与存储方式。通常会涉及如下方面:

    丁威
  • 用Python加密文件

    生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库。

    小小科
  • 你试过用 Python 加密文件吗?

    生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库。

    崔庆才
  • 数据分析师发展的五大问题,一次扫清!

    马上就是2020年了,新年将至,很多同学都在思考职业发展路径问题。最近咨询陈老师的也很多,一个很普遍被问到的,就是:数据分析师的红旗,到底能打多久?今天集中解答...

    接地气的陈老师
  • NDK学习笔记(二)使用JNI同原生代码通信 原

    任何使用JNI的操作都需要两次或者三次函数调用,因此要实现大量的原生方法并让它们同Java类保持同步很容易编程一件非常艰辛的工作。

    LeoXu
  • 大数据分析与应用技术创新平台

    原文链接:https://mp.weixin.qq.com/s/kCDYOInF8KjHstIMAWSljA

    月牙寂道长

扫码关注云+社区

领取腾讯云代金券