1、大致流程
流程说明:
1)开发人员每天把代码提交到 Gitlab 代码仓库
2)Jenkins 从 Gitlab 中拉取项目源码,编译并打成jar包,然后构建成 Docker 镜像,将镜像上传到 Harbor 私有仓库。
3)Jenkins 发送 SSH 远程命令,让生产部署服务器(应用服务器)到 Harbor 私有仓库拉取镜像到本地,然后创建容器。
4)最后,用户可以访问到容器(api或网站)
2、服务器规划
注:上面表格中机器标识是为了我在下面文章种描述方便加上去的,没实际作用。_
3、环境准备
3.1 项目源码
因为我这边描述的是单机版,所以项目源码找了一个由 sping 架构的微服务,前后端不分离的。不是传统意义上的 SpringCloud sping(全家桶)。整个项目前后端只有一个 jar包。
3.2 Docker、Harbor等软件安装
根据上面表格可以看出来,具体需要安装那些软件,按需安装即可,因为之前已经写过这些软件的安装过程,不再重复撰述了。
4、持续集成之创建 Jenkins Pipeline 流水线项目
注意,本文的重点是将本地运行的 java 微服务 jar包,构建成 docker 镜像,然后部署到生产服务器上。这个这套流程是通过 Jenkins Pipeline 的形式去完成,也是下面要讲的。Jenkins 处理这个流程有很多方式,Pipeline(流水线)只是其中一种方式,也是官方推荐的。
4.1 Jenkins项目构建类型-Pipeline流水线项目创建
Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点
的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
使用 Pipeline 的优点(来自翻译自官方文档):
Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流
程。
4.1.1 安装 Pipeline 插件
Jenkins中依次打开,Manage Jenkins->Manage Plugins->可选插件,搜素。
安装插件后可以创建项目了。
4.1.2 配置构建
- 参数化构建,根据分支拉取代码
4.1.3 创建 Jenkinsfile 文件-拉取代码
项目根目录创建 Jenkinsfile 文件,编写流水线脚本。
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('拉取代码') {
steps {
checkout(\[$class: 'GitSCM', branches: \[\[name: '*/${branch}'\]\], extensions: \[\], userRemoteConfigs: \[\[credentialsId: '32d07987-6f74-4b74-bb91-a9f5509', url: 'http://192.168.5.111:80/gitee/xx/xx/cabast'\]\]\])
echo '拉取代码成功'
}
}
}
}
说明,这里需要在Jenkins中配置好git仓库的相关凭证,就是Jenkins和git仓库通信。具体配置方法看前面的准备环境中,Jenkins安装链接。
现在构建验证下。
4.1.4 构建镜像
既然代码拉取下来了,就可以构建镜像了,使用 Dockerfile 编译、生成镜像。
这里简单的介绍下 jar包构建成 Docker 镜像的基础知识。