首页 > 其他分享 >CICD Day7、Jenkins Pipeline 常用指令及Pipeline快捷生成方式(片段生成器)

CICD Day7、Jenkins Pipeline 常用指令及Pipeline快捷生成方式(片段生成器)

时间:2025-01-08 17:12:39浏览次数:1  
标签:Pipeline 示例 CICD 生成器 echo 指令 Build stage

1、常用指令

在编写Pipeline脚本时,会涉及各种指令,这些指令用于实现构建过程中的不同功能。熟悉这些指令后,编写一个完整的Pipeline脚本将变得十分简单

1.1 sh

  • sh指令用于执行shell命令,配置示例如下
stage('Build') {
    stage {
    sh 'hostname'
    }
}
  • 在上述配置中,在构建的过程中,执行一个hostname命令以显示主机名
  • 如果需要执行多条命令或者shell脚本,可以使用三引号包裹。配置示例如下:
stage('Build') {
    stage {
    sh """
      hostname
      pwd
      ls
    """
    }
}

1.2 environment

  • environment指令用于在Pipeline中定义环境变量,这些环境变量可以在任意步骤中使用。配置示例如下:
pipeline {
    agent any
    environment {
        APP_NAME = 'portal'
    }
    stages {
        stage('Build') {
            steps {
                 echo "$APP_NAME"
            }
        }
    }
}
  • 在上述构建中,environment块定义了一个名为APP_NAME的环境变量,值为portal。在构建过程中,使用$APP_NAME引用变量,并使用echo指令输出它

1.3 parameters

  • parameters指令用于定义参数,既参数化构建。配置示例如下:
pipeline {
    agent any
    parameters {
        choice (choices: ['dev' ,'main'], description: '请选择发布的分支', name: 'Branch')
    }
    stages {
       stage('Build') {
            steps {
                echo "${params.Branch}"
            }
       }
    }
}
  • 在上述配种,parameters块定义了一个选项参数,名称为Branch,该名称将作为环境变量被公开在构建流程中。在构建的步骤中,使用${params.Branch}引用改变量,并使用echo指令输出
  • 完整的配置示例如下:
pipeline {
    parameters {
        choice (choices: ['dev' ,'main'], description: '请选择发布的分支', name: 'Branch')
    }
    agent {
        kubernetes {
            yaml '''
              apiVersion: v1
              kind: Pod
              metadata:
                labels:
                  app: jenkins-slave
              spec:
                containers:
                - name: jnlp
                  image: uhub.service.ucloud.cn/librarys/jenkins/inbound-agent:latest-jdk21
                  args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']

            '''
        }
    }
    stages {
        stage('Build') {
            steps {
                echo "${params.Branch}"
                echo  'Build...'
            }
        }
        stage('Test') {
            steps {
                echo  'Test...'
            }
        }
        stage('Deploy') {
            steps {
                echo  'Deploy...'
            }
        }
    }
}
  • 点击保存后刷新页面,可以看到Build变成了 Build with Parameters
    image

image

1.4 triggers

  • triggers指令用于定义触发器,既自动触发构建的条件,如定时触发、代码变更时触发等。配置示例如下:
pipeline {
    agent any
    triggers {
        pollSCM '* * * * *'
    }
    stages {
         stage() {
             steps {
             echo "Building......"
             }
        }
    }
}
  • 在上述配种,triggers块定义了一个pollSCM触发器,表示每分钟检查一次代码仓库是否有变更

1.5 when

  • when指令用于定义在特定条件下执行某个阶段或步骤。配置示例如下:
pipeline {
    agent any
    stages {
        stage('Build') {
            when {
                expression { return params.BUILD_DEV == 'dev' }
            }
            steps {
                echo "Building in dev environment..."
            }
        }
    }
}
  • 在上述配置中,Build阶段使用了when指令,表示只有当参数BUILD_DEV的值为dev时,才执行下面的步骤

1.6 script

  • script指令用于在Pipeline中执行一段Groovy脚本,这样可以实现更复杂的逻辑,如条件判断、循环等。配置示例如下:
pipeline {
    agent any
    stages {
        stage() {
            steps {
                script {
                    def colors = ['red', 'blue', 'orange']
	                for (def color in colors) {
                       if (color == 'blue') {
                           echo 'blue'
                        } else {
                            echo color
                        }
                    }
                }
            }
        }
    }
}
  • 在上述配置中,script块执行了一段Groovy脚本,其中包含了一个基本的数组遍历和逻辑判断

1.7 post

  • post指令用于在Pipeline执行结束后执行一些操作,如通知、清理等。配置示例如下:
pipeline {
    agent any
    stages {
        stage ('Build') {
            steps {
                echo "Building..."
            }
        }
    }
    post {
        always {
             echo 'Pipeline completed'
        }
        sucess {
            echo 'Pipeline success'
        }
        failure {
            echo 'Pipeline failed'
        }
    }
}
  • 在上述配置中,post模块定义了根据构建状态执行相应的操作,具体如下:
    • always:在Pipeline执行完成后,无论成功与否都会执行
    • success:在Pipeline执行成功时执行
    • failure:在Pipeline执行失败时执行

