• 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

  • 相关阅读:
    UE4美术之数学基础知识(一)
    如何用Unity制作逼真的自然场景?
    git拉取和上传项目代码
    Chaosblade-故障使用工具
    如何对数据库做优化
    分布式和集群的概念
    token、cookie、session的区别
    Json中的json.tojsonString()方法
    JSON的put方法
    fastjson中的相关方法
  • 原文地址:https://www.cnblogs.com/stulzq/p/10115589.html
Copyright © 2020-2023  润新知