作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在学习Jenkins Pipeline ,我试图遵循这条管道 code .但我的 Jenkins 总是提示 def
是不合法的。
我想知道我是否错过了任何插件?我已经安装了groovy
, job-dsl
,但它不起作用。
最佳答案
正如@Rob 所说,有两种类型的管道:scripted
和 declarative
.就像 imperative
对比 declarative
. def
只允许在 scripted
中使用管道或包裹在 script {}
.
脚本化管道(命令式)
从 node
开始, 和 def
或 if
是允许的,如下所示。这是传统的方式。
node {
stage('Example') {
if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
} else {
echo 'I execute elsewhere'
}
}
}
声明式管道(首选)
pipeline
开始, 和
def
或
if
不允许,除非它包含在
script {...}
中.声明式管道使很多东西易于编写和阅读。
pipeline {
agent any
triggers {
cron('H 4/* 0 0 1-5')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
什么时候
pipeline {
agent any
stages {
stage('Example Build') {
steps {
echo 'Hello World'
}
}
stage('Example Deploy') {
when {
branch 'production'
}
steps {
echo 'Deploying'
}
}
}
}
平行线
pipeline {
agent any
stages {
stage('Non-Parallel Stage') {
steps {
echo 'This stage will be executed first.'
}
}
stage('Parallel Stage') {
when {
branch 'master'
}
failFast true
parallel {
stage('Branch A') {
agent {
label "for-branch-a"
}
steps {
echo "On Branch A"
}
}
stage('Branch B') {
agent {
label "for-branch-b"
}
steps {
echo "On Branch B"
}
}
}
}
}
}
嵌入脚本代码
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
script {
def browsers = ['chrome', 'firefox']
for (int i = 0; i < browsers.size(); ++i) {
echo "Testing the ${browsers[i]} browser"
}
}
}
}
}
}
更多声明式管道语法请引用官方文档
here
关于jenkins - 如何在 Jenkins Pipeline 中使用 `def`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47216731/
我是一名优秀的程序员,十分优秀!