让我们优雅的持续部署开发SpringBoot-Jenkins【超级详细的实战教程】
环境
- centos 7
- Java 1.8
- maven 3.6.3
- Jenkins 2.46.3
虽然我们是采用docker的方式安装Jenkins,所有的依赖镜像都已经打包好了。但是我们在后续使用Jenkins的过程中,会采用Jenkins主机上的Java运行环境,所以我们还是要安装一下java JDK8、并且配置一下环境变量。
推荐文章:https://segmentfault.com/a/11...maven环境
推荐文章:https://segmentfault.com/a/11...部署docker
推荐文章:https://segmentfault.com/a/11...部署jenkins(基于docker) 我们可以自己在本机上部署jenkins,也可以使用docker进行部署,这次我们选择docker来部署。
- 备份一下
/usr/local/java
目录和/usr/local/apache-maven-3.6.3
目录里面的
cp -r /usr/local/java /usr/local/java_bak cp -r /usr/local/apache-maven-3.6.3 /usr/local/apache-maven-3.6.3_bak
- 【让我们优雅的持续部署开发SpringBoot-Jenkins【超级详细的实战教程】】执行以下命令即可:
docker run -d -p 8001:8080 -p 8002:50000 -v /usr/local/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /etc/local/java:/etc/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 --name jenkins jenkins:2.46.3
其中要注意的是:
- 挂载
/usr/local/jenkinsHome
是jenkins的主目录 - 挂载
/etc/localtime
目录是为了容器内的jenkins与主机时间一致; - 挂载
/etc/local/java
是同步主机的java到容器中的jenkins(不然后面会有坑) - 挂载
/usr/local/apache-maven-3.6.3
是同步主机的maven到容器中的jenkins(不然后面会有坑)
docker run -d -p 8001:8080\ # 将容器中的端口8080,挂载到主机端口8001 -p 8002:50000\ # 将容器中的端口50000,挂载到主机端口8002 -v /usr/local/jenkins:/var/jenkins_home\ # 将容器中的目录/var/jenkins_home,挂载到主机目录/usr/local/jenkins -v /etc/localtime:/etc/localtime\ # 将容器中的目录/etc/localtime,挂载到主机目录/etc/localtime -v /etc/local/java:/etc/local/java\ # 将容器中的目录/etc/local/java,挂载到主机目录/etc/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3\ # 将容器中的目录/usr/local/apache-maven-3.6.3,挂载到主机目录/usr/local/apache-maven-3.6.3 --name jenkins\ # 给容器命名为jenkins jenkins:2.46.3 # 选择镜像
- 挂载
- 执行命令
docker ps
,我们会发现jenkins
并没有被启动起来。这是因为我们刚才挂载的目录,jenkins容器并没有访问启动。所以,我们需要给挂载的目录给予权限。
chown -R 1000:1000 /usr/local/java chown -R 1000:1000 /usr/local/apache-maven-3.6.3 chown -R 1000:1000 /usr/local/jenkins chown -R 1000:1000 /etc/localtime
- 重新执行下面命令,以启动jenkins。
docker run -d -p 8001:8080 -p 8002:50000 -v /usr/local/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/local/java:/usr/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 --name jenkins jenkins:2.46.3
- 查看jenkins是否启动成功,执行命令
docker ps
,查看是否有jenkins
文章图片
- 在浏览器访问
http://主机ip:8001
,如果出现下面页面表示成功
文章图片
- 执行命令
docker logs jenkins
,复制日志文件中的密码。
文章图片
- 浏览器访问
http://主机ip:8001
,到刚才复制的密码,粘贴到输入框中。
文章图片
- 点击continue,出现以下页面,选择默认选项(安装推荐插件),继续即可。
文章图片
- 等待插件安装完成,如果有安装失败的,多试几次就行。(也可以后面再安装)
文章图片
- 插件安装完毕后,会自动进入到创建账号的页面。我们这里为了快速进行,直接选择
使用admin账户继续
。
文章图片
- 设置jenkins的路径,我们默认继续即可
文章图片
- 点击
开始使用jenkins
,即可进入jenkins管理面板
文章图片
文章图片
- 点击
Manage Jenkins
,进入jenkins管理
文章图片
- 选择
Manage Plugins
,进入jenins插件管理
文章图片
- 选择
Available
,进行插件搜索安装
文章图片
- 搜索
maven
,勾选第一个Maven Integration
,最后选择Download now...restart
.
文章图片
- 等待插件下载完成,最后选择
空闲时重启
即可
文章图片
jenkins安装插件可能重启可能会出现挂掉的情况,这个时候我们只需要手动执行docker start jenkins
即可。 - 同理安装插件
Publish Over SSH
文章图片
- 重启进入jenkins后,我们重新进入
Manager Jenkins
,点击进入管理用户
文章图片
文章图片
- 选择admin旁边的小齿轮,然后下滑找到
密码
项。修改密码,保存即可。
文章图片
文章图片
- 重登jenkins,点击进入
Manage Credentials
,进行全局账号密码配置
文章图片
文章图片
文章图片
- 选择
添加一些凭证
,设置账号
、密码
等
文章图片
文章图片
- 其中id,为凭证的唯一标识符,只要保证唯一不重复即可。
- 描述用于标识这个凭证是干什么的,例如图中的
host@xiaoYan
,就意思为xiaoYan 主机
的账号密码
- 按照上一步,我们同样添加一条用于gitlab认证的凭证记录
文章图片
- 再次进入
Manager Jenkins
,点击进入系统配置
。然后一直下拉到最后,找到SSH Servers
配置项,点击新增。按照下图指示配置完毕后,点击保存退出即可。
文章图片
文章图片
- name: 给主机起一个名字
- Hostname: 主机ip
- Username: 主机用户名
- Remote Directory: 主机默认目录
- Passphrase / Password:主机用户密码
- 这次我们来配置
全局工具配置
。
文章图片
首先配置全局默认maven配置文件,路径填写jenkins同主机上的maven配置文件路径
文章图片
然后配置Java目录,如果出现图中的提示,表示主机的Java目录并没有挂载到docker容器的Jenkins中。所以需要我们进行将/usr/local/java
手动挂载到Jenkins中。(如果前面的命令没有错,这里不会出现这种情况的。但是我自己执行的过程中命令有偏差,导致了java目录没有被正确挂载上)
手动挂载Docker目录:https://segmentfault.com/a/11...
在配置git目录。在jenkins主机上执行whereis git
,得到git
命令所在目录。
文章图片
最后配置一下maven目录。
文章图片
保存退出即可。 - 终于到了配置Java项目的时候了,点击
新建项目
文章图片
- 选择
maven风格
,输入项目名称(这个名称会是jenkins下workspeace的工程目录)
文章图片
- 添加描述
文章图片
- 配置gitlab地址,其中
Credentials
选择我们之前在全局Credentials配置的gitlab认证,分支选择我们需要打包部署的分支。
文章图片
- 配置
SSH Publishers
,即jar包打包的动作
文章图片
- 配置
Build
,即构建需要的项目pom.xml文件,和打包命令。
文章图片
- 保存退出,点击
立即构建
。等等出现绿色小对钩,即表示构建成功。
文章图片
- 登录部署jar包的服务器,查看jar包有没有被正确的打包发送过指定得目录。java服务有没有被正确的启动起来。
文章图片
推荐阅读
- 我们每个人心里都住着两个天使,你知道吗()
- 长投-让我得其门而入
- 致我们无处安放的青春
- 钛极客|让“光纤入户”再进一步,华为发布FTTR全光家庭星光F30系列新品 | 科技前线
- 一些好玩的事|是什么让我放弃了Microsoft Edge的原生界面
- 有一个字我们从小说到大,但大多数人并不真正懂它,你呢()
- multiprocessing|multiprocessing 让子进程忽略信号,手动关闭子进程
- 拆书0105+左边向北转+让读书笔记成为你生活中的利器
- 《安全感》
- 不如我们从吃开始谈起