jenkins+私服git+docker构建和部署springboot项目
一、jenkins介绍与安装
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
- CI全名Continuous Integration,就是我们经常听到的持续集成概念。
- CD全名是Continuous Deployment,是持续部署。
1.1 安装
安装jenkins之前,首先需要安装jdk。
- 添加官方软件仓库的秘钥到本地的apt秘钥中:
sudo wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- 将Debian软件包存储库地址附加到服务器的sources.list上:
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
- 更新本地的软件源缓存,然后直接安装jenkins:
sudo apt-get update
sudo apt-get install jenkins
安装过程中出现的问题:
Job for jenkins.service failed because the control process exited with error code.
See "systemctl status jenkins.service" and "journalctl -xe" for details.
invoke-rc.d: initscript jenkins, action "start" failed.
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: failed (Result: exit-code) since Fri 2020-01-10 10:29:44 CST; 11ms ago
Docs: man:systemd-sysv-generator(8)
Process: 3760 ExecStart=/etc/init.d/jenkins start (code=exited, status=1/FAILURE)
1月 10 10:29:44 qkxsb-virtual-machine systemd[1]: Starting LSB: Start Jenkins at boot time...
1月 10 10:29:44 qkxsb-virtual-machine jenkins[3760]: ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin
1月 10 10:29:44 qkxsb-virtual-machine jenkins[3760]: If you actually have java installed on the system make sure the executable is in the aforementioned path and that 'type -p java' returns the java executable path
1月 10 10:29:44 qkxsb-virtual-machine systemd[1]: jenkins.service: Control process exited, code=exited status=1
1月 10 10:29:44 qkxsb-virtual-machine systemd[1]: jenkins.service: Failed with result 'exit-code'.
1月 10 10:29:44 qkxsb-virtual-machine systemd[1]: Failed to start LSB: Start Jenkins at boot time.
dpkg: 处理软件包 jenkins (--configure)时出错:
installed jenkins package post-installation script subprocess returned error exit status 1
在处理时有错误发生:
jenkins
E: Sub-process /usr/bin/dpkg returned an error code (1)
原因:从报错信息可以看出主要是找不到jdk的bin文件
解决办法:创建一条软链接,如下所示:
sudo ln -s /usr/jdk1.8.0_201/bin/java /usr/bin/java
- 启动:
service jenkins start
1.2 修改配置文件
sudo vim /etc/default/jenkins
1.2.1 修改启动端口
默认端口使8080,将启动端口改为7000:
HTTP_PORT=7000:
1.2.2 修改默认用户
jenkins默认安装的时候会使用“jenkins”这样一个用户,为了方便可以修改默认用户为root,或者自己建立对应用户以及所有执行命令相关的权限。
JENKINS_USER=root
JENKINS_GROUP=root
1.3 使用
1.3.1 访问
在浏览器中访问http://IP:7000/
,
- 首先会提示去指定位置查找密码,并输入:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
2. 安装推荐的插件,等待插件安装完成。
3. 插件安装完成之后,点击继续,在第一次访问时,会需要先创建账户:
1.3.2 配置maven、jdk等工具:
首先在服务器上安装maven和jdk,然后将路径配置到jenkins中。
进入系统管理->全局工具配置页面:
- maven配置和jdk安装
/usr/local/apache-maven-3.6.3/conf/settings.xml是安装在服务器上的maven的配置文件。
/usr/local/jdk1.8.0_201为服务器上jdk安装包地址。
- maven安装
jdk和maven都可以设置自动安装,在第一次构建项目时会先去下载需要的软件。
1.3.2 新建maven项目
如果没有构建maven项目的选项,先去系统管理–>插件管理–>可选插件中下载Maven Integration插件。
1. 基础配置
确定后进入项目配置页面,首先会有一个基础配置:
为什么要丢弃旧的构建?
Jenkins在每一次的执行构建后,都会对该构建的项目生成一个历史构建记录以及生成一份历史构建的项目发布包,这些项目发布包会存在磁盘中,随着时间的推移,要构建的项目越来越多,而构建的历史版本同样也越来越多,这过多的项目外加每个项目的过多的版本,其最终的结果就是磁盘被占用的空间越来越大,直至磁盘空间被占用完为止,最终可怕的结果可想而知,由于没有再可以被写入的空间,其它软件也就无法正常运行了。
上图中的配置是保留三天的构建记录和发布包,最多保存3条构建记录,因为我们每次取用jar包或war包时都只想获取最新版本,所以说我们这里只保存最新版的发布包信息,因而在“发布包最大保留#个构建”中填写1。
2. 源码管理
如上图,指定了私有git仓库的地址,还需要凭证才能与git仓库建立连接,所以在当前服务器上安装git,并生成秘钥ssh-****** -t rsa -C "邮箱"
。
将刚刚生成的文件id_rsa中的内容加到凭据中去,点击上图中的添加
按钮,就可以添加凭据:
3. 构建Build
在Root POM处填写工程的pom.xml文件名称;
在Goals and options处填写要执行的maven命令;-Dmaven.repo.local=/home/camellia-test147/repository
指明构建时的maven仓库的位置;-Dmaven.test.skip=true
指明构建时跳过测试
4. 配置Post Step
在配置完Build之后,就完成配置了,但是可以增加一些步骤,使jenkins在完成打包之后执行一些命令,将构建好的jar包启动。
在本文中,配置将打包好的jar包在另一台服务器上通过docker启动。
1) 首先安装Publish Over SSH
插件,
2) 进入系统管理–>系统配置页面,在页面的最下面,就有Publish over SSH的配置,配置SSH Server:
3) 配置Post Step
以上配置表明,将在本机打包好的jar包,发送到指定远程服务器的/home/qkxsb138/docker/sales
目录下,并在远程服务器上执行./sales.sh
命令。
- 以上配置完成之后,点击应用、保存,进入项目中,点击构建
在构建历史的下拉框中可以选择控制台输出
,在控制台查看日志。
由于一开始在基础配置中配置了丢弃旧的构建,且只保留3个构建历史,所以前两个构建历史就删除了。
上一篇: MYSQL语法的详细总结(附示例)