• Jenkins


    简介

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成

    持续集成工具

    *Jenkins是一个用 Java 编写的开源自动化软件项目。*是基于Java开发的一种持续集成工具,用于监控持续重复的工作。Jenkins 用于持续构建和测试软件项目 ,集成了各种开发生命周期过程,包括构建、文档、测试、打包、模拟、部署、静态分析等等。

    功能:

    Jenkins功能包括:

    1、持续的软件版本发布/测试项目。

    2、监控外部调用执行的工作。

    启动:

    首先保证系统中已经安装了jdk,最好是jdk1.5以上。

    第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:

    $ java -jar jenkins.war

    如果需要修改端口可以使用如下命令:

    $ java -jar jenkins.jar--httpPort=8081

    然后在浏览器中(推荐用火狐输入localhost:8081,localhost可以是本机的ip,也可以是计算机名。就可以打开jenkins

    第二种方法是用tomcat打开

    解压tomcat到某个目录,如/usr/local,进入tomcat下的/bin目录,启动tomcat

    jenkins.war文件放入tomcat下的webapps目录下,启动tomcat时,会自动在webapps目录下建立jenkins目录,在地址栏上需要输入localhost:8080/jenkins

    Jenkins 的一个流程

    在这里插入图片描述

    Jenkins 的官网:https://www.jenkins.io/

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cI07ZBOp-1660814259859)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660726770094.png)]

    中文版

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgqXQ8NH-1660814259861)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660727839904.png)]

    点击文档后的页面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EHnJSnRp-1660814259861)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660735391130.png)]

    下载Jenkins

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-546mikzW-1660814259863)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660726843068.png)]

    Jenkins 下载打包工具的地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZaZVK78E-1660814259863)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660802764272.png)]

    如果需要安装 maven 、JDK 、git 、ant 。默认是 maven

    如果从这里安装,只能Jenkins 的这页面能用,系统是不能用的。所以一般安装软件直接在主机上安装。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yVxFbrb0-1660814259865)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660802807121.png)]

    Jenkins 打包、发布

    系统平台IP主机名
    centos8/redhat8192.168.229.148node1
    centos8/redhat8192.168.229.150node2

    在node1 主机打完包之后使用 scp 传送到 node2

    node1 跑Tomcat 跟Jenkins 、 node2 跑Tomcat。 然后在node1 打包完之后再传到 node2 ,然后使用 node2 的IP加端口访问是否能访问到。

    node1 我已部署Tomcat跟 Jenkins 如有不懂请看我另一篇文章 http://t.csdn.cn/g8HK4

    node2 部署Tomcat过程 在这篇文章里 http://t.csdn.cn/g8HK4

    在node1上操作

    ## 首先先用命令行的方式进行打包看是否能打包,再用Jenkins 的方式打包。
    ## 下载 git 命令
    [root@node1 ~]# dnf -y install git
    
    ## 使用git 命令拉取下来 。。 如果是私有的就需要登录账号跟密码,才能拉取
    [root@node1 ~]# git clone https://github.com/chendao2015/tomcat-java-demo.git
    Cloning into 'tomcat-java-demo'...
    remote: Enumerating objects: 549, done.
    remote: Counting objects: 100% (3/3), done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 549 (delta 0), reused 2 (delta 0), pack-reused 546
    Receiving objects: 100% (549/549), 5.08 MiB | 1.09 MiB/s, done.
    Resolving deltas: 100% (213/213), done.
    [root@localhost ~]# ls
    anaconda-ks.cfg  
    tomcat-java-demo  ## 拉取好了
    
    [root@node1 ~]# cd tomcat-java-demo/
    [root@node1 tomcat-java-demo]# ls
    db  Dockerfile  LICENSE  pom.xml  README.md  src
    
    ## 使用 pom.xml 打包的
    ## build.xml 使用 ant打包的
    
    进行打包
    
    [root@node1 tomcat-java-demo]# mvn clean package -Dmaven.test.skip=true
    ......打包过程省略N
    
    打包完成后会看到 有target 目录
    [root@node1 tomcat-java-demo]# ls
    db  Dockerfile  LICENSE  pom.xml  README.md  src  target
    
    进入 target 目录
    [root@node1 tomcat-java-demo]# cd target/
    [root@node1 target]# ls
    classes  generated-sources  ly-simple-tomcat-0.0.1-SNAPSHOT  ly-simple-tomcat-0.0.1-SNAPSHOT.war  maven-archiver  maven-status
    
    
    ## 使用 scp 命令传到 node2 主机的 /usr/local/tomcat/webapps 的下面
    [root@node1 target]# scp ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.229.150:/usr/local/tomcat/webapps/
    The authenticity of host '192.168.229.150 (192.168.229.150)' can't be established.
    ECDSA key fingerprint is SHA256:BSCsrBDXmOy0vQCzkxthvFwA+8EIkoMVyeVV45QrFdM.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.229.150' (ECDSA) to the list of known hosts.
    root@192.168.229.150's password:
    ly-simple-tomcat-0.0.1-SNAPSHOT.war              100%   17MB 117.4MB/s   00:00
    
    
    ## 在 node2 上查看
    [root@node2 webapps]# pwd
    /usr/local/tomcat/webapps
    [root@node2 webapps]# ls
    ly-simple-tomcat-0.0.1-SNAPSHOT  ly-simple-tomcat-0.0.1-SNAPSHOT.war
    ## 已经传过来 访问以下
    
    
    ## 设置免密登录
    [root@node1 ~]# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:Gy5a/XPsjBCOipQnI25IbAiproNG0yahSkSHEICDSzI root@node1
    The key's randomart image is:
    +---[RSA 3072]----+
    |O..              |
    |E+ .             |
    |+=.              |
    |+o               |
    |B o     S        |
    |+O +   = +       |
    |@ O . + *  .     |
    |** = + . o.oo    |
    |=o. o     o+o    |
    +----[SHA256]-----+
    [root@node1 ~]#
    [root@node1 ~]# ssh-copy-id root@192.168.229.150
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@192.168.229.150's password:
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@192.168.229.150'"
    and check to make sure that only the key(s) you wanted were added.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    node2 主机访问

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JajQP8zu-1660814752724)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660808870269.png)]

    这时可以使用 Jenkins 操作了,创建一个项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YHdmIQC-1660814259868)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660809225243.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dgs602lu-1660814259870)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660812159335.png)]

    点击确定后的页面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mAO6mHrk-1660814259872)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660809851075.png)]

    脚本内容

    pipeline {
        agent any 
        stages {
            stage("pull code"){
                steps {
                    git 'https://github.com/chendao2015/tomcat-java-demo.git' ## 注意:如果是私有仓库还要添加账号跟密码
                }
            }    
            stage("make pkg"){
                steps {
                    sh """
                        mvn clean package -Dmaven.test.skip=true
                    """
                }
            }  
            stage(publish){
                steps{
                    sh """
                        scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.229.150:/usr/local/tomcat/webapps/
                        ssh root@192.168.229.150 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'
                    """
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    注意:在执行之前需要设置免密登录

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vQIrsl6l-1660814259874)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660810042780.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-icUdVDeE-1660814259875)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660810754960.png)]

    node2 操作

    [root@node2 ~]# cd /usr/local/tomcat/webapps/
    [root@node2 webapps]# ls
    ly-simple-tomcat-0.0.1-SNAPSHOT  ly-simple-tomcat-0.0.1-SNAPSHOT.war
    
    • 1
    • 2
    • 3

    node2 访问

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1dy3eAEM-1660814259877)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660812622288.png)]

    其实上面的脚本代码还可以优化的

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nvp9pvo7-1660814259878)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660813961698.png)]

    /opt/test1.sh 脚本内容

    [root@node1 ~]# cat /opt/test1.sh
    #!/bin/bash
    
    cd /opt/
    git  clone 'https://github.com/chendao2015/tomcat-java-demo.git'  ## 拉取代码
    cd /opt/tomcat-java-demo
    mvn clean package -Dmaven.test.skip=true && \  ## 打包
    scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.229.150:/usr/local/tomcat/webapps/  ## 使用scp 命令把打包好的东西传到node2主机的指定位置上
    ssh root@192.168.229.150 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    redis 集群 底层原理以及实操
    第二课第二周第1-5节-基于树的模型用于医学预后
    非小细胞肺癌靶向用药整理
    (算法设计与分析)第三章动态规划-第一节3:动态规划之使用“找零钱”问题说明最优子结构如何解决
    swin-transformer初步理解
    lintcode 1489 · 最大矩阵边界和 【前缀和数组 中等 vip】
    QT=> 父界面设置背景图,子界面不受影响解决方案
    NPDP值得产品经理学习吗?
    【pytorch】多GPU同时训练模型
    Reactive UI -- 反应式编程UI框架入门学习(一)
  • 原文地址:https://blog.csdn.net/m0_58805648/article/details/126410124