项目
博客
归档
资源链接
关于我
项目
博客
归档
资源链接
关于我
九、【Pipeline流水线】Groovy语法、实现基于共享库进行CI/CD流程的优化
2025-05-17
·
·
原创
·
·
本文共 373个字,预计阅读需要 2分钟。
### Groovy语法 Groovy 定义变量 ```groovy // def关键字定义变量 def num = 11 def name1= 'muke' def age = [18, 25, 30] def bool = true def name2 = ['girl','boy','lisha'] print "${num},${name1},${age},${bool},${name2}" ``` Groovy 获取当前时间 ```groovy // 调用Date类的构造函数 def year = new Date().format("yyyy") def month = new Date().format("MMdd") def day = new Date().format("HHmm") def second = new Date().format("ss") print "${second} ${day} ${month} ${year}" ``` Groovy for循环 ```groovy def browsers = ['chrome', 'firefox'] print "${browsers.size()}" for (int i = 0; i < browsers.size(); ++i) { print "Testing the ${browsers[i]} browser" } ``` Groovy if条件判断 ```groovy def BRANCH_NAME = 'test' if (BRANCH_NAME == 'master') { print 'I only execute on the master branch' } else if (BRANCH_NAME == 'test') { print 'I execute elsewhere' } else { print 'success' } ``` Groovy 导常捕获 ```groovy try{...}catch(error){...} node { stage('Example') { try { sh 'exit 1' } catch (exc) { echo 'Something failed, I should sound the klaxons!' throw } } } ``` Groovy 函数 ```groovy //定义一个函数,两个变量 def greet(name,age) { println "My name is $name!,age $age" } greet("Alice",18) ``` ### 实现基于共享库进行CI/CD流程的优化 配置连接共享库 - 第一步: gitlab创建一个共享库 - 第二步jenkins配置连接共享库 目录结构介绍 - vars 目录用于存放 Jenkins Pipeline 的全局共享步骤。这些步骤在 Jenkinsfile 或其他 Pipeline 脚本中可以直接作为命令调用 - src/org 目录通常用于存放共享库中的 Groovy 脚本和类。这里的 org 是一个常见的包名前缀,用于组织代码。你可以在 src/org 下创建多层级的目录结构,以进一步细分你的代码 编写共享库脚本 - src源目录结构 - vars公开的脚本文件 引用共享库 - 在Jenkinsfile调用共享库 ```groovy // #!groovy @library('my-shared-library') _ //使用my-shared-library共享库 def test = new org.test() //实例化对象 pipeline { agent any options { gitLabConnection('gitlab') } stages { stage('Stage 1') { steps { cleanWs() script { test.librarytest() //调用方法 log.info('Starting') log.warning 'Nothing to do! afa' } updateGitlabCommitStatus(name: 'step 1', state: 'success') } } stage('Stage 2') { steps { updateGitlabCommitStatus(name: 'step 2', state: 'success') echo 'Hello world!' sh "ls -l;pwd" } } } } ``` 操作步骤: - 在gitlab的项目`jenkins-shared-library`目录下创建两个目录:`src/vars` ```groovy // src/org/test.groovy package org def librarytest(){ sh "echo library test" } //vars/log.groovy def info(message) { echo "INFO: ${message}" } def warning(message, ab) { echo "WARNING: ${message} ${ab}" } ``` - 在jenkins中: 系统管理 ->系统配置 ->搜索Pipeline,在Global Pipeline Libraries下新增,名称:`jenkins-shared-library`,版本:main,然后通过git复制项目地址和密钥 - 配置流水线 ```groovy #!groovy @Library('jenkins-shared-library@main') _ def test = new org.test() pipeline { agent any stages { stage('Stage 1') { steps { script { test.librarytest() log.info('Starting') log.warning('11','22') } } } } } ```