1. 什么是 CI/CD
CI/CD 的核心概念可以总结为三点:
- 持续集成
- 持续交付
- 持续部署
代码上线流程:拉取代码->构建->测试->打包->部署
1.1 CI(Continuous Integration)
CI/CD 中的"CI"始终指持续集成
1.2 CD(Continuous Delivery/Continuous Deployment)
CI/CD 中的"CD"指的是持续交付和/或持续部署
Jenkins 是一款开源的 CI/CD 软件,可以算是 CI/CD 软件领导者,它提供了超过 1000 个插件来支持构建、部署、自动化,基本上能够满足任何项目的需要。
Jenkins工作流程如图所示:
开始搭建Jenkins环境
1、首先,准备一个私人仓库,上传好测试代码,例如:在gitee上新建一个仓库,测试代码自己可以看到效果即可。
2、我们需要一台服务器来跑Jenkins,一台服务器放我们的项目代码,手头没有多余服务器的小伙伴知道在真正的开发时,是分开部署的即可,这里不做要求。将来我们的代码提交到 Gitee 之后,Gitee 会通过一个 POST 请求将这个事件告知 Jenkins,进而触发 Jenkins 的构建操作。所以这就要求 Gitee 能够访问到你的 Jenkins 服务器,所以如果你的 Jenkins 刚好搭建在服务器上,这事就很容易了,但如果是搭建在本地,就得通过花生壳之类的内网穿透工具来辅助你的工作了,比较麻烦,网速也会有所限制。
3、首先连接上服务器
为了方便管理,使用docker进行安装
先安装docker
4、接下来启动并创建Jenkins容器
# 创建 jenkins 目录
mkdir /data/jenkins_home/
# 修改目录的所有者,以便于 Jenkins 容器能够操作该目录
chown -R 1000:1000 /data/jenkins_home/
docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins
效果图如下:
执行如上命令,安装成功之后,浏览器输入 http://localhost:8088
就可以访问了。(本地虚拟机访问如上地址,服务器改成自己的ip地址)
注意:如果启动时不报错,但是使用docker ps -a 查看时,端口为空,可能是因为你的虚拟机没有安装jdk,去下载安装一下就好了。
jdk8下载地址
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jdk11下载地址
浏览器打开界面如下:
密码可以通过:
cat /var/jenkins_home/secrets/initialAdminPassword
这条指令查看,jenkins_home在哪里,就写哪里,
也可能是如在data下就是:
cat /data/jenkins_home/secrets/initialAdminPassword
如果实在找不到jenkins_home可以执行以下命令
find / -name config.xml
查看那jenkins的目录
输入密码后,进入这个页面,新手第一次用直接选安装推荐的插件就可以了
网络原因可能有安装失败的,重试就好了
随便选择哪个登录,这里我直接选admin登录
一路点击来到Jenkins操作页面。但是,大家注意了,刚刚我们安装的插件很多是要重启才会生效的,所以,我们输入docker restart jenkins重启一下jenkins。
密码是上面用cat指令拿到的,登录进来。
部署不同的项目所需要的插件是不一样的,以Spring boot 的项目为例,接下来我们安装三个必要的插件:
- Maven Integration:Maven 构建工具
- Publish Over SSH:整个工具,将来把 Jenkins 打包好的 jar 上传到应用服务器上。
- Gitee:协助使用 Gitee 仓库。
安装成功之后,重启 Jenkins。
配置Jenkins
在这一切做完以后,我们开始配置Jenkins