• 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

  • 相关阅读:
    web.xml中的contextConfigLocation在spring中的作用
    folder、source folder、package 区别与联系
    mysql
    十六进制浮点转十进制浮点型
    float浮点数的二进制存储方式及转换
    API -- java.lang.Integer
    MyISAM与InnoDB区别
    mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
    刷新当前页面
    正则表达式
  • 原文地址:https://www.cnblogs.com/dyaqi/p/13153127.html
Copyright © 2020-2023  润新知