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”,可查看构建日志,如有报错可以看到;
|