QQ小程序提供了Docker镜像来对小程序项目进行CI构建(文档)。文档中提供的Github Actions及Drone CI两种CI工具都对Docker的相关操作进行了深度集成,以至于不需要调用docker自身的命令。
而改写成Jenkinsfile也很简单,在检出代码后,只需要先拉取镜像然后运行即可。
操作步骤
- 在QQ小程序后台获取AppToken,然后赋值到环境变量
PLUGIN_APPTOKEN
。 - 在检出代码后,新建一个拉取镜像的stage,拉取镜像。
stage('拉取镜像') { steps { sh 'docker pull qqminiapp/build:latest' } }
- 追加部署的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''' } }
- 最后整个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''' } } } }
-
开始一次构建任务,如果出现
手Q打开体验版
字样则代表上传成功,可在后台中看到新上传的版本了。
发表回复