赞
踩
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
通常与版本管理工具(SVN、GIT)、构建工具(Maven、Ant、Gradle)结合使用。
jenkins离线安装及配置可见linux在线安装及配置jenkins
nohup java -jar jenkins.war --logfile=server.log --httpPort=8088 > server.log 2>& 1 &
非离线状态时解决加载慢和插件安装慢的问题
cd /root/.jenkins/update
http://www.google.com/改为http://www.baidu.com/
https://updates.jenkins.io/download/plugins/改为http://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
<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 //查询密码命令
下载插件.hpi文件:https://plugins.jenkins.io//或http://updates.jenkins-ci.org/download/plugins/
若安装报红色错,通过查看提示可知是缺少其他插件或者其他插件版本太低,因此需要下载相关插件。
若报黄色错误,通过提示可知已安装,需restart重启,http://[ip]:8088/restart
重启
publish-over-ssh
、maven-plugin
、subversion
/restart
回车,然后在界面选择yes
可通过echo $JAVA_HOME
获得jdk安装地址
安装(离线的话需要自己配置仓库)
可通过echo $MAVEN_HOME
获得jdk安装地址
cd /usr/local
,然后解压tar -zxvf apache-maven-3.6.1-bin.tar.gz
vi /etc/profile
source /etc/profile
mvn -v
vi /usr/local/apache-maven-3.6.1/conf/setting.xml
(不修改的话默认是/root/.m2/repository)
C:\Users\lg\.m2\repository
内的都传了上去)
输入项目名,构建Maven项目
点击OK,进入项目配置
svn地址与账密配置,其中账号密码需要通过Add按钮添加后再选择
选择build成功后才运行
选择通过之前系统配置的ssh server上传jar包和执行指令
ssh publishers配置,下图配置了两个transfers set,第一个是上传文件前执行指令,第二个是上传文件并执行指令
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'
一开始,直接执行启动./opt/hrj/jenkins_test/start_new_jar_city5g.sh
脚本报错Permission denied
,也即没有权限,经过多番试验没解决,发现直接将脚本里的命令拿出来放在Exec command
可以运行
修改后发现,执行没问题但是nohup没有在后台启动,而是直接启动在前台,导致卡住
原因是jenkins不能正常退出,通过高级设置在pty(伪中断)执行构建成功了,但是实际服务器也没有启动
查找说需要用nohup 执行.sh脚本脚本才可以,所以问题又回到了最初的脚本执行权限问题
去掉之前勾选的pty,通过chmod a+x filename
给脚本赋予可执行权限可解决Permission denied
问题,但是又出现了.sh脚本文件的 No such file or directory
问题
经过查找是因为.sh
脚本编码问题,因为是在window下写的脚本,编码是doc
,需要改为unix
才可以
# 确保文件有可执行权限,给所有用户给予该文件可执行权限
chmod a+x filename
# 修改文件
vi filename
# 查看文件格式
:set ff
# 修改文件格式
:set ff=unix
# 保存并退出
:wq
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。