zoukankan      html  css  js  c++  java
  • Jenkins高级用法

    系列目录

    1.Jenkins 安装
    2.Jenkins 集群
    3.Jenkins 持续集成 - ASP.NET Core 持续集成(Docker&自由风格&Jenkinsfile)
    4.Jenkins 高级用法 - Pipeline 安装
    5.Jenkins 高级用法 - Jenkinsfile 介绍及实战经验
    6.Jenkins 高级用法 - Blue Ocean 使用
    7.Jenkins 高级用法 - 根据 git commit 控制构建过程
    8.Jenkins 高级用法 - 微服务DevOps实战(ASP.NET Core)

    常见问题:

    1.Jenkins 时区设置
    2.Jenkins 无法捕获构建脚本错误问题

    一.什么是 Jenkinsfile

    Jenkinsfile 是 Jenkins 2.x 核心特性 Pipeline 的脚本,由Groovy语言实现。Jenkinsfile一般是放在项目根目录,随项目一起受源代码管理软件控制,无需像创建“自由风格"(Jenkins FreeStyle)项目一样,每次可能需要拷贝很多设置到新项目,提供了一些直接的好处:

    • Pipeline上的代码审查/迭代
    • Pipeline的审计跟踪
    • Pipeline的唯一真实来源,可以由项目的多个成员查看和编辑。

    Pipeline支持:Declarative(在Pipeline 2.5中引入)和Scripted Pipeline两种格式。两者都支持建立Pipeline,两者都可以用于在Web UI中定义一个流水线Jenkinsfile,将Jenkinsfile文件创建并检查到源代码控制库中通常被认为是最佳做法。

    aaa

    更多详细信息参考:玩转Jenkins Pipeline(大宝鱼) 推荐必读

    二. Jenkinsfile 实战经验

    看本小节之前,如果你不熟悉 Jenkinsfile 那么推荐一定要阅读,第一小节推荐的文章,里面介绍了很多基本用法。

    这里的实战主要讲声明式 Jenkinsfile,因为声明式 Jenkinsfile是 Pipeline 2.5 引入的,比之以前的脚本式会有一些更先进的设计和更快捷的用法,且声明式Jenkinsfile还兼容脚本式语法。这里主要讲一些博主实际用的过程中的经验。

    1.在指定的Jenkins集群结点上运行

    pipeline {
        agent {
            node {
                label 'slave-1'
            }
        }
    }
    

    label 指你的集群结点名称

    2.定义环境变量

    pipeline {
        environment {
            NUGET_KEY     = 'abc'
        }
    }
    

    使用:

    env.NUGET_KEY
    

    sh里使用

    $NUGET_KEY
    

    例子:

    输出该环境变量

    echo "${env.NUGET_KEY}"
    

    sh:

    sh 'echo $NUGET_KEY'
    

    这里要注意在 sh 语句块里使用的不同。

    3.设置 github webhook 触发器

    triggers {
          githubPush()
    }
    

    UI上没有没有设置github webhook触发的。脚本设置后,需要到 【系统管理】->【系统设置】里,手动注册一下github webhook即可

    4.常用的预置环境变量

    变量名 说明
    BRANCH_NAME 当前分支名称
    GIT_COMMIT 当前 commit hash
    GIT_PREVIOUS_SUCCESSFUL_COMMIT 上一次构建成功 cimmit hash

    示例:

    echo "branch: ${env.BRANCH_NAME}"
    echo "current SHA: ${env.GIT_COMMIT}"
    echo "previous SHA: ${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT}"script
    

    5.script块

    script 块里可以写脚本式Jenkinsfile的语法

    例子:

    stages {
            stage('Build') {
                steps {
                    script {
                        result = sh (script: "git log -1|grep 'Release'", returnStatus: true) 
                        echo "result: ${result}"
                    }
                }
            }
        }
    

    6.设置构建结果

    post { always { script { currentBuild.result = 'NOT_BUILT' } } }
    

    一般放在 POST 语句块

    7.敏感数据设置

    一些敏感数据,比如账号密码,不可能卸载脚本中。

    首先新建凭据(Jenkins 地址 /credentials/store/system/domain/_/):

    1544687837595

    类型选择 Secret text,Secret 输出你的 账号/密码等。然后记住你设置的ID,待会要用

    可以通过 credentials函数来获取

    credentials('<凭据id>')
    

    例如

    credentials('test')
    

    直接输出到控制台也会加密:

    1544687975228

    8.定义变量

    def cusversion="Jenkinsfile"
    

    必须放在 pipeline 前面或者 script 语句块里面

    1544695268853

    9.指定分支运行stage

    stage('Deploy') {
                when {
                    branch "<分支名称>"
                }
    }
    

    三.扩展阅读

    Jenkinsfile 语法 https://jenkins.io/doc/book/pipeline/syntax

    玩转Jenkins Pipeline https://blog.csdn.net/diantun00/article/details/81075007

  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/stulzq/p/10115589.html
Copyright © 2011-2022 走看看