pipeline介绍

Jenkins 2.0的精髓是Pipeline as Code,是帮助Jenkins实现CI到CD转变的重要角色。什么是Pipeline:,简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

**pipeline概念 ** Pipeline 是一个用户定义的 CD 流水线模式。Pipeline 代码定义了通常包含构建、测试和发布步骤的完整的构建过程 。

-#Node: (相当于- hosts:)
node 是一个机器,它是 Jenkins 环境的一部分,并且能够执行 Pipeline。同时,node 代码块也是脚本式 Pipeline 语法的关键特性。

-#Stage: (相当于任务tasks)
Stage 块定义了在整个 Pipeline 中执行的概念上不同的任务子集(例如“构建”,“测试”和“部署”阶段),许多插件使用它来可视化或呈现 Jenkins 管道状态/进度。

-#Step: (相当于- name)
一项任务。从根本上讲,一个步骤告诉 Jenkins 在特定时间点(或过程中的“步骤”)要做什么。例如,使用 sh step:sh 'make' 可以执行 make 这个 shell 命令。

jenkins file

声明式 脚本式
脚本式语法格式:
pipeline{
agent any
stages{
    stage("get code"){
       steps{
           echo "get code from scm"
       }
    }
    stage("package"){
        steps{
            echo "packge code"
        }
    }
    stage("deploy"){
        steps{
            echo "deploy packge to node1"
        }
    }
}
}

创建pipeline风格项目

非参数化

创建项目

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格

丢弃旧的构建

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_02

流水线

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_03

pipeline{
agent any
stages{
    stage("下拉代码"){
       steps{
           git 'git@10.0.0.91:root/hell-word.git'
        }
    }
    stage("下发代码"){
        input{
           message "是否要继续构建?"
           ok "构建"
        }
        steps{
            echo "packge code"
        }
    }
    stage("deploy"){
        steps{
            echo "deploy packge to node1"
        }
    }
}
}
生成流水线语法

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_04

构建

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_05

视图查看Logs

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_06

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_07

打开Blue Ocean(可视化界面查看)

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_08

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_09

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_10

添加按钮

执行完代码质量检测后,可以添加一个按钮(input),去sonar上检查一下代码是否有问题,有则修复,无则点击继续按钮

流水线脚本的‘代码质量检测’步骤下再添加一步
input {
message "是否要继续构建?"
ok "构建"
}

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_11

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_12

参数化构建

其他步骤同上

参数化构建

可以做git参数,以前老版本不行,但是可以做文本参数(生成流水线语法时有checkout语法,不用git),然后手动去写版本号

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_13

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_14

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_15

webhook

创建项目

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_16

丢弃旧的构建

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_17

构建触发器
1.GitLab webhook URL: http://10.0.0.92:8080/project/hello-wold-pipeline-webhook

2.令牌:b3a2293650720c1db09fd7626d82625a

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_18

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_19

将URL和令牌放到gitlab
3.gitlab开启功能
你的工作-管理中心-设置-网络设置-外发请求-允许钩子和服务访问本地网络

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_20

网络--出站请求

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_21

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_22

放URL和令牌

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_23

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_24

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_25

代码修改好上传gitlab后jenkins会自动构建,只适合用于测试

Jenkins创建pipeline流水线风格_jenkins构建pipeline风格_26