• 使用 jenkins 自动化部署应用(写给新手的)


    jenkins官网: https://jenkins.io/

    jenkins.war 的下载地址
    链接:https://pan.baidu.com/s/1fhlnxpkQwwkIzurGdrqEiA
    提取码:nn32

    准备环境

    • linux 服务器一台 (version: 7.4 ,bit: 64)
    • 服务器安装好 JDK (version: 1.8 ,bit: 64)
    • 服务器安装好 tomcat (version: 8.0.52)
    • 服务器安装好 maven (version: 3.5.0)
    • 服务器安装好 svn git (两个选一个安装,我这里以svn为例)
    • 将下载好的 jenkins.jar 放到 ./tomcat/webapps/ 目录下,并启动 tomcat (jenkins.war可以去官网下)

    请保证上述环境都已准备完毕…

    登录jenkins

    启动 tomcat 后,在浏览器输入:localhost:8080/jenkins (我的tomcat使用的是 8080 端口)
    在这里插入图片描述
    jenkins第一次启动时会将密钥存在一个文件中,当第一次登录时,需要进行验证。我们将页面中提示的路径打开,将里面的内容填入图中的文本框中,然后我们点 Continue 
    在这里插入图片描述
    初始化中,让子弹飞一会~ 
    在这里插入图片描述
    这个页面提示你安装一些插件,左边是 jenkins 推荐安装的插件,右边是告诉你可以自已选择哪些装。
    Tips: 如果没有特别要求,可以选择左边的窗口,后期需要安装其它插件的话,也可以再到 jenkins 页面安装
    在这里插入图片描述
    楼主这里选择左边 jenkins 推荐的一些插件,如图上,正在安装中…
    Tips: 这个过程需要联网!
    在这里插入图片描述
    创建一个超级管理员用户,信息请自行填写。Tips: 后续登录 jenkins需要使用到的登录信息
    在这里插入图片描述访问 jenkins 的路径配置,如果无特殊要求,默认就好。
    在这里插入图片描述
    jenkins 已经准备就绪,我们点 start using jenkins 就可以看到它的管理界面了
    在这里插入图片描述

    安装Maven插件

    jenkins第一次创建 maven项目,需要先安装maven插件,否则在创建项目的时候没有 构建Maven项目 这一选项

    在主页面选择 系统管理,再选择 插件管理
    在这里插入图片描述
    在输入框中输入:Maven Integration,勾选,并安装它
    在这里插入图片描述

    配置全局环境

    在主页面选择 系统管理,再选择 全局工具配置,我们进行,jdk、maven 的配置
    以下配置的路径全都是服务器该软件的安装路径,请不要配置错
    在这里插入图片描述
    在这里插入图片描述

    创建一个maven项目

    在主页面选择 New任务,开始创建一个项目,并在弹出的页面方框中输入你的项目名称,输入名称后,我们选择 “构建maven项目”,点 OK,进入下一步。
    在这里插入图片描述

    简单的说一下,如何让当前项目与你 svn 或 git 上的代码进行关联
    1. 在下图中选择 Git 或 Subversion (我以svn为例,git差不多)
    2. Repository URL 中 输入你的代码地址
    3. Credentials 是拉这个代码需要的账号和密码,点击右边的 Add可以添加(只需要输入username 和 password 这两项就行了)
      在这里插入图片描述
    这里不得不提一下 Build Triggers,有时候项目需要自动触发,比如说提交代码后触发、定时触发等等,都需要在这里配置。

    这里留个todo,有时间我一定会补上!
    在这里插入图片描述

    指定项目的构建信息
    1. Root POM 指定项目的 pom.xml 的路径
    2. Goals and options 指定构建时所附加的参数
    clean install -Pprod -Dmaven.test.skip=true
    clean install 是maven的常用命令,不再解释
    -P 是指定启动的环境,我所指定的是prod,表示加载 application-prod.yml 里面的配置(多配置前面博客中有提到)
    -Dmaven.test.skip 指在编译、打包时不执行测试用例,也不编译测试用例类
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    执行自定义的脚本

    jenkins 把项目构建完成后,生成的 war/jar会在 /root/.jenkins/workspace/项目名/项目名/target/ 目录下,我们利用命令将 war/jar 复制到指定目录下,然后执行 sheel脚本进行发布
    在这里插入图片描述

    BUILD_ID=DONTKILLME
    cp /root/.jenkins/workspace/offline-app-order/offline-app-order/target/offline-app-order-1.0-SNAPSHOT.jar /usr/local/projects/offline-app-order/application-temp.jar
    sh /usr/local/projects/offline-app-order/run-app.sh
    
    • 1
    • 2
    • 3
    第一行:防止 jenkins 构建完成后杀掉 sheel 进程,导致自动部署失败
    第二行:将 jenkins 打的包复制到服务器的 指定位置,并重命名为 application-temp.jar
    第三行:执行一个自己写好的 sheel 脚本(此脚本完成杀进程,重启进程的工作) - 该脚本放在本文的最后!
    
    • 1
    • 2
    • 3
    重要:配置完成后,点击 Save 将所有配置进行保存!

    构建项目

    上面的操作完成后,在主页可以看到刚创建好的项目,我们点这个项目名称,进入项目详情
    在这里插入图片描述
    点击 立即构建 按钮,开始构建项目
    在这里插入图片描述
    构建开始时,可以在左下角看到条目,也可以点开条目,看构建日志

    • 红色圆圈:构建失败
    • 蓝色圆圈:构建没问题,脚本执行也没问题,但是不保证项目能启起来 (说不定有其它服务器问题)
      在这里插入图片描述
    查看构建日志(无论怎么构建失败的,都可以进去看日志,日志里面会写的很详细)在这里插入图片描述
    最后,分享一个我服务器上的脚本(run-app.sh)
    #!/bin/sbin
    present_time=`date +%Y%m%d%H%M%S`
    echo "current time: ${present_time}"
    
    temp_jar_name=application-temp.jar
    normal_jar_name=offline-app-order.jar
    
    jar_path=/usr/local/projects/offline-app-order/
    log_file=/usr/local/projects/offline-app-order/logs/application-run.log
    
    LANG=UTF-8
    
    echo "=============== publish =============="
    echo "step 1: stop application"
    pid=`ps -ef | grep ${normal_jar_name} | grep -v grep | awk '{print $2}'`
    if [ -n "$pid" ]
    then
       echo "kill -9 ${normal_jar_name}, pid is: ${pid}"
       kill -9 $pid
    fi
    
    echo "step 2: backup application"
    #mv ${jar_path}/${normal_jar_name} ${jar_path}/${normal_jar_name}-${present_time}
    rm -rf ${jar_path}/${normal_jar_name}
    
    echo "step 3: replace application-temp.jar to application.jar"
    mv ${jar_path}/${temp_jar_name} ${jar_path}/${normal_jar_name}
    
    cd ${jar_path}
    echo "step 4: chmod application"
    if [ -f "${normal_jar_name}" ]
    then 
       echo "chmod 777 to ${normal_jar_name}"
       chmod 777 ${normal_jar_name}
    fi
    
    cd ${jar_path}
    echo "step 5: start application"
    nohup java -jar ${normal_jar_name} > ${log_file} 2>&1 &
    echo "publish is ok"
    #echo "nohup java -jar ${normal_jar_name} > ${log_file} 2>&1 &"
    
  • 相关阅读:
    1337:【例3-2】单词查找树
    1336:【例3-1】找树根和孩子
    1301:大盗阿福
    CSP-J/S 第一轮知识点选讲
    【转】C++STL各容器的操作及复杂度
    如何查看SUSE的版本信息
    野人和传教士过河问题的C语言源代码
    ubuntu如何安装软件
    Heavy Transportation POJ
    Heavy Transportation POJ
  • 原文地址:https://www.cnblogs.com/dxqNet/p/13454065.html
Copyright © 2020-2023  润新知