目录

Jenkins运维之路初识流水线

Jenkins运维之路(初识流水线)

1.初次使用流水线

前面我们用自由风格的流水线进行了项目部署,但是自由风格的流水线只能应付一些简单且项目规模不是很大的部署。为了让流水线能够灵活、通用、逻辑清晰且更加容易维护,现在一般企业都是采取使用了Pipeline的方式来对流水线进行构建,从这里起应该就是我从企业部署流水线的一个历程,另外近期需要对流水线进行改造,那么我也将改造的过程一并在后面写入。

创建Pipeline项目

https://i-blog.csdnimg.cn/img_convert/cc01ac3ceaf43438c072a3419ca88c79.png

image-20250907145013607

https://i-blog.csdnimg.cn/img_convert/cc01ac3ceaf43438c072a3419ca88c79.png

image-20250907145137214

https://i-blog.csdnimg.cn/img_convert/cc01ac3ceaf43438c072a3419ca88c79.png

image-20250907145235991

这是一条简单的流水线示例,兄弟们可以先感受下


pipeline {
    agent { node { label "node47"}}
    tools {
        git 'Git'
        maven 'maven399'
        jdk 'jdk1701'
    }
    environment {
        var1  = "var1"
        var2  = "var2"
        var3  = "var3"
      	RED = "\u001B[31m"
        GREEN = "\u001B[32m"   // 绿色
        PURPLE = "\u001B[35m"  // 紫色
        RESET = "\u001B[0m"    // 重置
    }
    options {
        // 保留构建次数
        buildDiscarder(logRotator(numToKeepStr: '5'))
        // 不允许同时执行流水线
        disableConcurrentBuilds()
        // 流水线执行的超时时间
        timeout(time: 25, unit: 'MINUTES')
        // 构建时的时间信息
        timestamps()
    }
    parameters {
        string(name: 'BRANCH_TAG', defaultValue: 'master', description: 'Enter the GF branch to checkout')
        }
    stages {
        stage('Checkout') {
            steps {
                script {
                git (credentialsId: "giteeuptest", url: 'https://gitee.com/wolfan_119/spring-boot-3-hello-world-jdk21.git', branch: "${BRANCH_TAG}")
                }
            }
        }
        stage('Build') {
            steps {
								ansiColor('xterm') { // 启用 AnsiColor
                    echo "${GREEN}项目开始构建${RESET}"
                    echo "${GREEN}环境变量$var1${RESET}"
                }
                echo "Building"
            }
        }
        stage('PullProject') {
            steps {
								ansiColor('xterm') { // 启用 AnsiColor
                    echo "${PURPLE}项目推送${RESET}"
                    echo "${PURPLE}环境变量$var2${RESET}"
                }
                sh 'echo PullProject'
            }
        }
        stage('Delpoy') {
            steps {
								ansiColor('xterm') { // 启用 AnsiColor
                    echo "${RED}项目部署${RESET}"
                    echo "${RED}环境变量$var3${RESET}"
                }
                sh 'echo Delpoy'
            }
        }
    }
    post {
        always {
            sh "echo 构建后总是执行这个步骤"
        }
        success {
            sh "echo 构建成功了执行这个步骤"
        }
        failure{
          sh "echo 构建失败了执行这个步骤"
        }
        aborted{
          sh "echo 构建取消了执行这个步骤"
        }
    }
}

参数简介

  • pipeline 用于声明流水线的标识(有声名式和脚本式2中风格,但是不用纠结这些)
  • anget 指定在那个节点执行打包流程 any代表任意节点
  • tools 指定打包工具(这里是在jenkins中配置好的,之前在工具初始化有提起过)
  • environment 环境变量,用于定义在流水线执行过程中的一些变量信息
  • options jenkins自带的一些配置项
  • parameters 参数化构建,定义一些特定的参数
  • stages stages是一个容器,用于包含多个stage。它将流水线的不同阶段组织在一起,使得整个构建过程更清晰。每个 stage 可以代表流水线中的一个主要步骤或任务。
  • stage stage是流水线中的一个单独的阶段,表示构建过程中的一个特定任务或步骤。每个 stage 可以包含一个或多个 steps,并且可以有自己的条件和环境设置。它帮助用户理解构建的不同部分。
  • steps steps是在一个 stage 中定义的具体操作或任务,它包含实际执行的命令或脚本,例如编译代码、运行测试、部署应用等。每个 step 可以是一个内置的 Jenkins 步骤或自定义的脚本。
  • post 根据流水线的执行结果(成功、失败、未稳定等)执行不同的操作,

2.执行下流水线

https://i-blog.csdnimg.cn/img_convert/e93fd71ee864350faa9ceec5b8313478.png

image-20250906233635498

https://i-blog.csdnimg.cn/img_convert/bb0fbf38b3a8a56728ed59f747d85ccf.png

image-20250906233935513

从这里看Pipeline风格流水线从可视化这里要比自由风格的流水线好很多,这些日子对公司的流水线做些改造,刚好可以一并写进来,不过更新速度可能会慢一些了!最后欢迎大家入群一起讨论运维技术,如果看不见群信息可以私聊