惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
The Cloudflare Blog
D
DataBreaches.Net
J
Java Code Geeks
G
Google Developers Blog
L
LangChain Blog
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
小众软件
小众软件
量子位
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
博客园_首页
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
腾讯CDC

mafeifan 的编程技术分享

mafengwo-mp3-downloader | mafeifan 的编程技术分享 示例页面 | mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 查看 default namespace 下的 default service account名称 mafeifan 的编程技术分享 检查日志 | mafeifan 的编程技术分享 bridge fdb show dev flannel.1 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享 mafeifan 的编程技术分享
mafeifan 的编程技术分享
2026-01-16 · via mafeifan 的编程技术分享

写 pipeline 就是写 Groovy 代码,Jenkins pipeline 其实就是基于Groovy语言实现的一种DSL。 了解一些Groovy语法知识是很有必要的

Groovy是一门同时具有静态和动态特定的脚本语言,或者胶水语言,也是面向对象的。非常适合编写简洁容易的自动化测试代码,例如我再次强调的pipeline的构建任务,就是一个典型的使用领域。

Groovy是apache下的一个产品,所以叫Apache Groovy,官网地址是http://groovy-lang.org/

Groovy是由 James Strachan 设计,第一个发布版本在2003年。

核心特点就是Java平台的多面语言,下面特点就是描述这个多面。

Flat learning curve

  • 直接翻译就是平坦的学习曲线,什么可读性强,简洁,表达性强的,易于Java开发人员学习的编程语言。

Powerful features

  • 功能强大,支持闭包,构建器,运行时和编译时元编程,函数编程,类型推断和静态编译。

Smooth Java integration

  • 就是无缝和Java集成,Java的语法Groovy都支持。

Domain-Specific Languages

  • 特定领域语言,灵活的语法,高度集成和自定义机制。这个我使用来看,由于Jenkins平台Pipeline插件是采用Groovy开发,在特定领域语言,我认为就是指pipeline。

Vibrant and rich ecosystem

  • 充满活力和丰富的生态系统,这个,我学习比较基础,理解不了。在测试工具中,有一个很强大的框架spcok就能测试Java和groovy开发的项目,这个我认为是一个生态。

Scripting and testing glue

不想本地安装Groovy环境的话,可以打开 groovy-playground 运行线上groovy代码,查看结果 该网站可能需要会科学上网。

image.png

必要的Groovy语法知识 ​

  • 定义变量和方法用def关键字,def name="jack"
  • 语句最后的分号不是必需的
  • 方法调用时可以省略括号

groovy

def say(String name = "world") {
  return "hi " + name
}
// 调用
say name = "jack"
  • 双引号支持插值,单引号不会解析变量,原样输出

groovy

def name = 'world'
// 结果: hello world
print "hello ${name}"
// 结果: hello ${name}
print 'hello ${name}'
  • 三双引号和三单引号都支持换行,只有三双引号支持插值

groovy

def foo = """ line one
line two
${name}
"""
  • 支持闭包

groovy

// 定义闭包
def codeBlack = {print "hello closure"}
// 闭包当做函数调用
codeBlack
// 闭包可以赋值给变量,或者作为参数传递
def pipeline(closure) {
  closure()
}
pipeline(codeBlack)

因为括号是非必需的,下面几种写法结果是一样的,是不是和Jenkins pipeline很像呢

groovy

pipeline( {print "hello closure"} )
pipeline { 
  print "hello closure"
} 
pipeline codeBlack
  • 闭包的另一个用法

groovy

def stage(String name, closure) {
  println name
  closure()
}

// 正在情况下,我们这样使用stage函数

stage("stage name", {
   println "closure"
})

// 最终打印
/*
stage name
closure
*/
// 但是,在Groovy里,可以直接这么写

stage("stage name") {
  print "closure"
}