• Jenkins实现自动化部署--DevOps学习第四章


    一、使用Jenkins环境准备

     1.CentOS7系统,并且有maven、jdk1.8、docker
     2.gitee/github账号

    二、Jenkins拉取和配置

    1.docker拉取Jenkins镜像
    这里直接拉最新版

    docker pull jenkins/jenkins 
    
    • 1

    想拉其他版本可以去官方看看https://hub.docker.com或者用docker search jenkins

    2.启动docker并run Jenkins

    systemctl start docker
    
    • 1
    docker run -d -uroot -p 9095:8080 --name jenkins_01 --privileged=true -v /home/jenkins_home:/var/jenkins_home -v/usr/local/maven/apache-maven-3.6.3:/usr/local/maven -v /usr/loacl/java/jdk1.8.0_341:/usr/loacl/java jenkins/jenkins
    
    • 1

    -v的效果是将宿主机的数据挂载到容器中,它的机制为宿主机有数据时,以宿主机为准;宿主无数据,从容器复制过来,再以宿主机为准。:号前是宿主机的数据目录,:后是容器里的目录。你Centos7安装了jdk和maven的挂载进容器来,不然等下Jenkins配置可能会找不到这两玩意,网上说如果Jenkins和maven和jdk在同一个目录就可以不挂载,不过我没试过。
    请添加图片描述
    容器目录如果没有会自动创建,随便取个熟悉的名称就行,容器目录你要进容器里查看,你在连接宿主机的软件上是看不到的。

    以-v第一个为例,这个是宿主机目录
    请添加图片描述
    这个是容器目录
    请添加图片描述
    3.打开Jenkin,下载插件
    在浏览器输入Jenkins的ip和端口号,如果你是本地那就是127.0.0.1:端口号。出现如下画面,去该文件夹找你的密码或者直接在命令行输入cat /xxx/.jenkins/secrets/initialAdminPassword
    请添加图片描述
    选新手入门安装插件,稳
    请添加图片描述
    其他插件根据情况自行安装
    请添加图片描述
    请添加图片描述
    4.Jenkins配置
    最麻烦的就是这里了,可能会出现各式各样的问题

    ①首先弄系统配置
    请添加图片描述
    配置你jenkins的打开url,就是你在浏览器输入的那个
    请添加图片描述
    配置gitee地址,仓库管理是github、gitlab的也都同理
    请添加图片描述
    配置之前你得去你的仓管那边生成令牌,其实这玩意就相当于你免密登录仓管,这里示例gitee令牌生成
    请添加图片描述
    请添加图片描述
    这些密码账号、令牌之类的统称为凭据,可以在下图所示的地方进行管理
    请添加图片描述
    请添加图片描述

    配置ssh连接 (Publish over SSH)
    首先在宿主机生成公钥和秘钥,输入ssh-keygen -t rsa直接一直按回车就行,你想命名成其他就输入名字再按回车咯,我觉得可以但没必要。完成之后会在/root/.ssh目录下生成公钥和秘钥
    请添加图片描述
    请添加图片描述
    可以打开文件看,也可以直接到目录下用cat命令看,还有就是这个秘钥是绿色框里所有的内容,头部尾部两行不要漏了
    请添加图片描述
    回到jenkins配置ssh
    Path to key (SSH私钥的文件路径)和Key(私钥)都是配置私钥,填其中一个就行
    如果“Key”和“Path to key”都设置,则“Key”的优先级较高
    请添加图片描述
    Hostname:通过SSH连接到的机器的主机名或IP
    Username:SSH服务使用的用户名,登录时的用户名
    Remote Derictory:
    运程机器上真实存在的目录,并且“Username”指定的用户要有访问此目录的权限,如果要上传文件则传送到此目录下。
    请添加图片描述
    这里科普一下各个ip防止混淆,以及访问关系如下图所示

    docker exec -it xxxx /bin/bash  #进入容器
    cat /etc/hosts  #查看docker容器ip
    ifconfig #查看宿主机和物理机ip
    
    • 1
    • 2
    • 3

    请添加图片描述
    请添加图片描述
    弄好后回到gitee上配置公钥,标题随便取
    请添加图片描述

    ②全局工具配置
    配置JDK1.8,我建议jdk和maven都是自己下载好并配置环境变量,不要搞什么自动安装不然出了问题挺麻烦的(这里我是自己下载安装的,压缩包没删那玩意不影响配置,不用在意)
    请添加图片描述
    请添加图片描述
    配置maven
    请添加图片描述
    请添加图片描述
    其他默认就行

    三、构建项目及其配置

    1.创建自由风格项目

    听说现在挺多公司都是用流水线,理论上两个都行
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述

    2.项目配置

    ①配置git

    请添加图片描述

    ②配置构建触发器

    请添加图片描述
    请添加图片描述
    这里要去gitee上配置webhook
    请添加图片描述
    请添加图片描述
    内网穿透教程:

    https://blog.csdn.net/AsFarmer/article/details/125950939?spm=1001.2014.3001.5501
    
    • 1

    这里我做了很多种测试,如图如果请求响应时间很长又失败的那基本上就是url或者密码错了,如果时间短但失败一般是这免费的穿透器不稳定,属于正常情况;如果是200说明成功。(最近这玩意经常发癫呐真的太不稳定了,强烈建议用付费的穿透器或者自己买服务器)
    请添加图片描述

    ③配置构建步骤

    在Build Steps增加构建步骤
    请添加图片描述


    在这里插入图片描述
    我这里是用Dockerfile制作镜像然后跑起来,不用Dockerfile也是可以的,执行的命令不同而已。Dockerfile制作镜像教程
    请添加图片描述
    在这里插入图片描述

    A、Source files 是相对于/xxx/jenkins_home/workspace/的路径(xxx为你放jenkins_home的父目录)
    在这里插入图片描述
    我这边的完整路径是/home/jenkins_home/workspace/jenkins_Test/target/
    其实跟idea上打包是一样的,这边是jenkins从远程仓库(我这边是gitee)拉取代码然后执行了调用顶层 Maven 目标那里的打包命令帮你打包好放在这里
    在这里插入图片描述

    B、Remove prefix 删除前缀,比如像上图那样写Source File却不写Remove prefix的话,那么传送文件过去的时候就会自动新建一个名为target的文件夹,然后在该文件夹下存放所传送的jar包,如果写了target则只传送jar包到指定目录。

    C、Remote directory 目标目录,source的文件就是传送来这边。我这里不知道为什么用不了绝对路径(估计插件版本有问题吧不然就是jenkins抽风了),用绝对路径的时候发现确实传输的文件而且状态也是Success,但去我指定的目标目录一看却什么都没有,非常神奇。开启详细日志之后发现,它居然自己执行了cd /root,我也不知道发什么癫,于是jar我也只能放到/root目录下了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    D、Exec command 是传送完文件后执行的命令,这里的jenkins是我项目的容器名字随便取的,跟真正的jenkins没什么关系。
    每次构建先把上一次的容器停掉再删除对应的镜像,以免浪费服务器资源
    这边你可以先把Exec command里面的命令在虚拟机上自己手动执行一遍,看看有没有错

    docker stop jenkins
    docker rm jenkins
    docker rmi jenkinstest:1.0
    
    cd /root/myfile
    docker build -t jenkinstest:1.0 .
    docker run -p 8070:8070  --name jenkins -it -d jenkinstest:1.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    一般起容器可能会有错(我自己就是,不过都解决了),可以用docker logs查看报错日志
    在这里插入图片描述
    至此漫长的配置就完成了(感觉挺复杂的,用其他云的CICD比较简单,不过这边能学到很多东西)

    四、测试

    点击部署,测试自己写的接口
    在这里插入图片描述
    看嗷,我这里第一次部署测试顿号’写歪来了,现在去idea修改。
    在这里插入图片描述
    这是新代码,推到gitee上去
    在这里插入图片描述

    再次点击部署并测试接口。成功!!!
    在这里插入图片描述

    五、结语

     这次写的很详细,主要踩的坑和解决方法也写在操作中了就不单独写了,Jenkins还有其他功能我也正在摸索中,以后学会了也会继续补充到这边来。自学新的东西好累啊,不过确实能成长,在查阅相关资料的时候知识的广度也会不断扩展。

    补充:
     jenkins部署的时候,不要以为变绿了就是成功了,只是编译能通过而已,具体要求看他的控制台输出的日志,就像你打的代码能跑起来,但是功能未必如你想要的那样。如下图,虽然是状态是成功,但传输了0个文件,那肯定是不行的。这种情况一般是Source File 路径写错了,参考上边写的配置步骤很好解决的。
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    元宇宙是否为噱头?若不是,什么是元宇宙?他的概念、技术、应用和影响是什么?
    Linux-Cgroup V2 初体验
    C# 实现迷宫游戏
    Vue08/Vue 路由重定向、Vue路由404页面、Vue路由hash history
    Proxmox VE 彻底删除本地存储
    rabbitMQ 中三种常用交换机:direct、topic、fanout的使用以及区别和queue消息的Ack,Nack ,Reject 消息类型
    【深入理解设计模式】单例设计模式
    加速推进企业信息化建设,SRM采购系统赋能建筑工程产业生态链实现数字化转型
    动态规划(树形dp)
    Linux学习笔记6 - 系统启动流程
  • 原文地址:https://blog.csdn.net/AsFarmer/article/details/125788526