前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实践: 使用共享库扩展Jenkinsfile

实践: 使用共享库扩展Jenkinsfile

作者头像
DevOps云学堂
发布2020-02-19 13:24:44
2K0
发布2020-02-19 13:24:44
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

引导 您好,本模块主要学习Jenkins共享库的配置,目的是能够让大家编写更加灵活强大的流水线。主要包含以下内容: 1. 共享库内容 2. 创建共享库 3. 使用共享库 适合人群: 所有对DevOps感兴趣的同学。

共享库这并不是一个全新的概念,其实具有编程能力的同学应该清楚一些。例如在编程语言Python中,我们可以将Python代码写到一个文件中,当代码数量增加,我们可以将代码打包成模块然后再以import的方式使用此模块中的方法。

在Jenkins中使用Groovy语法,共享库中存储的每个文件都是一个groovy的类,每个文件(类)中包含一个或多个方法。每个方法包含groovy语句块。

1. 共享库内容

这是一个demo演示的共享库,大家可以看到仓库的结构与内容。这个仓库中包含了很多类,例如:我将kubernetes中的API方法封装在了kubernetes.groovy文件中,便于后面引用。在此你只需要知道共享库的结构 ,具体该如何创建共享库后面会讲述?

代码语言:javascript
复制
── docs
│   └── README.mdREADME.md
├── src
│   └── org
│       └── devops
│           └── tools.groovy
└── vars

src目录主要存放我们要编写的groovy类,执行流水线时,此目录将添加到class_path中。vars目录主要存放脚本文件,这些脚本文件在流水线中作为变量公开。resources目录允许从外部库中使用步骤来加载相关联的非Groovy文件。

2. 创建共享库

新建文件src/org/devops/tools.groovy, 在此我将这个文件定义为扩展工具类,主要放一些扩展方法。

例如:在构建日志中查看流水线详细日志会很乱,我们可以在日志中将重点步骤通过不同的颜色高亮显示,便于排错。我们开始写这样的一个方法PrintMes(),包含两个参数,输出内容value和内容的颜色color

注意:我们需要安装 插件AnsiColor,这样才能使用ansiColor()方法,可以在片段生成器查看更多的用法。

代码语言:javascript
复制
package org.devops

//格式化输出
def PrintMes(value,color){
    colors = ['red'   : "\033[40;31m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m",
              'blue'  : "\033[47;34m ${value} \033[0m",
              'green' : "[1;32m>>>>>>>>>>${value}>>>>>>>>>>[m",
              'green1' : "\033[40;32m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m" ]
    ansiColor('xterm') {
        println(colors[color])
    }
}

3. 使用共享库

我们导航到 系统配置 -> Global Pipeline Libraries

首先,我们为共享库设置一个名称jenkinslib,注意这个名称后续在Jenkinsfile中引用。再设置一个默认的版本,这里的版本是分支的名称。我默认配置的是master版本。

接下来我们配置共享库的仓库地址,我的仓库在github中,所以这里我填写的是github的方式。(如果你用的是gitlab可以使用gitlab方式或者git方式)。如果仓库是私有的方式,需要在jenkins的凭据中添加一个账号用于下载共享库。

好,到此共享库在Jenkins的配置就完成了,接下来测试在Jenkinsfile中引用。

在Jenkinsfile中使用@Library('jenkinslib') _来加载共享库,注意后面符号_用于加载。类的实例化def tools = new org.devops.tools(),使用类中的方法tools.PrintMes("获取代码",'green')

代码语言:javascript
复制
#!groovy

@Library('jenkinslib') _     

def tools = new org.devops.tools()

pipeline {
    agent { node {  label "master" }}

    stages {
        //下载代码
        stage("GetCode"){ 
            steps{  
                timeout(time:5, unit:"MINUTES"){   
                    script{ 
                        tools.PrintMes("获取代码",'green')
                    }
                }
            }
        }
    }
}

接下来在你的Jenkins上面运行一下吧,测试一下是否能够看到带有绿色的文字呢?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps持续集成 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档