1.安装java jdk
1.1把下载好的jdk 上传到自己创建的目录或者指定的目录中
1.2例如自己创建一个文件夹为java 使用命令 mkdir java
1.3解压上传的java jdk 使用 jdk-8u251-linux-x64.tar.gz
1.4配置java系统环境变量- vi /etc/profile
- 在profile文件最后面加上;
- export JAVA_HOME=/java/jdk1.8.0_251
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
复制代码 1.5 重新加载环境变量
2.安装maven
2.1.1把下载好的maven上传自己创建的目录或者指定的目录中
2.1.2解压上传 maven - tar -zxvf apache-maven-3.6.3-bin.tar.gz
复制代码 2.1.3配置maven系统环境变量- vi /etc/profile
- 在profile文件最后面加上;
- export PATH=apache-maven-3.6.3-bin/bin:$PATH
复制代码 2.1.4 重新加载环境变量
3.安装Jenkins
3.1 yum库的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repos enkins的RPM仓库配置被加/etc/yum.repos.d/jenkins.repo
- #添加jenkins官方repos
- sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
- sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key #导入秘钥
- #安装jenkins
- yum install jenkins
复制代码- vi /etc/sysconfig/jenkins
复制代码 注意:找到修改端口号:JENKINS_PORT="8080" 此端口不冲突可以不修改
4.启动Jenkins- service jenkins start/stop/restart
复制代码 4.1安装成功后Jenkins将作为一个守护进程随系统启动
4.2系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者
4.3启动的时候将从/etc/sysconfig/jenkins获取配置参数
4.4默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置
5.打开jenkins界面
5.1在浏览器中访问 我的地址是这个:192.168.88.215:8080
首次进入会要求输入初始密码如下图:
初始密码在:- /var/lib/jenkins/secrets/initialAdminPassword
复制代码 选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。
创建超级管理员账号
配置完毕后前端打开的界面是这个样子的:
6.配置全局环境变量设置
6.1进入:系统管理 / Global Tool Configuration
JDK 下不勾选“自动安装”,指定别名=jdk1.8.0_215 JAVA_HOME=/usr/java/jdk1.8.0_215
6.2 Maven 配置:
Maven 下不勾选“自动安装”,指定别名=Maven-3.6.3, MAVEN_HOME=/opt/apache-maven-3.6.3
7.插件说明和安装教程
Subversion Plug-in # 版本管理 SVN 的插件
Git plugin #版本管理 GIT 的插件
Maven Integration plugin #项目构建 Maven 的插件
Publish Over SSH #实现文件上传到远程服务器
进入:Manage Jenkins / Manage Plugins / 可选插件
查找并勾选所需插件,点击“直接安装”;
无需重启 Jenkins 插件即生效。如遇失败可重试或离线安装。
8.Publish Over SSH插件配置
8.1进入:Manage Jenkins / Configure System
我是使用密码的方式进行ssh服务器,在Passphrase/Password填写对应的密码即可,还有其他四项内容如下:
Name是给sshserver自定义一个名称
Hostname是ssh服务器的地址
Username是ssh服务器的用户名
Remote Directory是需要上传文件到服务器的远程目录 直接写/即可
填写基本信息完成后可以点击Test Configuration测试下是否连接正常,信息都正确后点击应用Apply,一个ssh服务器就配置好了,剩下的就是要在项目配置的时候使用已填的ssh服务器进行操作。
9.构建项目
确定后,配置项目的源码管理,构建触发器
9.1 Module:指svn上的模块。一个任务中可以添加多个不同来源的svn模块。
注解:
Repository URL:svn代码仓库的地址。
Credentials:访问svn代码仓库所需的账号密码。进入:Manage Jenkins / Manage Credentials 中添加svn对于的账号和密码
Local module directory:svn检出到本机的文件夹路径
Repository depth:需要检出的文件夹深度,一般设为infinity(配置文件夹下的所有文件,包括子文件夹)具体说明可见插件帮助。
Ignore externals / Additional Credentials:未用到,不作说明。
Check-out Strategy:更新svn到本地的几种方式。建议使用 Use 'svn update' as much as possible, with 'svn revert' before update (先放弃所有本地修改,然后尽可能进行svn更新。避免本地修改导致本地项目与代码仓库不一致)
通过插件进行svn更新的情况,插件可提供若干参数(svn版本号及svn路径),供其它shell或插件使用,可参考官方文档(注意当配置了多个模块时的参数名命名方式):
脚本方式(Shell)
脚本方式下,只需了解svn所支持的命令列表,即可在shell中自行配置。其自由度相比插件更高,可以方便地对特殊需求进行处理。
常用命令包括:
检出 svn checkout
更新 svn update
取消本地修改 svn revert
清理本地项目 svn cleanup
向代码仓库新增文件 svn add
提交到代码仓库 svn commit
脚本方式下取得svn 版本号可以通过shell的sed命令:- build_svn_version=`svnversion ${clientPath} |sed 's/^.*://' |sed 's/[A-Z]*$//'`
复制代码 上述语句中${clientPath}为本地svn项目的根目录(即包含了.svn隐藏文件夹的目录),build_svn_version存放了取出的svn版本号。
9.2Build 设置
Root POM: 指定 pom.xml 相对路径
Goals and options: 指定 mvn 执行目标或选项,设置为
clean install -Dmaven.test.skip=true
9.3Post Steps 设置
定制构建后的操作,通常选择“Run only if build succeeds”,然后选择 Send files or execute commands over SSH
注解:
Name : 这里是自定义的ssh远程服务器,如果有多台,点击add post-build step 继续添加
Source files : 源文件地址,相对地址
Remove prefix : 忽略前缀路径
Remote directory : 远程服务器要保存的文件目录
Exec command : 直接写shell脚本,或远程服务器的脚本名称- #!bin/bash
- TOMCAT_JENKINS='/opt/tomcat/apache-tomcat-8.5.53/jenkins'
- TOMCAT_HOME='/opt/tomcat/apache-tomcat-8.5.53'
- TOMCAT_BACK='/opt/tomcat/apache-tomcat-8.5.53/back'
- PROJECT_WARNAME='obpm'
- PROJECT_WORKSPACE='WEB-INF/workspace'
- PROJECT_UPLOADS='uploads'
- TOMCAT_DATE=$(date '+%Y-%m-%d_%H:%M')
- #echo '停止Tomcat'
- Monitor(){
- echo "[$(date +'%F %H:%M:%S')]"
- #第一次检查,是否存在,然后尝试使用shutdown关闭tomcat
- tomcatPid_1=$(ps -ef|grep tomcat |grep jdk | awk '{print $2}')
- echo "Tomcat的pid为:$tomcatPid_1"
- if [ "$tomcatPid_1" ]
- then
- echo "=*=Tomcat运行正常,现在关闭,并清空缓存"
- sh ${TOMCAT_HOME}/bin/shutdown.sh
- #第二次检查,shutdown结果,然后尝试使用kill关闭tomcat
- tomcatPid_2=$(ps -ef|grep tomcat |grep jdk | awk '{print $2}')
- if [ "$tomcatPid_2" ]
- then
- kill -9 $tomcatPid_2
- #第三次检查,kill结果
- tomcatPid_3=$(ps -ef|grep tomcat |grep jdk | awk '{print $2}')
- if [ "$tomcatPid_3" ]
- then
- echo " Tomcat进程kill失败,这个基本不可能"
- else
- echo " Tomcat关闭成功For Kill"
- fi
- else
- echo " shutdown.sh停止Tomcat成功"
- fi
- else
- echo " Tomcat之前并没有启动"
- fi
-
- }
- Monitor
- #尝试清缓存/work/Catalina
- if [ ! -d ${TOMCAT_HOME}"/work/Catalina" ];
- then
- echo "/work/Catalian不存在"
- else
- rm -rf ${TOMCAT_HOME}"/work/Catalina"
- echo "/work/Catalina存在,现已删除"
- fi
- #尝试清日志
- if ![ -f ${TOMCAT_HOME}"/logs/catalina.out" ]
- then
- echo "/logs/catalina.out不存在"
- else
- cd ${TOMCAT_HOME}/logs
- rm -rf *
- echo "tomcat日志文件存在,现已删除"
- fi
- #尝试清缓存/conf/Catalina
- if [ ! -d ${TOMCAT_HOME}"/conf/Catalina" ]
- then
- echo "/conf/Catalina不存在"
- else
- rm -rf ${TOMCAT_HOME}"/conf/Catalina"
- echo "/conf/Catalina存在,现已删除"
- fi
- #echo '备份obpm.war 备份obpm'
- cp ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}.war ${TOMCAT_BACK}/${TOMCAT_DATE}.war
- cp -r ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME} ${TOMCAT_BACK}/${TOMCAT_DATE}
- #echo '删除文件'
- rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}.war
- rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}
- #echo '复制最新的项目war 到 webapps'
- cp ${TOMCAT_JENKINS}/${PROJECT_WARNAME}.war ${TOMCAT_HOME}/webapps/
- #echo '解压war'
- jar -xvf ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}.war
- #echo '删除解压后的war文件中的 workspace'
- rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}/${PROJECT_WORKSPACE}
- #echo '删除解压后的war文件中的 uploads'
- rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}/${PROJECT_UPLOADS}
- #echo '复制备份的项目 webapps 到 最新解压后的项目的webapps'
- cp -r ${TOMCAT_BACK}/${TOMCAT_DATE}/${PROJECT_WARNAME}/${PROJECT_WORKSPACE} ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}/${PROJECT_WORKSPACE}
- #echo '复制备份的项目 uploads 到 最新解压后的项目的uploads'
- cp -r ${TOMCAT_BACK}/${TOMCAT_DATE}/${PROJECT_WARNAME}/${PROJECT_UPLOADS} ${TOMCAT_HOME}/webapps/${PROJECT_WARNAME}/${PROJECT_UPLOADS}
- #echo '启动Tomcat'
- sh ${TOMCAT_HOME}/bin/startup.sh
复制代码
Source files必须配置为jar包的相对地址,此相对地址即workspace后面的地址(不包含workspace)
例如:目标文件路径是/var/lib/jenkins/jobs/xxx-web/workspace/target/xxx-web-1.1.war
那么你的
Source files的值就是target/*.war
Remove prefix就是target/
Remote directory的值取决于Jenkins -> configuration -> Publish over SSH设置中的Remote Directory参数
Jenkins -> configuration -> Publish over SSH设置中的Remote Directory参数值拼上 任务构建-> Post-build Actions 的 Remote directory参数值即为 远程服务器要保存的文件目录
9.4 手工触发构建
进入 My Views, 右侧看到各个项目;
点击进入关注的项目,点击左侧的“立即构建”;
开始构建或构建完毕后,左下方列出每次构建的链接,点击进入某次构建;
点击左侧的“Console Output”,可查看构建日志,如有报错可以看到;
|