Jenkins配置详解

Jenkins一键部署思路与实现

  • 从版本管理工具(SVN、Git)拉取最新代码到中间服务器(Jenkins服务器)

  • 代码在中间服务器编译打成war包

  • 把war包复制到目标服务器临时位置

  • 将临时位置的war包利用 .sh 脚本复制到指定的tomcat下 并启动服务

    目标服务器是指 : war包运行的服务器

部署Java

1、新建任务

在Jenkins控制台新建任务,输入新建的任务名称,然后选择“构建一个自由风格的软件项目”,点击OK。

2、实现部署

2.1、Generl

不进行操作

2.2、源码管理

选择Subversion

Repository URL : SVN的地址@HEAD @HEAD获取最新本版代码

Credentials :凭证,赋予访问SVN仓库的用户

Local module directory :选填

2.3、构建触发器

不进行操作

2.4、构建环境&构建

clean package -Dmaven.test.skip=true 打包并且跳过测试

此时已经在中间服务器中将拉取的文件打成war包。

2.5、构建后操作

选择 Send build artifacts over SSH

配置 SSH Server

Name : 使用的服务器 ,在系统管理-> 系统设置 -> SSH Server 点击增加配置

​ Name : 名称

​ Host Name : 主机地址

​ UserName : 使用的根地址

​ Remote Directory : 服务目录 de 地址

​ 点击“高级”设置服务器密码 链接的端口号 以及超时时间等信息 点击Test Configuration 测试链接

​ 上述几个地址就构成接下来操作的根路劲

Transfers :

​ Source files : 源文件 指本次任务中在中间服务器的war包位置

通常使用:
		**/*.war

​ Remove Prefix : 删除前缀 不填

​ Remote directory : 远程目录 是指 将中间服务器的war包复制到目标服务器指定的临时位置

​ Exec command :执行的 .sh 脚本文件的地址

点击保存

3、附: sh 文件

#!/bin/bash

export JAVA_HOME=/home/software/jdk/jdk1.8.0_162
rm -rf  /tomcat/tomcat-9-plan-report/webapps/ROOT.war
rm -rf  /tomcat/tomcat-9-plan-report/webapps/ROOT/
rm -f   /tomcat/tomcat-9-plan-report/logs/*
cp /tomcat/jenkins_files/planreport-online-war/PlanReport/target/ROOT.war       /tomcat/tomcat-9-plan-report/webapps/
rm -rf  /tomcat/jenkins_files/tomcat-9-plan-report/*

cd /tomcat/tomcat-9-plan-report/bin/


TOMCAT_PATH=/tomcat/tomcat-9-plan-report/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep /tomcat/tomcat-9-plan-report/bin | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
        echo "Will kill tomcat: $PID"
        sh "$TOMCAT_PATH/shutdown.sh"
        sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep /tomcat/tomcat-9-plan-report/bin | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
        kill -9 $PID2
        echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

sh "$TOMCAT_PATH/startup.sh"
sleep 3

PID=`ps aux | grep /tomcat/tomcat-9-plan-report/bin | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
        echo "
Restart tomcat successfully!"
else
        echo "
Fail to startup tomcat"
        exit 1
fi


解析:

3.1、删除tomcat下webapps下的文件和日志

3.2、复制文件

3.3、删除临时位置的war文件

3.4、进入tomcat的bin下

3.5、得到进程号

3.6、将进程杀掉 并停掉tomcat

3.7、启动tomcat。

部署JS

基本同上

不同点:

1、 构建环境不选

2、构建选择“执行shell”

echo $PATH
node -v
npm -v
cd code
npm install
npm run testbuild 

3、看图

部署时可能遇见的问题:

SSH: Connecting from host [jenkins]
SSH: Connecting with configuration [167] ...
SSH: EXEC: STDOUT/STDERR from command [/home/jenkins_file/planreport_online-deply.sh] ...
bash: /home/jenkins_file/planreport_online-deply.sh: Permission denied
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [167] ...
ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [126]]
Build step 'Send build artifacts over SSH' changed build result to UNSTABLE
Finished: UNSTABLE

jenkins自动化构建时,执行远程SSH时,返回错误状态码 126.

原因: 对应的.sh 脚本权限不足,修改需执行的脚本权限即可、

ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]
Build step 'Send build artifacts over SSH' changed build result to UNSTABLE

发布时,异常消息[Exec退出状态不为零。状态1.

原因:未知,解决:再次部署一遍、

-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory

原因:在window下创建的文件,后将后缀修改为.sh,因此在Linux系统中会出现文件的格式是dos,只要将文件格式修改为unix就OK了

具体操作步骤

1、查看文件格式 用vim 打开出错的文件 按 ESC键 再按shift+冒号 输入 set ff 回车 可以看见 该文件的格式 fileformat=dos
2、按shift + 冒号 输入 set ff=unix 回车 发现没反应,那就对了。
3、可以按 shift + 冒号 set ff 查看 fileformat=unix

原文地址:https://www.cnblogs.com/dyaqi/p/13153127.html