39、jenkins持续集成(二)

前言

38、jenkins持续集成(一)中,我们介绍完了基于free style的持续集成构建
接下来我们来学习pipeline实现的持续集成构建

一、pipeline简介

为什么之前已经有基于free style的持续集成了,还需要pipeline?
在基于free style的持续集成中,我们发现都是界面化的配置,而且一旦jenkins宕机了就无法修改了
而pipeline模式主要是依靠脚本化代码化的方式实现持续集成,更利于我们维护,当然相对于free style门槛更高
对于比较复杂的构建,已经我们很关心构建过程,不希望构建丢失建议使用pipeline

  • pipeline是什么
    • jenkins pipeline实际上是基于Groovy语言实现的CI/CD领域的特定语言(DSL);
    • Pipeline 支持两种语法:Declarative Pipeline(声明式)和 Scripted Pipeline(脚本式)语法
    • Declarative Pipeline 体验上更接近于我们熟悉的 travis CI的travis.yml,通过声明自己要做的事情来规范流程

二、pipeline实现持续集成

需要提前安装好pipeline插件,参考:https://blog.csdn.net/qq23001186/article/details/126372380

1 - 新建pipeline任务

  • 新建任务
    在这里插入图片描述
  • 描述根据自己需求填写
    在这里插入图片描述
  • 流水线 -> hello world
    在这里插入图片描述
  • 我们基于hello world 改造
    • stages:相当于每个阶段,如拉取代码、构建项目、部署项目
    • steps:相当于步骤
pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                echo 'pull code'
            }
        }
        stage('build project') {
            steps {
                echo 'pull project'
            }
        }
        stage('deploy project') {
            steps {
                echo 'deploy project'
            }
        }
    }
}
  • 构建
    在这里插入图片描述
    在这里插入图片描述

2 - 利用流水线语法生成脚本

3 - 将流水线语法添加到之前的任务中

  • 构建之前我们先进入pipeline-test目标新建target目录及good.txt
    在这里插入图片描述

  • 删除目标服务器之前使用free style构建传输的文件
    在这里插入图片描述

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                git credentialsId: 'gin-test-jenkins', url: 'https://github.com/qq23001186/gin_test.git'
            }
        }
        stage('build project') {
            steps {
                sh '''echo “开始构建”
                        echo “构建完成”'''
            }
        }
        stage('deploy project') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.124.51', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo “jenkins test success”', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'gin_test', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}
  • 查看构建结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


三、Jenkinsfile管理构建pipeline脚本

上面我们依然是在jenkins中使用pipeline脚本构建,如果jenkins挂掉了,而我们的pipeline脚本很重要,这就丢失了
同时我们也希望,pipeline的脚本也跟我们的代码一样有版本控制的功能

1 - git添加Jenkinsfile和传输文件

  • 在github项目的根目录下新建一个文件Jenkinsfile
    在这里插入图片描述
pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                git credentialsId: 'gin-test-jenkins', url: 'https://github.com/qq23001186/gin_test.git'
            }
        }
        stage('build project') {
            steps {
                sh '''echo “开始构建”
                        echo “构建完成”'''
            }
        }
        stage('deploy project') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.124.51', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo “jenkins test success”', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'gin_test', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}
  • 在项目中新建一个文件夹,并且新建一个文件goods.txt
    在这里插入图片描述

2 - 测试流水线

  • 流水线方式修改为:Pipeline script from SCM,指定git项目地址和Credentials
    在这里插入图片描述
  • 脚本路径:这里自动识别出来了,我们不需要更改
    在这里插入图片描述
  • 清空jenkins中workspace下的所有文件
    在这里插入图片描述
  • 删除目标服务器下的gin_test目录
    在这里插入图片描述
  • pipeline构建测试
    在这里插入图片描述
    在这里插入图片描述

四、构建触发器

1 - 其他工程构建后触发

在这里插入图片描述

在这里插入图片描述

2 - 触发远程构建

在这里插入图片描述

在这里插入图片描述

