结合资料,自己梳理的一个大致流程。这里我没有使用docker容器;Gitee、GitHub、GiLab三者使用类似,我这里以Gitee为例。
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。官网: http://jenkins-ci.org/
Jenkins的特征:
开源的Java语言开发持续集成工具,支持持续集成,持续部署。
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
yum install java-1.8.0-openjdk* -y
JDK的安装路径为:/usr/lib/jvm
yum install git -y
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目
1.mavne官网下载tar.gz的包
官网地址:https://archive.apache.org/dist/maven/maven-3/3.6.2/binaries/
2.上传服务器解压缩,移动并重名文件夹
tar -xzf apache-maven-3.6.2-bin.tar.gz # 解压缩命令
具体效果看下图
mavne的路径:/usr/local/maven
3.新建mavne的仓库地址
maven仓库路径:/usr/local/maven/repo
4.编辑mavne的配置文件:修改仓库地址以及更换阿里的镜像地址
vim /usr/local/maven/conf/settings.xml
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
1.打开系统环境配置文件
vim /etc/profile
2…在配置文件中,添加如下配置
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk #jdk路径
export MAVEN_HOME=//usr/local/maven # maven路径
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
source /etc/profile #配置生效
mvn -v #查找Maven版本
1.tomcat官网下载tar.gz的包
官网地址:https://tomcat.apache.org/download-80.cgi
2.上传服务器解压缩,移动并重名文件夹
tar -xzf apache-tomcat-8.5.78.tar.gz # 解压缩命令
具体效果看下图
3.配置阿里云安全组8080端口
如果服务器防火墙打开的,还要在服务器打开8080端口。我的服务器防火墙是关闭的,所以这里就不用进行打开防火墙8080端口的相应操作
4.进入Tomcat的bin目录启动tomcat
./startup.sh
最后输入相应的IP地址+8080端口就可以访问了,看到下图的猫就成功了
5.配置tomcat环境变量
vim /etc/profile
source /etc/profile
配置好后就可以在任意的路径下使用 startup.sh 命令启动了
6.配置tomcat管理员账号
这里需要配置tomcat的管理员账号的原因:简而言之,就是让Jenkins有权限发布项目到tomcat服务器中,这里所配置的tomcat管理员账号将用于后面jenkins发布项目到tomcat的一个凭证
默认情况下Tomcat是没有配置用户角色权限的
进入后是没有权限访问的页面
编辑tomcat-users.xml文件,添加管理员账号
vim /usr/local/tomcat/conf/tomcat-users.xml
内容如下:
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
tomcat-users>
用户和密码都是:tomcat
注意:为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
注释掉这行代码
之后重启Tomcat进入管理员界面登录刚刚配置的账号就可以了
5.配置tomcat开机自启动
在 /usr/lib/systemd/system/ 路径下,新建 tomcat.service文件,写入如下代码:
vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动服务
systemctl daemon-reload
systemctl start tomcat.service
systemctl enable tomcat.service # 开机自启
相关指令
# systemctl start tomcat.service 启动tomcat
# systemctl status tomcat.service 启动并查看详细启动信息
# systemctl restart tomcat.service 重启tomcat
# systemctl stop tomcat.service 关闭tomcat
# systemctl enable tomcat.service 开机自启
# systemctl disable tomcat.service 禁用开机自启
官网地址:http://mirrors.jenkins-ci.org/redhat/
我选择的是:jenkins-2.344-1.1.noarch.rpm
rpm -ivh jenkins-2.344-1.1.noarch.rpm
Jenkins的安装路径:/var/lib/jenkins
vim /etc/sysconfig/jenkins
修改内容如下: JENKINS_USER=“root” JENKINS_PORT=“8888”
systemctl start jenkins
这里有个问题:我们按照第四步的操作修改端口后,我们可以看到下图启动后,查看Jenkins的状态,可以看到端口还是8080
解决办法:在 jenkins 加载目录中修改端口
# 进入目录
cd /usr/lib/systemd/system
vim jenkins.service
# 或者
vim /usr/lib/systemd/system/jenkins.service
# 修改为想要的端口
Environment="JENKINS_PORT=8889"
# 重新加载配置文件
systemctl daemon-reload
然后启动并查看Jenkins状态,我们看到端口已经成功改过来了
# 重新加载
systemctl daemon-reload
# 启动
systemctl start jenkins
# 查看状态
systemctl status jenkins
打开浏览器访问 http://ip:8888
注意:我的服务器把防火墙关闭了,只需要打开阿里云安全组的888端口就可以了,如果开启防火墙,需要在防火墙添加端口
访问后首页先出现如下的页面
我们按照提示在服务器输入相应的命令即可获得初始密码:9058fdcd0e2d4c4783c6b77fe6ae80da
跳过插件安装
添加一个管理员账户,并进入Jenkins后台
进入Jenkins主页
sudo /sbin/chkconfig jenkins on
为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件
这个插件主要是让我们能够构建Pipeline项目用的
安装插件后,创建项目的时候多了“流水线”类型
这个插件主要是让我们看到后期部署流水线项目的时候每个阶段的运行时间和状态
效果图如下
如果没有安装这个插件,效果图如下
Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现
Jenkins->Manage Jenkins->Global Tool Configuration
Jenkins关联JDK和Maven
Jenkins->Manage Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:
指定JDK的JAVA_HOME即可
Jenkins->Manage Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:
同理指定MAVEN的MAVEM_HOME
Manage Jenkins->Configure System->Global Properties
添加三个全局变量JAVA_HOME、M2_HOME、PATH+EXTRA
- JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk
- M2_HOME: /usr/local/maven
- PATH+EXTRA: $M2_HOME/bin
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
添加凭证
可以添加的凭证有5种:
Username with password:用户名和密码
SSH Username with private key: 使用SSH用户和密钥
Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
Certificate:通过上传证书文件的方式
常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)
gitee凭证:用于Jenkins拉取gitee的项目代码
使用root用户生成公钥和私钥
ssh-keygen -t rsa
在/root/.ssh/目录保存了公钥和私钥
id_rsa:私钥文件
id_rsa.pub:公钥文件
获取id_rsa.pub文件中的公钥字符串,复制到相应位置
进入配置凭证页面,类型为"SSH Username with private key",把刚才生成私钥文件内容复制过来
编辑后完成后,点击保存
tomcat凭证:用于Jenkins部署项目到tomcat服务器
我这里先配置了,也可以后面用到再进行配置
配置完成后,我们就可以得到两个全局凭证了
Jenkins中自动构建项目的类型有很多,常用的有以下三种:
自由风格软件项目(FreeStyle Project)
Maven项目(Maven Project)
流水线项目(Pipeline Project)
推荐使用流水线类型
这里我们使用Pipeline脚本进行部署
Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
我们使用Scripted脚本式Pipeline
三个阶段:拉取代码阶段;构建项目阶段;发布项目阶段
node {
def mvnHome
stage('pull code') {
echo 'Hello World'
}
stage('build project') {
echo 'Hello World'
}
stage('publish project') {
echo 'Hello World'
}
}
接下来我们使用下方箭头的脚本生成器生成相应的脚本即可
最后赋值三个阶段的脚本到相应的位置即可
1.点击Build Now
2.查看控制台输出
访问tomcat
到此为止,Jenkins手动部署项目已经全部结束!
刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放在项目中
1.在项目根目录建立Jenkinsfile文件,把内容复制到该文件中
2.把Jenkinsfile上传到Gitlab
push工程到Gitee
3.在Jenkins的项目配置中引用这文件
这里建议文件名称就好 Jenkinsfile
然后保存,最后自己测试一下用配置文件能否部署项目成功即可
我这里使用的是Gitee作为代码仓库,所以Jenkins中只需要安装Gitee的插件即可
如果你使用的是GitLab作为你的代码仓库,那么这里需要两个插件:Gitlab Hook和GitLab
废话不多说,我们接下来进行安装插件
安装完插件后,我们进入Jenkins项目的配置中
在上图中给了一个URL地址和密码(密码需要生成),这两个参数时需要我们后面配置在gtiee的web hook中的
保存成功后进行测试
Gitee中查看测试结果
Jenkins中查看测试结果
我们自己在本地修改一下代码内容,然后提交,试试能不能自动部署
查看Jenkins后台
最后我们浏览器访问一下项目
完结撒花!!!