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

无人久伴 提交于 2020-02-25 15:44:07

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打开体验版字样则代表上传成功,可在后台中看到新上传的版本了。

原文:https://tlingc.com/2020/02/using-jenkins-ci-to-deploy-qq-miniapp/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!