3 - 定时构建

  • 定时构建语法* * * * *;定时字符串从左到右依次为 -> 分 时 日 月 周;* 等同于H,表示任意一个合理的数;
    • 第一个*表示分钟,取值0-59,若其他值不做设定,则表示每个设定的分钟都会构建;如5 * * * * ,表示每个小时的第5分钟都会构建一次
    • 第二个*表示小时,取值0-23,若其他值不做设定,则表示每个设定小时的每分钟都会构建;如* 5 * * *,表示在每天5点的时候,一小时内每一分钟都会构建一次
    • 第三个*表示一个月的第几天,取值1-31,若其他值不做设定,则表示每个月的那一天每分钟都会构建一次;如* * 5 * *,表示在每个月5号的时候,0点开始每分钟构建一次
    • 第四个*表示第几月,取值1-12,若其他值不做设定,则表示每年的那个月每分钟都会构建一次;如* * * 5 *,表示每年的5月份,1号0点开始每分钟构建一次
    • 第五个*表示一周中的第几天,取值0-7,其中0和7代表的都是周日,若其他值不做设定,则表示每周的那一天几,每分钟都会构建一次;* * * * 5,表示每周五0点开始每分钟构建一次
  • 构建实例
    • 每天凌晨2:00跑一次:H 2 * * *
    • 每隔5分钟构建一次:H/5 * * * *
    • 每2小时构建一次:H H/2 * * *
    • 每天中午12点定时构建一次:H 12 * * *0 12 * * *(0这种写法已被H替代了)
    • 每天下午18点前定时构建一次:H 18 * * *
    • 每15分钟构建一次:H/15 * * * **/15 * * * *(这种已经被第一种替代了,jenkins也不推荐这种写法了)
    • 周六到周日,18点-23点,三小时构建一次:H 18-23/3 * * 6-7
    • 如果是每分钟都执行一次构建:*/1 * * * *,注意这里不能用H,否则触发不了

在这里插入图片描述
在这里插入图片描述

4 - 轮询SCM构建

  • 轮询SCM虽然也是基于corn的方式:但是和定时构建的区别在于,如果代码没有变更,SCM不会触发构建
    在这里插入图片描述

五、参数化pipeline构建

之前虽然我们使用Jenkinsfile的方式将构建脚本放到了git上,但是pipeline脚本中有很多参数被写死了
例如,服务器的ip地址,shell脚本提示等
我们可以使用参数化构建过程来解决这个问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 返回回来的时候按钮文字就改变了:Build with Parmeters
    在这里插入图片描述
  • Jenkinsfile修改:将之前的remoteDirectory: 'gin_test'修改为remoteDirectory: '${remote_dir}'
    在这里插入图片描述

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                git credentialsId: 'gin-test-jenkins', url: 'https://github.com/qq23001186/gin_test.git'
            }
        }
        stage('build project') {
            steps {
                sh '''echo “开始构建”
                        echo “构建完成”'''
            }
        }
        stage('deploy project') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.124.51', 
                             transfers: [sshTransfer(cleanRemote: false, excludes: '', 
                                                     execCommand: 'echo “jenkins test success”', 
                                                     execTimeout: 120000, flatten: false, makeEmptyDirs: false, 
                                                     noDefaultExcludes: false, patternSeparator: '[, ]+', 
                                                     remoteDirectory: '${remote_dir}', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/**')], 
                                                      usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jenkins是一个开源的持续集成持续交付工具。它可以帮助开发团队自动化构建、测试和部署软件。对于持续集成测试,Jenkins可以与不同的测试工具和框架集成,以实现自动化测试流程。 在Jenkins中进行持续集成测试,你可以按照以下步骤操作: 1. 安装Jenkins:首先,你需要安装并配置Jenkins服务器。你可以从Jenkins官方网站下载适合你操作系统的安装包,并按照指南进行安装。 2. 创建一个新的Jenkins项目:在Jenkins的Web界面上,你可以创建一个新的项目。选择“新建任务”,然后给你的项目命名。 3. 配置源代码管理:在项目配置中,你需要指定你的源代码存储库(如Git或SVN),以便Jenkins可以从中获取最新的代码。 4. 设置构建触发器:你可以选择不同的触发器来触发构建过程。常见的触发器包括定时触发、代码提交触发和其他项目构建触发。 5. 配置构建步骤:在项目配置中,你可以定义构建步骤。对于持续集成测试,你可以添加测试脚本或命令来运行你的测试套件。 6. 设置测试报告:在构建步骤中,你可以配置测试报告生成插件,以便在构建完成后生成和展示测试结果。 7. 配置构建后的操作:在构建完成后,你可以定义一些后续操作,如发送构建结果通知、部署构建产物等。 8. 保存并触发构建:完成项目配置后,保存配置并手动触发构建过程。Jenkins将根据你的设置自动执行构建和测试步骤。 以上是一个基本的Jenkins持续集成测试的流程。你可以根据你的项目需求和测试框架的要求进行定制化配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无休止符

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值