zoukankan      html  css  js  c++  java
  • 第五章 Jenkins实现jar包自动化部署

    一、需求

    在公司内部服务器配置CI/CD,实现后端本地打包,推送到远程服务器发布运行。
    

    二、安装远程发布插件

    #1.打开浏览器,登录jenkins
    

    #2.点击系统管理,选择插件管理
    

    #3.选择可选插件,点击搜索框输入Publish Over SSH,勾选上,然后点击直接安装
    

    三、配置远程服务器连接信息

    #1.点击系统管理,选择系统配置
    

    #2.补充本地服务器密钥信息
    

    #3.点击新增,添加远程服务器信息,点击高级,勾选使用密码,填入远程服务器用户的私钥,点击Test Configuration出现Success表示配置正确。
    

    四、Jenkins添加全局凭证

    1.凭证简介

    有许多第三方网站和应用程序可以与Jenkins进行交互,例如代码仓库GitHub等。
    
    此类应用程序的系统管理员可以在应用程序中配置凭证以专供Jenkins使用。通常通过将访问控制应用于这些凭证来完成这项工作,以“锁定Jenkins可用的应用程序功能区域”。一旦Jenkins管理员在Jenkins中添加/配置这些凭证,Jenkins项目就可以使用凭证与这些第三方应用程序进行交互。
    
    Jenkins中保存的凭证可以用于:
    	1)适用于Jenkins的任何地方(即全局证书)。
    	2)特定的Jenkins项目。
    	3)特定的Jenkins用户。
    

    2.凭证分类

    Jenkins可以保存下面几种凭证:
    	1)Secret text:例如 API Token(例如GitHub的个人access token)。
    	2)Username with password:指的是登录GitHub的用户名和密码,可以作为单独的组件处理,也可以作为username:password格式的冒号分割字符串来处理。
    	3)Secret file:实际上是文件中的秘密内容。
    	4)SSH Username with private key:即使用私钥的SSH 用户名。这是一个SSH 秘钥对。公钥配置在GitHub上面,这里添加私钥。
    	5)Certificate:即证书。一个PKCS#12证书文件和可选的密码。
    	6)Docker Host Certificate Authentication:即Docker主机证书身份验证凭证。
    
    

    3.凭证安全

    为了确保安全,Jenkins中配置的凭据在Jenkins主实例中加密存储(通过Jenkins实例的ID来加密),并且只能通过它们的凭据ID在Pipeline项目中处理。
    
    这样就最大限度地减少了向Jenkins用户暴露实际证书本身的可能性,并且限制了将功能证书从一个Jenkins实例复制到另一个Jenkins实例的能力。
    
    

    4.添加凭证

    #1.Jenkins服务器生成SSH-Key
    [root@staging ~]# ssh-keygen -t rsa -C "hui.jin@dataxgroup.com"
    所有选项都是默认,一直回车即可生成。
    
    #2.查看密钥
    [root@staging ~]# ll .ssh/
    total 12
    -rw------- 1 root root 3243 Jan 19 07:57 id_rsa			#私钥
    -rw-r--r-- 1 root root  748 Jan 19 07:57 id_rsa.pub		#公钥
    
    #3.打开浏览器,登录gitlab
    
    

    #4.点击右上角设置
    
    

    #5.点击SSH密钥,填入jenkins用户公钥,写入自定义标题,点击添加密钥
    
    

    #6.回到jenkins界面,点击系统管理 --> Manage Credentials --> 全局
    
    

    #7.点击添加凭据,选择SSH Username with private key,添加自定义描述,选择jenkins登录用户,添加私钥,私钥为上面服务器生成的密钥信息,命令:cat ~/.ssh/id_rsa,最后点击确定
    
    

    #8.发现全局凭证下多了一个凭证,至此添加全局凭证结束
    
    

    五、编写执行脚本

    #1.登录远程服务器,新建后端项目存放目录
    [appdeployment@mjndev ~]$ mkdir /data/backproject/demo01/
    
    #2.编写执行脚本
    [appdeployment@mjndev ~]$ cd /data/backproject/demo01/
    [appdeployment@mjndev demo01]$ vim run.sh 
    #!/bin/bash
    BUILD_ID=DONTKILLME
    pid=$(ps -ef|grep demo-0.0.1.jar|grep -v grep | awk '{print $2}')
    
    function stop(){
    if [ -n "$pid" ]
    then
    echo "pid进程 :$pid"
    kill -9 $pid
    else
    echo "进程没有启动"
    fi
    }
    
    stop
    sleep 5s
    
    function start(){
    cd /data/backproject/demo01/ && nohup /opt/jdk1.8.0_20/bin/java -jar -Duser.timezone=GMT+08 demo-0.0.1.jar --server.port=8888 &
    exit
    }
    
    start
    
    #3.添加执行权限
    [appdeployment@mjndev demo01]$ chmod +x run.sh
    
    

    六、构建maven项目

    #1.新建视图略,点击新建任务
    
    

    #2.输入项目名称,选择构建一个maven项目,点击确定按钮。
    
    

    #3.选择源码管理,从gitlab拉取代码
    
    

    #4.选择pre steps --> Add post build steps --> 执行shell  写入脚本执行打包操作
    
    

    #5.选择post steps --> Add post build steps --> Send files or execute commands over SSH,填写下图中定义内容,最后保存退出。
    
    

    七、测试结果

    #1.点击立即构建,点击左下角正在构建的任务
    
    

    #2.选择控制台输出,查看最后状态为Success
    
    

    #3.进入远程服务器,查看是否有jar包进程
    [appdeployment@mjndev ~]$ ps -ef |grep 8888
    appdepl+  1023 24185  0 16:14 pts/6    00:00:00 grep --color=auto 8888
    appdepl+ 32216 32215  1 16:03 ?        00:00:08 /opt/jdk1.8.0_20/bin/java -jar -Duser.timezone=GMT+08 demo-0.0.1.jar --server.port=8888
    
    #4.打开浏览器,输入远程服务器ip:port/test/hz,出现想要的界面即表示成功。
    
    

  • 相关阅读:
    QGroundControl编译出错记录
    【Luogu】【关卡2-5】字符串处理(2017年10月)
    【Luogu】【关卡2-4】排序Ex(2017年10月)
    【Luogu】【关卡2-3】排序(2017年10月) 【AK】
    【Luogu】【关卡2-2】交叉模拟(2017年10月)
    【Luogu】【关卡2-1】简单的模拟(2017年10月)
    【基础】图论基础 2017/04/20
    【LeetCode】BFS || DFS [2017.04.10--2017.04.17]
    【LeetCode】排序
    【LeetCode】贪心
  • 原文地址:https://www.cnblogs.com/jhno1/p/14991586.html
Copyright © 2011-2022 走看看