在CentOS7上搭建Jenkins+Maven+Git持续集成环境的方法
文章主要介绍了在CentOS7上搭建Jenkins+Maven+Git持续集成环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧本文以部署 Spring boot + M...
文章主要介绍了在CentOS7上搭建Jenkins+Maven+Git持续集成环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本文以部署 Spring boot + Maven 项目为例,使用码云作为代码托管仓库,在 CentOS 7 上搭建 Jenkins 持续集成环境。
1. 准备工作
1.1 安装 Java 环境
Jenkins 是基于 Java 开发的持续集成工具,需要在 Java 环境下运行。用下面命令查看系统是否已安装 Java:yum list installed | grep jdk
如果没有,使用 yum search 命令查找 openjdk 版本,选择合适的 jdk 进行安装:yum search openjdk
yum -y install java-1.8.0-openjdk-devel
验证 Java 是否安装成功:java -version
1.2 安装 Maven
依次运行以下两条命令:wget http://repos.fedorapeople.org... -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven
验证 Maven 是否安装成功:mvn -v
1.3 安装 Git
直接通过 yum 安装,安装完成后查看版本验证是否安装成功:yum -y install git
git --version
2. 安装和配置 Jenkins:
2.1 安装 Jenkins
依次运行以下三条命令:sudo wget https://pkg.jenkins.io/redhat... -O /etc/yum.repos.d/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat...
yum -y install jenkins
如果之前从 Jenkins 导入过 key,那么 rpm --import 将失败,因为已经有一个 key 了。忽略它,继续执行 install 即可。
2.2 启动 Jenkins
启动 Jenkins,并且设置开机自启动:systemctl start jenkins.service
chkconfig jenkins on
Jenkins 默认使用8080端口,访问以下链接即可看到 Jenkins 的 Web 界面:http://<服务器地址>:8080
如果无法访问,检查一下防护墙,是否有开放端口,或使用命令 netstat -ntulp 查看端口是否被占用。
2.3 进入 Jenkins
首次进入 Jenkins 需要输入管理员密码,使用以下命令查看初始密码:cat /var/lib/jenkins/secrets/initialAdminPassword
选择默认的install suggested plugins安装插件,等待安装完成后依照步骤创建用户,创建完成后即可登入。
2.4 配置 Jenkins
进入Manage Jenkins->Global Tool Configuration,依次配置 JDK、Git 和 Maven 路径。
2.4.1 查看 JDK 路径
使用 yum 安装的软件不会帮我们配置环境变量,直接使用命令echo $JAVA_HOME 是看不到路径的。
先用以下命令查看路径:which java
看到的结果是 /usr/bin/java ,但实际上这只是个软连接,并不是 JDK 真正的所在目录。
继续使用以下命令查看:ls -l /usr/bin/java
看到 /usr/bin/java 指向了 /etc/alternatives/java,很遗憾,还不是我们要找的真正路径。
继续追踪:ls -l /etc/alternatives/java
结果指向了/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java,不同版本的 JDK 目录名可能有些不同,这就是 JDK 真正所在的地方。
同理可获得 Maven 的所在路径。
2.4.2 安装和配置插件
进入Manage Jenkins->Manage Plugins,搜索并安装Publish Over SSH和Maven Integration两个插件,Git Plugins插件已经默认安装上了,我们无需再安装。
配置 SSH 免密码登录
在配置插件之前,我们先在 Jenkins 服务器上生成密钥对。运行以下命令切换到 jenkins 用户:sudo su jenkins
如果无法切换,则打开 /etc/passwd 文件,找到 jenkins 那一行,将 /bin/fasle 改成 /bin/bash。
切换成功后,命令提示符的用户名可能是 bash-4.2$,想要正常显示用户名的话,先切换回 root 用户,执行以下操作:
编辑文件 vi ~/.bash_profile
加入语句 export PS1='[u@h W]$'
立即生效 source ~/.bash_profile
再切换到 jenkins 用户,就显示正常了。接下来运行以下命令生成密钥对:ssh-keygen -t rsa
一路按回车完成,会在 /var/lib/jenkins/.ssh/ 目录下生成 id_rsa 和 id_rsa.pub两个文件。
将 id_rsa.pub 文件里的内容追加到应用服务器上的 /root/.ssh/authorized_keys 文件末尾,每行一个 key,注意是应用服务器。重启应用服务器上的 ssh 服务:systemctl restart sshd.service
现在 Jenkins 可以免密码登录应用服务器了,以 jenkins 用户身份运行命令来测试一下:ssh root@<应用服务器地址>
首次连接会有确认提示,输入 yes 即可。这步很重要,如果第一次没有手动连接确认,Jenkins 会连不上。
配置 Public over SSH 插件
进入Manage Jenkins->Configure System,填写Publish over SSH设置。
Path to key:填写刚刚生成的 id_rsa 密钥文件的路径。
Name:服务名,随意填写。
HostName:应用服务器的 IP 地址或域名。
Username:登录应用服务器的用户身份。
Remote Directory:远程目录, 应用服务器上存放应用的目录,Jenkins 会把应用拷贝至此目录下。请确保此目录存在。
save~
3. 部署 Maven 项目
点击 New Item 新建任务,随意输入任务名,选择 Maven project, ok。
在General,勾选 Discard old builds,可以设置最多保留构建文件多少天,和最多保留多少个构建文件,不然每次构建生成的文件都会保留,占用磁盘空间。
配置远程代码仓库地址,Jenkins 会从该地址拉取代码。注意此处如果提示无法读取仓库,有可能是:
公钥没有添加到远程代码服务器的 authorized_keys 文件里,上面配置 SSH 免登录是 Jenkins 访问应用服务器的,Jenkins 访问代码服务器也同样需要配置,除非应用服务器和代码服务器是同一台机器。如果使用码云或 GitHub 等代码托管平台,会有相应的 SSH key 设置页。
公钥已添加到相应文件里,但没有手动连接第一次。解决方法很简单,以 jenkins 用户身份手动 clone 一次仓库,确认 yes 即可。
勾选Add timestamps to the Console Output,在控制台输出构建过程。
填写 Maven 打包指令,-DMaven.test.skip=true 表示跳过测试。
勾选Run only if build succeeds,选择Send files or execute commands over SSH。
接下来就是设置 build 完之后,把 jar 包从 Jenkins 服务器拷贝到应用服务器上,并运行。
Name:选择之前创建的服务。
Source files:maven 打包后生成的 jar 包,即要拷贝到应用服务器运行的程序,可填多个,英文逗号分隔。
Remove prefix:忽略前缀,我们只需要拷贝 target 下的 jar 包,不需要在应用服务器上生成 target 目录。
Remote directory:目标文件夹,会继承全局设置,例如此处会把 jar 包拷贝到 /usr/local/app/demo 目录下。
Exec command:拷贝完成后,在应用服务器上执行的命令或脚本。
save->build now,构建成功后,打开浏览器访问你的站点吧~
4. 总结
其实整个流程不是很复杂,Jenkins 从远程代码库拉取代码 -> 调用 maven 指令将项目打包 -> Jenkins 将打包好的文件拷贝到远程应用服务器 -> 在远程应用服务器上执行 shell 指令,启动程序。其中 Jenkins 两次远程操作都是通过 SSH 完成的。
通过 yum 安装 Jenkins 和 Java 比较方便,但是在配置的时候相对麻烦,安装路径要自己找,配置 SSH 的时候也是要用 jenkins 用户身份,而不是 root,如果采用解压缩包的方式就比较自由一些。
以上就是本文的全部内容,希望对大家的学习有所帮助,
-
DELL R710服务器安装配置centos服务器系统的方法
写这篇文章的时候刚刚给一台DELL R710安装完系统。第一次给服务器安装系统。文章不会详细描述安装过程,网上有很多。只会描述我所遇到的问题。 其实服务器无外乎大了...
-
华为发布服务器处理器鲲鹏920:7nm工艺 号称性能最高
1月7日,华为在深圳推出ARM-based处理器-鲲鹏920(Kunpeng 920),以及基于鲲鹏920的TaiShan服务器、华为云服务。华为称鲲鹏920为目前业界最高性能处理器。...
-
Windows Server 2019 服务器系统安装图文教程
Windows Server 2019是由微软(Microsoft)官方推出的最新版服务器版操作系统,该系统基于Win Server 2016开发而来,后者是微软迄今为止普及速度最快的服务器系统。WinServer...
-
nginx服务器配置多个虚拟主机vhost的方法示例
文章主要介绍了nginx配置多个虚拟主机vhost的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧在nginx下配置虚拟主机vhost非常方便。主要...
-
Nginx服务器中accept锁的机制与实现详解
文章主要给大家介绍了关于Nginx中accept锁的机制与实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...
-
Linux系统服务器下Nginx支持ipv6配置的方法
文章主要介绍了Linux系统下Nginx支持ipv6的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧一、查看现有nginx是否支持ipv6需要执行以下命令,...
-
Linux服务器下 php7安装redis的方法
文章主要介绍了Linux下 php7安装redis的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下安装redis服务1 下载redis cd /usr/local/ 进入安装目录 wget http://dow...
-
Vue.js请求JSON Server服务器数据的实现方法
文章主要介绍了Vue.js请求JSON Server服务器数据的实现方法,需要的朋友可以参考下。由于这里是在之前《vue.js中的vue-resource示例详解》的基础上进行稍加修改完成的,因而其...
-
NVIDIA GPU服务器升级:16块450W Tesla V100
NVIDIA今天发布了升级版的GPU计算服务器“DGX-2H”,和上代DGX-2一样配备多达16颗Tesla V100 GPU,但热设计功耗从350W开放到450W,性能更上一层楼。Tesla V100是迄今为...
-
组装一台私人云存储主机配置推荐 家庭NAS云存储服务器搭建
如今互联网上的网盘不断关停,越来越觉得网盘不靠谱,有些重要资料放到网盘中,可能面临着网盘关停的风险,加之网盘用的是别人公司的服务器,说删除你的重要文件就删除,基本没得商量,不...