2 片段生成器

Jenkins片段生成器是一个强大工具,可以帮助用户以图形界面的方式生成Pipeline脚本的代码片段

在Pipeline脚本下方,单击 Pipeline syntax进入片段生成器页面,如下图所示
image

在 Sample Step列表中选择需要生成的功能后,下方会显示相应的图形页面,配置完成后,单击Generate Pipeline Script按钮生成对应的代码片段,可直接将其复制到Pipeline脚本中以供使用。如下图所示
image

  • Jenkins还提供了一个专门为声明式语法风格设计的生成器,名为Declarative Directive Generator(声明式指令生成器),主要用于生成Pipeline指令的代码片段。如下图所示
    image

  • 通过这两个生成器,用户可以很轻松地编写Pipeline脚本,减少手动编写的工作量,提高工作效率

标签:Pipeline,示例,CICD,生成器,echo,指令,Build,stage
From: https://www.cnblogs.com/suyj/p/18660143

相关文章

  • CICD Day6、基于kubernetes动态创建代理
    Jenkins支持基于kubernetes动态创建代理,使代理程序能够运行在Pod中,这种方法可以根据构建任务的变化动态的增减代理,充分利用kubernetes的特性,为分布式构建提供灵活的运行环境如下图所示当项目触发构建时,Jenkins会调用kubernetesapi创建一个专用的pod作为从节点,在该pod执行......
  • 使用Python创建文件夹结构生成器
    在本文中,我们将探讨如何利用Python的wxPython库来创建一个图形用户界面(GUI)应用程序,该应用程序允许用户通过简单的文本输入来创建复杂的文件夹结构。这个程序将包括一个文本框用于输入文件夹结构描述,一个按钮来触发结构创建过程,以及一个目录选择器来指定目标文件夹。C:\pyth......
  • Python 中的迭代器与生成器、列表与元组的区别、作用域与命名空间的关系、异常处理机
    引言在Python的面试中,除了基础知识,还经常会涉及到一些稍微复杂的概念与问题。这篇文章将继续为大家分析一些高频Python面试题,帮助你更好地准备面试,提升自己的技术能力。......
  • CICD Day5、Jenkins pipline
    在创建web-demo项目的时候,使用的是freestyleproject自由风格项目类型。此外,jenkins还提供了pipline项目类型(又称流水线),它具有以下特点:基于代码的描述:通过代码描述整个构建过程,pipline脚本可以被存储在代码仓库中进行版本管理。团队成员还可以通过查看脚本来了解整个软件交付......
  • CICD Day4、Jenkins主从架构
    Jenkins主从架构(Master-Slave)是一种分布式架构,主节点负责管理项目配置、任务调度和监控,从节点用于执行具体的构建任务。Jenkins主从架构如下图所示 当项目触发构建时,主节点将任务分配到某个从节点,从节点根据项目配置执行一系列操作,如拉取代、代码编译、部署到目标服务器等......
  • CICD Day3、Jenkins参数化构建
    Jenkins参数化构建是一项功能,允许在出发构建时通过制定参数来动态配置和定制构建任务。这种灵活使得一个构建流程可以使用不同的配置进行,从而使用不同的场景需求参数构建支持多种参数类型,如下所示:BooleanParameter(布尔值参数):true或者false,可用于开启或关闭某些构建步骤Choi......
  • 智能驾驶——11.03 摄像头图像处理Pipeline
    0Preface    前文<摄像头传感器基本概念>已经提到摄像头数据通过<摄像头传感器接口>传输到AD域控制器中,进行进一步的数据处理并提供给算法进行环境识别也就是“感知”环节。摄像头数据进入SOC后有一套流水线进行图像数据处理,SOC设计采用的图像芯片IP不同,所以参与图像......
  • 6.1 LALRPOP's lexer generator LALRPOP 的词法分析器生成器
    ThisexampledivesabitdeeperintohowLALRPOPworks.Inparticular,itdivesintothemeaningofthosestringsandregularexpressionthatweusedintheprevioustutorial,andhowtheyareusedtoprocesstheinputstring(aprocesswhichyoucancont......
  • 使用 Python 的 yield 创建生成器函数
     Python中的yield关键字将常规函数转换为生成器,它可以按需生成一系列值,而不是一次性计算所有值。Python函数并不总是有返回语句。生成器函数是用yield关键字代替return的函数。这些函数产生生成器迭代器,它是表示数据流的对象。迭代器所代表的元素只有在需要时才会被创......
  • 【语法】生成器
    python中的推导式、生成器_python生成器推导式-CSDN博客“”“生成器应用的场景是在大数据的范围中使用,切记不可直接用for遍历所有,可能无法短时间内获取所有数据”“”使用yield来实现生成器,并使用next进行激活1,__next__()&next()的区别__next__()是生成器对象......