最近看到大佬在用jenkins部署项目,觉得很好用,想着自己也学一下,刚好在玩公众号,需要部署到linux上,所以就尝试自己用一下jenkins.
首先介绍一下jenkins:Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
简单来说,当你配置完jenkins后,它能够帮你自动化部署项目,并且可以监控变化部署.
如果不想出错请认真看,大部分的坑我都已经踩了
下面说一下我使用的环境
阿里云的轻量应用服务器 (相当于学生机,一年100+) ,点击链接直达
CentOS7
Tomcat 8.5
Maven 3.6.2
Jdk 1.8
Jenkins2.155
Git
除了CentOS7,其他的可以版本略微可以修改
如下图,我习惯建立一个文件夹存放搭建环境所需的东西(可以按照自己的喜好)
需要root权限 su root 可以切换为root用户
第一步安装jdk
在存放压缩包的目录下输入 tar -zxvf jdk-8u191-linux-x64.tar.gz
则会在当前目录下创建一个jdk-8u191-linux-x64的文件夹
然后配置环境变量
vim /etc/profile
添加如下内容:JAVA_HOME根据实际目录来,刚才存放的目录文件夹在在哪里就复制哪个路径
JAVA_HOME=/soft/jdk1.8.0_191/
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
执行命令(让配置文件生效)
source /etc/profile
查看是否安装成功
java -version
看到如下的结果则是安装成功
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
第二步安装tomcat
在存放压缩包的目录下输入 tar -zxvf apache-tomcat-8.5.35.tar.gz
则会在当前目录下创建一个apache-tomcat-8.5.35的文件夹
可以按照个人习惯修改conf下的service.xml里面的端口号
由于用的是阿里云的轻量应用服务器,如果你不开放端口号,默认8080是访问不了,所以需要去阿里云的控制台配置一下开发端口号8080,如果你改了就不用动
又由于你用的centos7 就算阿里云开发端口 你的centos7里面也要开放一下端口
----基本操作
启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
--------------
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
在centos7上输入上面这个命令,方可
之后进入tomcat的bin目录下开启tomcat,
./start.sh
之后如果访问看到这个页面则说明 tomcat 启动成功
第三步安装maven
在存放压缩包的目录下输入 tar -zxvf apache-maven-3.6.0.tar.gz
则会在当前目录下创建一个apache-maven-3.6.0的文件夹
vim /etc/profile
添加如下内容:M2_HOME根据实际目录来,刚才存放的目录文件夹在在哪里就复制哪个路径
export M2_HOME=/soft/apache-maven-3.6.0
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
执行命令(让配置文件生效)
source /etc/profile
查看是否安装成功
mvn -v
看到如下的结果则是安装成功
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /soft/apache-maven-3.6.0
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /soft/jdk1.8.0_191/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.26.2.el7.x86_64", arch: "amd64", family: "unix"
第四步部署设置jenkins
将jenkins.war包复制tomcat的/webapps 启动tomcat后
需要输入初始化管理员密码
linux 上输入 cat /root/.jenkins/secrets/initialAdminPassword 显示一堆数字和英文就是密码 复制粘贴 后 点击 continue
选中第一个之后下一步
安静的等待他安装完即可,可能需要的时间比较久,安装完成会让你创建一个用户,跟着提示来就行了
如果访问jenkins出现空白
在jenkins默认的主目录.jenkins中修改config.xml文件,修改文件下的几行
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
保存 重启tomcat 即可
为jenkis安装几个插件
搜索 Publish Over SSH、Maven Integration 下一步安装即可
设置全局工具
第五步在线安装配置Git
yum install git
有需要输入就输入y
安装完之后输入 git version
看到这个就是成功
git version 1.8.3.1
将git初始化并生成授权证书
设置用户名和邮箱,用户名和邮箱
git config --global user.name "XXXX"
git config --global user.email "XXXX@QQ.com"
生成证书
ssh-keygen -t rsa -C "XXXX@QQ.com"
提示这个就没问题了
输入 cat ~/.ssh/id_rsa.pub 复制 公钥
添加到github里面
第六步创建Job
这里这个pom文件如果有报错,看看是不是你的项目拉下来和我的不一样,我的是多了一层路径的,所以这个pom多写了一层目录
#!/bin/sh
echo "开始执行shell脚本"
# 在jenkins环境中一定要加这句话,否则这个脚本进程最后会被杀死
export BUILD_ID=dontKillMe
# 指定最后编译好的jar的存放位置
JAR_PATH=/opt/workspace/project-management
# 如果路径不存在,就创建路径
[ ! -e $JAR_PATH ] && mkdir -p $JAR_PATH
# 指定jenkins中存放编译好的jar的位置
# maven打包完的路径
JENKINS_JAR_PATH=/root/jenkins/workspace/testJenkins/testJenkins/target
# 指定jenkins中存放编译好的jar的名称(这个jar的名字和pom文件配置有关)
JENKINS_JAR_NAME=testJenkins-1.0-SNAPSHOT.jar
# 根据项目的端口号杀死进程
PORJECT_MANAGEMENT_PID=`netstat -anp|grep 8001|awk '{printf $7}'|cut -d/ -f1`
echo "输出端口号"
echo ${PORJECT_MANAGEMENT_PID}
# 进入Jenkins中编译好的jar的位置
cd ${JENKINS_JAR_PATH}
# 将Jenkins中编译好的jar复制到最终存放项目jar的位置
cp $JENKINS_JAR_PATH/$JENKINS_JAR_NAME $JAR_PATH
# 进入到存放项目jar的位置
cd ${JAR_PATH}
# 后台启动项目,并且将控制台日志输出到project-management.log中
nohup java -jar ${JENKINS_JAR_NAME} > testJenkins.log &
echo "shell脚本执行完毕"
上面的脚本运行可能会出错
如果报-bash: nohup: command not found
则移步 https://blog.csdn.net/qq_40241957/article/details/98584207
执行结果
demo地址 https://github.com/moriartyZZB/forTestJenkins
参考文章 https://www.haowenbo.com/articles/2019/07/24/1563964257491.html
有啥问题可以回复一下 看看如何解决呀~