栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【Jenkins】使用 Jenkins 的pipeline进行持续交付

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Jenkins】使用 Jenkins 的pipeline进行持续交付

背景

介绍 Jenkins Pipeline,该工具扩展了流行的 CD(Continuous Delivery) 应用程序以管理最复杂的软件管道并帮助您持续高效地交付。

Jenkins Pipeline

Pipeline 为 Jenkins 添加了一套强大的自动化工具。它支持从简单的持续集成任务到全面的持续交付管道的软件交付。构建、测试和交付每个应用程序的步骤成为应用程序本身的一部分,存储在 Jenkinsfile 中。

Jenkins Pipeline 提供了一种特定领域的语言来创建、编辑、查看和运行软件交付管道。所有经验水平的用户都可以使用 Jenkins 随附的交互式工具快速创建 Jenkins Pipelines。

Jenkins Pipeline Visualization 

Jenkins Pipelines 最好通过 Jenkins Blue Ocean 用户界面进行可视化。Jenkins Blue Ocean 用户界面专注于持续交付管道和现代开发工具的期望。只需单击一下,用户就可以在用于管理任务的传统 Jenkins 页面和 Blue Ocean 之间切换以编辑、监控和运行他们的管道。

Blue Ocean 和 Declarative Pipeline 专注于新用户和持续交付,旨在协同工作。它们使 DevOps 团队的所有成员都可以访问 Pipelines 的创建、审查和可视化。用户可以快速查看管道状态,直观地创建和编辑新管道,并个性化他们对重要管道的视图。他们可以通过分支和拉取请求的本地集成轻松协作代码更改。

System Requirements

 Pipeline and Blue Ocean 适用于所有 Jenkins 2.x 版本. This Refcard is known to work with: 

Jenkins 2.204.5 or higher Pipeline 2.6 or higher Blue Ocean 1.22 or higher 

要启动一个预装了 Pipeline 和 Blue Ocean 的新 Jenkins: 

Ensure Docker is installed Run docker run -p 8888:8080 jenkinsci/ blueocean:latest Browse to http://localhost:8888/blue 

创建 Jenkins 文件

Blue Ocean 中的“创建管道”体验可帮助用户以清晰、简单的步骤创建新的管道。 

Pipeline Editor

Blue Ocean Pipeline Editor 允许用户在选定的存储库中快速设计和保存新的 Jenkinsfile。如果存储库中已经存在 Jenkinsfile,它将改为基于现有的 Jenkinsfile 创建一个新的 Pipeline。您始终可以通过选择一个分支并单击铅笔图标在编辑器中编辑此 Jenkinsfile。

Branches and Pull Requests

在 Blue Ocean 中创建新的 Pipeline 时,它​​还会为存储库创建一个新的 Multibranch Pipeline 项目。Jenkins 监控这个存储库并自动为每个包含 Jenkinsfile 的分支和拉取请求创建一个新的管道。删除分支、拉取请求或 Jenkinsfile 将自动删除关联的流水线。 

声明式管道可以根据分支或拉取请求调整其执行;根据用户输入调整执行;并发布测试结果并保存工件。 

Pipeline基础

管道使用 Jenkinsfile 中的定义来检查代理上的代码并运行定义的阶段和步骤。所有声明式管道都必须以管道开头,并包含这四个语法正确的指令:代理、阶段、阶段和步骤。这些将在以下部分中更详细地描述。这是一个最小管道的示例:

pipeline {
  agent any
    stages {
        stage('Build') {
            steps {
                sh 'npm -version'
            }
        }
    }
}
Steps and Stages

Steps:管道由构建、测试和部署应用程序的多个步骤组成。将“步骤”视为执行单个操作的单个命令。当一个步骤成功时,它会进入下一步。 

pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        sh 'echo "Hello World"'
        sh '''
            echo "Multiline shell steps"
            ls -lah
            '''
            }
        }
    }
}
Agents

代理指令告诉 Jenkins 在哪里执行流水线阶段。大多数流水线步骤都需要适当配置的代理。 

到目前为止,所有示例都使用了 agent any,它允许 Pipeline 阶段在任何可用的代理上执行。在幕后,agent 关键字会导致一些事情发生: 

块中包含的所有步骤都排队等待 Jenkins 执行。一旦执行器可用,步骤将开始执行。 分配了一个工作区,其中将包含从源代码管理中签出的文件,以及管道的任何其他工作文件 Environmental Variables and Credentials 

环境变量可以全局设置,如下例所示,也可以按阶段设置。如您所料,为每个阶段设置环境变量意味着它们仅适用于定义它们的阶段

pipeline {
    agent any
    environment {
        DISABLE_AUTH = 'true'
        DB_ENGINE = 'sqlite'
    }
    stages {
        stage('Build') {
            steps {
                sh 'printenv'
            }
        }
    }
}

可以在构建脚本中引用 Jenkinsfile 中的环境变量来改变脚本的行为。Makefile、自动化测试或部署脚本可以使用环境变量的值来执行。 

环境变量的另一个常见用途是在构建或测试脚本中设置或覆盖“虚拟”凭据。Pipeline 允许用户快速安全地访问预定义的凭据,而无需知道其值,也无需将凭据存储在 Jenkinsfile 中。

Post Actions 

整个 Pipeline 和每个 Stage 可以选择定义一个 post 部分。Pipeline 的这个 post 部分在封闭的 Pipeline 或 Stage 的末端运行。它对于删除文件、归档结果或发送通知很有用。帖子部分支持许多附加条件块:总是、已更改、失败、成功和不稳定。它们根据阶段的状态在阶段结束时执行 

pipeline {
    agent any
    stages {
        stage('No-op') {
            steps {
                sh 'ls'
            }
        }
    }
    post {
        always {
            echo 'Finished'
            deleteDir() // Clean the workspace
        }
        success {
            echo 'I succeeded!'
        }
        unstable {
            echo 'I am unstable :/'
        }
        failure {
            echo 'I failed :('
        }
        changed {
            echo 'Latest job status differs from previous job status'
        }
    }
}
 Input

通常,在阶段之间传递时,尤其是环境阶段,您可能需要人工输入才能继续。例如,要判断应用程序是否处于足够好的状态以“提升”到生产环境,这可以通过输入步骤来完成。在下面的示例中,“健全性检查”阶段会阻止输入,并且在没有人确认进度的情况下不会继续进行。输入步骤不需要代理。它应该始终从使用 agent none 的阶段运行,这样它就不会不必要地保留代理。  

stage('Sanity Check') { 
    agent none 
    steps { 
        input 'Does the staging environment look ok?' 
    } 
}
Advanced Pipeline Settings

Refer to the Tutorials and Jenkins Handbook at jenkins.io/doc for more information on advanced topics such as Snippet Generator, Declarative Directive Generator, Shared Libraries, script Blocks, Pipeline Options, and Parameterized Pipelines.

Additional Resources

Getting Started with Jenkins PipelineShared LibrariesBlue Ocean documentationPipeline Syntax ReferencePipeline Steps ReferenceCloudBees University Training

Sign In with CloudBeesJenkins Training by CloudBees | Get Free & online Training

refer to:Continuous Delivery With Jenkins Pipeline - DZone Refcardz 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号