小哥之哥 小哥之哥
首页
    • Prometheus
    • Kubertenes
    • Docker
    • MySQL
  • Go
  • Python
  • Vue
  • Jenkins
  • ELK
  • LDAP
  • 随笔
  • 最佳实践
  • 博客搭建
  • 问题杂谈
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

小哥之哥

运维扫地僧
首页
    • Prometheus
    • Kubertenes
    • Docker
    • MySQL
  • Go
  • Python
  • Vue
  • Jenkins
  • ELK
  • LDAP
  • 随笔
  • 最佳实践
  • 博客搭建
  • 问题杂谈
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • LDAP

  • Jenkins

    • Jenkins之Docker部署
    • Jenkins之自动化项目发布
    • Jenkins之使用ansible发布项目
    • Jenkins之pipline初识
      • Jenkins之pipline语法
      • Jenkins之钉钉通知
      • Jenkins最佳实践之为job添加构建预览信息
      • Jenkins最佳实践之webhook
    • 技术专题
    • Jenkins
    tchua
    2023-06-07
    目录

    Jenkins之pipline初识

    # 一、概述


    对于pipline流水线,一直都没有真正去实践过,虽然我们项目也有好几百个,但是由于项目的独立性,并没有去真正的做模板化的job,另一个原因也是因为是传统方式图形化UI界面,完全可以解决遇到的所有问题,也比较方便。此次主要是为了扩展知识体系,准备把pipline相关知识一点点琢磨起来。

    关于写博客或者学习新的技能知识,我一般都会先看下网上的一些资料,对于一些很实用的技能,有时候发现,大多的文章都会简单的介绍或者有头无尾。因此我慢慢也养成了查看官方文档的习惯,有的人可能会认为官方文档比较难懂,其实我们读的多了发现很多东西官方都已经很详细的介绍,我们只要耐心的去读就行,最后会发现并没有那么难动。

    关于pipline更加详细的介绍,我这边也是推荐大家按照Jenkins (opens new window)官方介绍一步一步操作,每个人都会有不一样的收获。

    img

    # 二、一个简单的例子

    这里我是参考的一个博主 (opens new window)的写作方式,先看下实际的效果,再说理论,这样可以很明确知道后续介绍的是什么。

    # 2.1 创建pipline job

    image-20230607101910224

    # 2.2 脚本配置

    这里直接选择在Jenkins界面配置相关脚本

    image-20230607102108385

    • 脚本内容
    pipeline {
        agent any
        environment {
            git_url = "https://gitee.com/shanghai_moji/supplier.git"
        }
        options {
            buildDiscarder(logRotator(numToKeepStr: '10'))
            disableConcurrentBuilds()
            timeout(time: 10, unit: 'MINUTES')
            timestamps()
        }
        stages {
            stage('清理工作目录') {
                steps {
                    cleanWs()
                }
            }
            stage('pull代码') {
                steps {
                    checkout([$class: 'GitSCM', branches: [[name: "master"]], extensions: [],userRemoteConfigs: [[credentialsId: 'bea96a6a-73a7-473d-b73b-f7bb4f769b2a', url: "$git_url"]]])
                }
            }
            stage('build(构建/CI)') {
                steps {
    				echo '我是构建步骤'
                }
            }
            stage('deploy(发布/CD)') {
                steps {
    				echo '我是发布步骤'
                }
            }
        }
        post {
            success {
                sh "echo 成功了"
            }
            failure {
                sh "echo 失败了"
            }
        }
    }
    
    
    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
    # 2.3 构建

    image-20230607111402273

    # 2.4 配置解读

    pipline

    声明式流水线语法标识,表示采用的语法风格,主要有以下两种方式:

    • 声明式: 在Jenkinsfile固定的关键字之内,是一种更简洁、结构化和可读性更强的方法来定义流水线。
    • 脚本化: node是脚本化流水线语法标识,使用Groovy 脚本语法,是一种更大的灵活性和自由度,允许您以自定义的方式编写流水线,比较适合更加复杂的流水线任务。

    其实,日常我们写pipline流水线时,声明式对于运维来说比较友好。

    agent any

    angnt指流水线运行的节点,当我们Jenkins有多个节点组成时,我们可以根据业务指定流水线运行节点,any表示任何节点,这里由于我们只有一个节点,因此会默认在该节点执行,agent必须在一个流水线任务中必须存在。

    environment

    环境变量配置,当流水线中涉及到的变量比较多时,把变量集中管理,也是为了方便后续的维护,变量的声明可以在pipeline以及stage区域当中。

    options

    Jenkins 项目基础配置,这个在图形化UI界面基本就是勾选项实现

    stages

    定义流水线步骤,一个stages中,至少包含一个stage。

    stage

    定义流水线构建的实际步骤,每个stage包含多个steps。

    steps

    定义了流水线中的具体操作,并指示Jenkins执行这些操作。可以使用多种方式定义步骤,包括Shell脚本、Jenkins提供的内置命令和插件提供的特定命令。

    post

    post部分用于定义在所有阶段执行完毕后要执行的操作。它提供了一种机制来处理流水线的后续任务,例如清理工作空间、发送通知或触发其他操作。

    总结

    以上为该示例所涉及到的相关参数,其实虽然看上去只是一个简单的demo,但是,我们把一些配置套进去之后,执行相关的命令,即可完成项目的构建及发布操作。

    这里需要提醒的一点是,就我个人而言,如果想要学会pipline的相关知识,首先需要对图形化UI操作比较熟悉,这样学起来可能会更简单一些

    编辑 (opens new window)
    上次更新: 2023/06/29, 18:27:26
    Jenkins之使用ansible发布项目
    Jenkins之pipline语法

    ← Jenkins之使用ansible发布项目 Jenkins之pipline语法→

    最近更新
    01
    cert-manager自动签发Lets Encrypt
    09-05
    02
    Docker构建多架构镜像
    08-02
    03
    Prometheus数据迁移至VMstorage
    08-01
    更多文章>
    Theme by Vdoing | Copyright © 2023-2024 |豫ICP备2021026650号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式