当前位置:  开发笔记 > 前端 > 正文

如何在jenkins管道中使用`def`

如何解决《如何在jenkins管道中使用`def`》经验,为你挑选了1个好方法。

我正在学习jenkins管道,我试着遵循这个管道代码.但我的詹金斯总是抱怨这def不合法.我想知道我是否错过任何插件?我已经安装了groovy,job-dsl但是没有用.



1> Ron..:

正如@Rob所说,有两种类型的管道:scripteddeclarative.它像imperativeVS 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"
                    }
                }
            }
        }
    }
}

要阅读更多声明性管道语法,请参阅此处的官方文档

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有