jenkins离线安装配置(svn+maven项目)

jenkins离线安装及配置

linux在线安装及配置jenkins

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
通常与版本管理工具(SVN、GIT)、构建工具(Maven、Ant、Gradle)结合使用。

一.下载及安装

nohup java -jar jenkins.war --logfile=server.log --httpPort=8088 > server.log 2>& 1 & 

非离线状态时解决加载慢和插件安装慢的问题

  • 将谷歌地址改为百度,将更新地址改为国内地址
    切换到安装目录下的update目录,cd /root/.jenkins/update
    修改default.json(注意注意!)
http://www.google.com/改为http://www.baidu.com/
https://updates.jenkins.io/download/plugins/改为http://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
  • 修改hudson.model.UpdateCenter.xml文件<url></url>内的地址如下
    切换到安装目录下,cd /root/.jenkins/
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>

  • 浏览器打开http://[ip]:8088
    根据提示输入密码
cat /root/.jenkins/secrets/initialAdminPassword  //查询密码命令
  • 如果是非离线,等待推荐插件安装;如果是离线,则跳过,之后手动安装

二、插件安装

若安装报红色错,通过查看提示可知是缺少其他插件或者其他插件版本太低,因此需要下载相关插件。
若报黄色错误,通过提示可知已安装,需restart重启,http://[ip]:8088/restart重启

jenkins插件离线安装注意事项

  • 下载所用到的插件:publish-over-sshmaven-pluginsubversion
  • 出现错误缺少依赖插件或插件版本太低时,将缺少的或高版本的依赖插件安装后重新安装该插件
    最好下载最新版本

在这里插入图片描述

  • 出现重启提示时,在浏览器地址栏的jenkins地址后加/restart回车,然后在界面选择yes

三、配置

maven离线安装及配置

  1. 下载压缩包:http://maven.apache.org/download.cgi
    apache-maven-3.6.1-bin.tar.gz
  2. 上传apache-maven-3.6.1-bin.tar.gz到cd /usr/local,然后解压tar -zxvf apache-maven-3.6.1-bin.tar.gz
  3. 配置环境变量:vi /etc/profile
    在这里插入图片描述
  4. 使修改的环境变量生效source /etc/profile
  5. 检查mvn -v
  6. 修改仓库地址,vi /usr/local/apache-maven-3.6.1/conf/setting.xml(不修改的话默认是/root/.m2/repository)
    在这里插入图片描述
  7. 将相关依赖上传到自己的仓库(我是将本地开发环境仓库C:\Users\lg\.m2\repository内的都传了上去)

四、项目构建(maven+svn)

  1. 点击新建项目
    在这里插入图片描述
    输入项目名,构建Maven项目
    在这里插入图片描述
    点击OK,进入项目配置
    在这里插入图片描述
    2. 配置SVN
    svn地址与账密配置,其中账号密码需要通过Add按钮添加后再选择
    在这里插入图片描述
    3. build配置
    在这里插入图片描述
    4.Post Steps
    选择build成功后才运行
    在这里插入图片描述
    选择通过之前系统配置的ssh server上传jar包和执行指令
    在这里插入图片描述
    ssh publishers配置,下图配置了两个transfers set,第一个是上传文件前执行指令,第二个是上传文件并执行指令
    在这里插入图片描述
    SSH Server
  • Name:选个一个在系统设置里配置的要部署jar包的服务器名字
  • Source files:需要上传的文件(相对于工作区,可填写多个,用,分隔)
  • Remove prefix针对source files要移除的目录前缀,不指定的话会在远程目录下新建相对地址文件夹而不是直接将jar包放在远程目录下
  • Remote directory远程目录(默认会继承系统配置,也可以自己设置绝对地址)
  • Exec command:文件上传后要执行的命令,命令执行是相对于用户的根目录的(我是用的root账户,所以是相对于/root)

如果有旧的jar包,则移除

# 切换到脚本存放目录
cd /opt/hrj/jenkins_test
# 使脚本可执行
chmod a+x rm_old_jar_city5g.sh 
# 执行脚本
./rm_old_jar_city5g.sh

启动新的jar包

cd /opt/hrj/jenkins_test
chmod a+x start_new_jar_city5g.sh
./start_new_jar_city5g.sh

rm_old_jar_city5g.sh

#!/bin/sh
echo "remove old jar ..."
# 如果jar包存在,则移除旧jar包
if [ -f intelligenceinsightserver-0.0.2-SNAPSHOT.jar ];then rm intelligenceinsightserver-0.0.2-SNAPSHOT.jar;echo "remove success" ;fi

start_new_jar_city5g.sh

#!/bin/sh
echo 'stopping application....'
# 查找旧jar包启动进程号
pid=`ps -ef | grep intelligenceinsightserver-0.0.2-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
# 如果有正在运行的,则停止该进程
if [ "$pid" == "" ];then echo 'apllicationis already stop!';else echo "kill -9 的pid:"+$pid;kill -9 $pid;fi
# 等2s
sleep 2s
echo 'running jar....'
# 启动新jar包
nohup java -jar intelligenceinsightserver-0.0.2-SNAPSHOT.jar > out.file 2>&1  &
echo 'running finish'

ssh执行命令脚本的各种问题

Post Steps时需要注意的多个坑

  1. 一开始,直接执行启动./opt/hrj/jenkins_test/start_new_jar_city5g.sh脚本报错Permission denied,也即没有权限,经过多番试验没解决,发现直接将脚本里的命令拿出来放在Exec command可以运行

  2. 修改后发现,执行没问题但是nohup没有在后台启动,而是直接启动在前台,导致卡住
    在这里插入图片描述

  3. 原因是jenkins不能正常退出,通过高级设置在pty(伪中断)执行构建成功了,但是实际服务器也没有启动
    在这里插入图片描述

  4. 查找说需要用nohup 执行.sh脚本脚本才可以,所以问题又回到了最初的脚本执行权限问题

  5. 去掉之前勾选的pty,通过chmod a+x filename给脚本赋予可执行权限可解决Permission denied问题,但是又出现了.sh脚本文件的No such file or directory问题
    在这里插入图片描述

  6. 经过查找是因为.sh脚本编码问题,因为是在window下写的脚本,编码是doc,需要改为unix才可以

# 确保文件有可执行权限,给所有用户给予该文件可执行权限
chmod a+x filename
# 修改文件
vi filename
# 查看文件格式
:set ff 
# 修改文件格式
:set ff=unix 
# 保存并退出
:wq
  1. 终于成功
  2. 由于不在pty环境,所以执行脚本没加nohup也没有影响

猜你喜欢

转载自blog.csdn.net/lorogy/article/details/107338585