• 企业DevOps之路:Jenkins 流水线


    1. Pipeline 概述

    Pipeline 即流水线,是 jenkins2.X 的新特性,是 jenkins 官方推荐使用的持续集成方案。与传统的自由风格项目不同,它是通过 jenkins DSL 编写代码来实现。相比于之前用户只能通过 Web 界面进行配置的方式来定义 Jenkins 任务,现在通过使用 jenkins DSL 和 Groovy 语言编写程序,用户可以定义流水线并执行各种任务。

    Jenkins pipeline包含两类元素,分别是stages和steps。如图:

    • step 代表单一的操作;告诉 Jenkins 做什么。比如,代码从仓库检出代码,执行脚本

    • stage 等于一系列 step 的组合,通常来表示 Jenkins pipeline 进程的可示化。例如,Build、Test、Deploy等

    更详细的资料请查看官网

    https://www.jenkins.io/doc/book/pipeline/
    

    Pipeline 有两种语法,分别是声明式和脚本式

    声明式语法

    pipeline {
      agent any
      stages {
          stage('Build') {
              steps {
                  // TODO
              }
          }
          stage('Test') {
              steps {
                  // TODO
              }
          }
          stage('Deploy') {
              steps {
                  // TODO
              }
          }
      }
    }
    

    agent any:表示任意一个可用代理节点上执行该Pipeline

    stage('Build'):定义阶段

    steps {}:阶段执行的步骤

    脚本式语法

    node {
      stage('Build') {
          // TODO
      }
      stage('Test') {
          // TODO
      }
      stage('Deploy') {
          // TODO
      }
    }
    

    node:表示任意一个可用代理节点上执行该Pipeline

    stage('Build') {}:定义阶段。在脚本式语法中 stage 代码块是可选的;不过明确写上的话可以让每个阶段的任务更清晰

    3. 安装 Jenkins Pipeline 插件

    安装 Pipeline 和 Pipeline Maven Integration 插件

    Manage Jenkins -> Manage Plugins

    安装后,重启 Tomcat。

    3. 流水线编译与部署

    创建流水线任务

    新建Item

    配置流水线任务

    初学者对于 Pipeline 的脚本肯定无从入手的;但是 Pipeline 提供了一个非常有用的帮助文档。

    http://127.0.0.1:8080/jenkins/job/Pipeline_maven/pipeline-syntax/
    

    Pipeline 脚本有两种编写模式

    • Pipeline 脚本

    • Jenkinsfile 文件

    这里选择 Pipeline script

    3.1 克隆代码

    git credentialsId: 'c8eea0cc-24e7-4eb1-a2dd-42fc1066f35a', url: 'https://gitee.com/hjj520/ruoyi-patrol.git'
    

    3.2 编译

    bat 'mvn clean install'
    

    在 Windows 操作系统 Jenkins Pipeline 中要使用bat来运行 Windows 命令;而 Linux 操作系统则需要使用sh来运行 Shell 命令。

    3.3 上传 jar包

    bat 'C:/jenkins/pscp.exe -r -l root -pw root %WORKSPACE%/ruoyi-admin/target/ruoyi-admin.jar 192.168.10.8:/home/huangjinjin/software/springdocker'
    

    图片

    完整 Pipeline 脚本

    pipeline {
      agent any
    
      stages {
          stage('git clone') {
              steps {
                  git credentialsId: 'c8eea0cc-24e7-4eb1-a2dd-42fc1066f35a', url: 'https://gitee.com/hjj520/ruoyi-patrol.git'
              }
          }
           
          stage('complie') {
              steps {
                    bat 'mvn clean install'
              }
          }
           
          stage('upload') {
              steps {
                    bat 'C:/jenkins/pscp.exe -r -l root -pw root %WORKSPACE%/ruoyi-admin/target/ruoyi-admin.jar 192.168.10.8:/home/huangjinjin/software/springdocker'
              }
          }
           
      }
       
    }
    

    其他步骤可以自行添加,例如,测试、部署等。

  • 相关阅读:
    在 ServiceModel 客户端配置部分中,找不到引用协定
    nopi 导出excel 带图片
    c# async await 理解 结合并行处理
    从数据库更新模型时出现System.ArgumentException
    C# HTTP请求 异步(async await)
    C# HTTP请求
    SQL列转行
    详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
    JavaScript (function (){}()) 与(function(){})()
    记ssh错误排查-ansible
  • 原文地址:https://www.cnblogs.com/happyhuangjinjin/p/16143203.html
Copyright © 2020-2023  润新知