在上一编文章里已经把Jenkins安装好里,通过docker安装在阿里云GFS-2服务器上里,参考(Jenkins自动集成之路-搭建部署编),接下来将正式开始使用。
目的
为团队项目工程配置好自动构建任务,利用Jenkins依据Gitlab的代码提交触发自动构建任务,并自动发布到研发环境到集成环境里。
大致步骤
push(开发人员提交代码)–> Gitlab通知Jenkins --> Jenkins去Gitlab拉取最新代码,启动构建任务 -->
Build(构建打包)–> Test(测试) --> Deliver发布部署 --> Jenkins通知Gitlab构建结果。
任务清单
- 后端服务项目自动构建
- 前端项目自动构建
- 前端JsClientAPI自动生成
基础环境
Jenkins,Git,Gitlab,Docker,JDK11,Maven
安装部署参考《基础环境安装部署》
Jenkins流水线Pipeline实践
实践说明
- 当Gitlab项目的develop分支发生Push事件时,进行自动构建。
- 使用Maven构建打包应用。
- 使用Maven测试应用。
- 使用docker构建应用容器镜像。
- 使用docker部署运行应用。
建Jenkinsfile文件
在Java项目根目录建里jenkins目录,结构如:jenkins/scripts
jenkins/目录放主Jenkinsfile文件
jenkins/scripts目录放sh脚本文件
Jenkinsfile文件
pipeline {
agent {
docker {
image '172.xx.209.xx:8082/jenkins/maven:3.6.3-jdk-11'
args '-v /data/maven/.m2:/root/.m2'
}
}
environment {
TARTGET_APP_NAME = 'my-app'
TARTGET_APP_VERSION = '1.0.0'
}
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('Deliver') {
steps {
sh 'echo "开始构建app的镜像"'
sh 'pwd'
sh 'docker build -t ${TARTGET_APP_NAME}:${TARTGET_APP_VERSION} ./${TARTGET_APP_NAME}/'
script {
try {
sh 'echo "停止之前的app docker 容器"'
sh 'docker stop ${TARTGET_APP_NAME}${TARTGET_APP_VERSION}'
sh 'echo "删除之前的app docker 容器"'
sh 'docker rm ${TARTGET_APP_NAME}${TARTGET_APP_VERSION}'
}catch (err){}
}
sh 'echo "开始运行新的app docker 容器"'
sh 'docker run -d --name ${TARTGET_APP_NAME}${TARTGET_APP_VERSION} -p 18001:18001 -e env=dev -e SPRING_PROFILES_ACTIVE=dev -e JAVA_OPTS="-Xmx2049m -Xms2049m" ${TARTGET_APP_NAME}:${TARTGET_APP_VERSION}'
}
}
}
}
在Jenkins中配置你的Gitlab的Access Token
在你的Gitlab里先设置Token
在Jenkins的首页 -> 凭据 -> 系统 -> 全局凭据 -> 添加凭据, 把上面 GitLab 中生成的 access token 填进去
在Jenkins的首页 -> 系统管理 -> 系统设置 -> Gitlab 配置项, 填入 GitLab 相关的配置, 后面配置项目时用到。
在Jenkins中创建你的流水线项目
-
创建新项目
回到Jenkins主界面,New Item ----> create new jobs
-
项目命名,选择流水线Pipeline类型任务
- 在 Enter an item name 域中,为新的流水线项目指定名称(例如 simple-java-maven-app)。
- 向下滚动并单击 Pipeline,然后单击页面末尾的 OK 。
-
配置任务参数
- 在General页签里选择,并设置参数
设置项目的git地址
设置构建触发器,当有push时触发,该步骤重要获取两个参数webhook URL 和Secret tonken,用于到Gitlab里配置
- 在General页签里选择,并设置参数
- 配置任务脚本
- 点击页面顶部的流水线 Pipeline 选项卡,向下滚动到 Pipeline 部分。
- 选择 Pipeline script from SCM 选项。此选项指示Jenkins从源代码管理(SCM)仓库获取你的流水线。
- 在 SCM 域中,选择 Git。
- 在 Repository URL 域中,填写项目到git地址,选择git的账号密码
- 点击 Save 保存你的流水线项目。
接下来就是配置Gitlab里,首先打开你的Gitlab界面,去到项目页面到配置界面,进入Integrations配置界面,将webhook URL 和Secret tonken配置进去,并保存,如下图