Jenkins从搭建到配合Git+Maven+Tomcat使用
- 1、安装前所需准备
- 2、安装Jenkins以及升级版本方法
- 2.1、下载安装包(RPM方式这是阿里的镜像)
- 2.2、安装及问题解决
- 2.3、运行
- 2.4、插件的管理
- 2.5、Jenkins凭证管理
- 2.6、jenkins全局工具配置
- 3、构建maven项目
1、安装前所需准备
首先安装Jenkins之前,由于jenkins是采用Java编写的,所以安装jenkins之前环境上需先安装Java环境,linux中必须安装好了JDK和Maven,如果还没有安装过,请按照下面安装教程安装
2、安装Jenkins以及升级版本方法
2.1、下载安装包(RPM方式这是阿里的镜像)
界面往下拉,拉倒最下面是最新的;
2.2、安装及问题解决
选择你想放的目录创建一个文件夹:
mkdir jenkins
将下载好的jenkins文件上传到刚才创建的这个文件夹中;
进入jenkins目录解压,解压命令:
rpm -ivh jenkins-2.289.2-1.1.noarch.rpm
解压成功之后,查看jenkins安装的目录 :
whereis jenkins
jenkins的安装路径: /usr/lib/jenkins 里面就是一个war包
启动Jenkins命令:
service jenkins start
注意问题:如果启动报:没有则直接跳过
Starting jenkins (via systemctl): Job for jenkins.service failed because the control process exited with error code.
See "systemctl status jenkins.service" and "journalctl -xe" for details.
则需要在jenkins中配置上jdk的目录输入命令:vim /etc/init.d/jenkins
往下拉找到:
查看java路径:
which java
重启Jenkins
service jenkins restart
出现ok即可;
停止jenkins命令
service jenkins stop
修改jenkins端口号及用户:jenkins配置文件:
vi /etc/sysconfig/jenkins
分别找到:JENKINS_USER 和 JENKINS_PORT
JENKINS_USER 将 jenkins 修改成 root (后期操作一些权限需要root)
JENKINS_PORT 这一项是端口号 随你自己需求改吧! 改完记得在防火墙中把端口放行。云服务器的话需要在安全组把你自己的端口加入到其中放行
一些防火墙的命令:
#检查防火墙状态:
service firewalld status
#开启防火墙:
service firewalld start
#重启防火墙
service firewalld restart
#刷新防火墙配置
firewall-cmd --reload
#查看开放的端口列表
firewall-cmd --list-ports
#开启自己端口
firewall-cmd --permanent --add-port=8080/tcp
#移除端口
firewall-cmd --permanent --remove-port=8080/tcp
** 记得操作过端口后执行刷新防火墙配置命令
#查看服务器运行的端口号
netstat -ntlp
2.3、运行
1、打开浏览器输入http://ip地址:端口号 进行访问
2、获取并输入admin账户密码
cat /var/lib/jenkins/secrets/initialAdminPassword
会返回密码将密码输入上进行登录!
3、跳过插件安装
因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装
跳过的方法–》点击选择插件来安装-》点击无-》点击安装
4、添加一个管理员账户,并进入Jenkins后台创建完用户点击保存并完成
之后出现实例配置:检查url 之后点击保存并完成
进入jenkins
2.4、插件的管理
Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。
1、修改Jenkins插件下载地址
Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址: Jenkins->Manage Jenkins->Manage Plugins,点击Available
这样做是为了把Jenkins官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址;
#进入到这个目录
cd /var/lib/jenkins/updates
#执行
sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
#执行
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
最后,Manage Plugins点击Advanced,把Update Site改为国内插件下载地址: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
Sumbit后,在浏览器输入: http://ip:端口号/restart ,重启Jenkins。
2、下载中文汉化插件
Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"
完成后,重启Jenkins,就看到Jenkins汉化了!(PS:但可能部分菜单汉化会失败)
3、下载所需的插件git 、 gitlab 、maven
这个插件自己需要什么就搜索下载什么即可。下载完重启即可!
有的时候通过上述方法插件还安装失败的,则可以在插件管理-高级-上传插件
插件下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
2.5、Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
安装Credentials Binding插件
要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件
可以添加的凭证有5种:
1、Username with password:用户名和密码
2、SSH Username with private key: 使用SSH用户和密钥
3、Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
4、Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
5、Certificate:通过上传证书文件的方式
常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)
在全局凭证这里可以管理:
添加gitlab用户:需要服务器装有git
CentOS7上安装Git工具:
yum install git -y 安装
git --version 安装后查看版本
点击添加凭证:
测试凭证是否可用新建任务-》构建一个maven项目-》源码管理-》选择git
我是用的是http方法拉取代码 使用ssh还需别的配置可以自行百度!输入git地址,点击左边框选择你刚才添加的用户!没有任何报错则说明可以使用。
2.6、jenkins全局工具配置
系统管理-》全局工具配置
5.1 JDK安装
这里因为你本机电脑已经装好了jdk
点击新增-》去掉自动安装的对钩-》输入名称和路径
5.2、maven安装 还是这个界面往下拉
maven-》新增maven-》去掉自动安装的对钩-》输入名字和之前安装的路径
再讲界面拖到最上面,配置maven配置的settings文件,一般是默认的,下拉选择文件系统中的settings文件,路径写到你配置的maven路径下conf下的setting.xml文件-》最后记得保存
3、构建maven项目
1、点击新建任务-》
2、源码管理输入你项目源码的git地址和添加的用户凭证
3、构建环境
pom文件的地址根据你项目的地址填写要正确,不正确的话会有报错,
Goals and options 这是打包的命令
因为我这个项目是jar包是别的项目依赖需要将他打到maven仓库中所以使用的是clean install
扩展maven的打包命令:
# maven打包跳过测试
clean package -Dmaven.test.skip=true
#一般使用的命令
clean package -Ptest -Dmaven.repo.local=/root/.m2/repository -Dmaven.test.skip=true
解读:看你自己的需要组合,更多可以百度查查!
-P 因为我们的环境配置了多个 test prod 这个是指定使用test环境
-Dmaven.repo.local 这个是制定本地的maven仓库地址,maven在打包的时候,依赖下载不下来会去本地仓库中寻找
-Dmaven.test.skip 这个命令就是跳过打包完成后的测试
*这里注意: 新安装的maven可能找不到 maven本地仓库的地址:
这里还有一个操作就是将maven仓库下载地址镜像改成国内的,这个操作自行百度!
安装完maven后 所谓的{user_home}/.m2/repository找不见
先运行命令行 mvn help:effective-settings
等下载完jar包后 这里的 <localRepository>就是本地仓库了 一般为/root/.m2/repository
完成后点击保存!-》点击立即构建!
可以在左下角 Build History 查看构建的日志
注意问题:
这里就是他有一个依赖没有找到,我们这个项目依赖是本地的。需要将jar包上传到linux服务器,然后通过maven的打包命令将其打入到服务器的maven本地仓库中;
操作:将你的jar包上传到服务器某个位置
#maven将jar包打入本地仓库命令
mvn install:install-file -Dfile=/home/temp/xxxx-1.0-SNAPSHOT.jar -DgroupId=com.xxxxxx.xxxx -DartifactId=xxxx -Dversion=1.0-SNAPSHOT -Dpackaging=jar
解读:
-Dfile 就是你jar包上传到服务器的位置
-DgroupId 是项目组织唯一的标识符
-DartifactId 就是项目的唯一的标识符
-Dversion 项目版本号
-Dpackaging 打包类型
出现这个说明就成功了;
我们项目是好多jar包依赖 最后整合到war中;每个jar的依赖按照上面的操作打入maven仓库即可;
下面说war包的:
前面的操作一样:新建任务-》源码管理-》构建环境-》
然后在用脚本来操作war包放入tomcat (tomcat安装教程自行百度)
输入脚本
#!/bin/sh
#kill tomcat pid
#这句尤为重要
export BUILD_ID=tomcat_mobile_build_id
# 1.关闭tomcat
pidlist=`ps -ef|grep tomcat_mobile|grep -v "grep"|awk '{print $2}'`
function stop(){
if [ "$pidlist" == "" ]
then
echo "----tomcat 已经关闭----"
else
echo "tomcat进程号 :$pidlist"
kill -9 $pidlist
echo "KILL $pidlist:"
fi
}
stop
pidlist2=`ps -ef|grep tomcat_mobile|grep -v "grep"|awk '{print $2}'`
if [ "$pidlist2" == "" ]
then
echo "----关闭tomcat成功----"
else
echo "----关闭tomcat失败----"
fi
# 2.移除原来tomcat中webapps中的项目文件夹
rm -rf /usr/local/tomcat_mobile/webapps/ROOT*
# 3.复制jenkins生成的war包到tomcat中webapps中
cp -r /var/lib/jenkins/workspace/baiyangjinrong-mobile/mobile/target/mobile.war /usr/local/tomcat_mobile/webapps
sleep 3s
# 4.修改war包的名称
mv /usr/local/tomcat_mobile/webapps/mobile.war /usr/local/tomcat_mobile/webapps/ROOT.war
# 5.启动tomcat
cd /usr/local/tomcat_mobile/bin
./startup.sh
这里可以参考:
保存-》立即构建。成功后看你保存war包的地方有没有。项目有没有启动即可。
如果执行脚本遇到:
/tmp/jenkins550075740095459023.sh: line 50: ./startup.sh: Permission denied 标识没有权限执行.sh文件
解决:
#进入到tomcat的bin目录下执行
chmod u+x *.sh
这里的u 这里指文件所有者,+x 添加可执行权限,*.sh表示所有的sh文件。
就表示对当前目录下的*.sh文件的所有者增加可执行权限
结束************************************************************************
放其他机器:
3.11.1 先到系统管理-》系统配置-》拉倒最下面 找到Publish over SSH 下面新增
填写:SSH server
name: 名称自定义
hostname: 机器ip
username: 机器的账号
Remote Directory:要将文件推送到机器的具体路径
再点高级:勾选 Use password authentication, or use a different key
填写:Passphrase / Password 密码
拉倒最下面:点击Test Configuration 出现success就算成功了;
3.11.2 回到项目-》配置 Post Steps
下拉选项,选择Send files or execute commands over SSH
SSH Server :
name:选择你要推送的服务器
点高级 Verbose output in console 勾选这个 这是控制台输出 推送的日志
Transger Set:
Source files: 需要上传的文件(注意:相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)例如项目叫/help-pay-server 但是jar包在help-pay-business/target/help-pay-business.jar下;所以这里需要填写 help-pay-business/target/help-pay-business.jar
Remove prefix:需要移除的前缀,一般都是/项目名/“下级目录” 例如此处:help-pay-business/target/help-pay-business.jar 如果只复制文件,这里就填写help-pay-business/target/
Exec command:就是把文件推送后要执行的命令