jenkins配置
-
更新jenkins以及添加jenkins插件
GitLab Plugin(gitlab webhook触发构建插件)、Parameterized Trigger(参数化触发)、Maven Integration plugin(maven项目)、 Publish Over SSH(远程推送执行,CD必备)、Docker(基于Docker的master/slave构建任务)、Kubernetes plugin(基于Kubernetes的master/slave构建任务)
-
gitlab插件添加完后配置gitlab服务器
Manage Jenkins --> Configure System
API token 获取方式见gitlab配置
-
创建并配置jenkins流水线(pipeline)工程
配置gitlab hook钩子
配置jenkins流水线脚本并保存
-
jenkins pipeline脚本
gitlab自动触发构建脚本
pipeline { agent any parameters { //这些参数可以变更 string defaultValue: 'hosted', description: '选择运行profile', name: 'selectProfile', trim: true string defaultValue: 'konka-standard', description: '镜像命名空间', name: 'dockerImagePrefix', trim: true string defaultValue: 'http://192.168.1.2225:2370', description: 'docker服务地址', name: 'dockerServerHost', trim: true string defaultValue: '192.168.1.222:2375', description: 'docker仓库地址', name: 'dockerProxyImageHost', trim: true } environment { //要检出的分支 GIT_CHECK_BRANCH = "feature/dev" } tools { //配置maven;Manage Jenkins -> global tool configuration中的maven配置名称 maven 'maven-3.5.3' } stages{ stage('Checkout') { steps { echo 'checkout from git' script{ echo 'admin manual build' //检出代码语句见——》生成git代码检查语句 checkout([$class: 'GitSCM', branches: [[name: "*/${env.GIT_CHECK_BRANCH}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ca590b95-256b-4edd-98bb-xxxxxxxxxx', url: 'http://github.com/xxx/yyy.git']]]) } } } stage('Build Docker Image'){ steps { echo 'build docker image step' script{ echo 'begin build docker image' //无法访问内网环境则将nexus.inner替换成nexus.http sh "imgTag=${env.GIT_CHECK_BRANCH} && mvn clean package -P${params.selectProfile},nexus.inner,!buildprod:linux,!jave2.platform,docker -Dmaven.test.skip=ture -Ddocker.image.prefix=${params.dockerImagePrefix} -Ddocker.image.version=\${imgTag//\\//-}-$BUILD_NUMBER -Ddocker.nexus.hosted.server=${params.dockerProxyImageHost} -Ddocker.server.host=${params.dockerServerHost} " echo 'end build docker image' } } } } }
jenkins 手动触发构建,比自动触发多了手动设置的一些参数
pipeline { agent any parameters { string defaultValue: 'hosted', description: '选择运行profile', name: 'selectProfile', trim: true string defaultValue: 'feature/dev', description: '选择代码分支', name: 'selectBranch', trim: true string defaultValue: 'konka-standard', description: '镜像命名空间', name: 'dockerImagePrefix', trim: true string defaultValue: 'latest', description: '镜像版本tag', name: 'dockerImageTag', trim: true string defaultValue: 'http://192.168.1.2225:2370', description: 'docker服务地址', name: 'dockerServerHost', trim: true string defaultValue: '192.168.1.222:2375', description: 'docker仓库地址', name: 'dockerProxyImageHost', trim: true string defaultValue: 'false', description