首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins Pipeline Jenkinsfile:'node‘和'pipeline’指令

Jenkins Pipeline Jenkinsfile:'node‘和'pipeline’指令
EN

Stack Overflow用户
提问于 2017-06-21 00:01:21
回答 1查看 21.4K关注 0票数 54

我开始使用Jenkins declarative Pipeline了。从我看到的一些示例中,我注意到Jenkinsfile是使用Pipeline指令设置的:

代码语言:javascript
复制
pipeline {
    agent any 

    stages {
        stage('Build') { 
            steps { 
                sh 'make' 
            }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml' 
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}

在其他示例中,我注意到Jenkinsfile是使用node指令设置的:

代码语言:javascript
复制
node {
    stage 'Checkout'
        checkout scm

    stage 'Build'
        bat 'nuget restore SolutionName.sln'
        bat "\"${tool 'MSBuild'}\" SolutionName.sln /p:Configuration=Release /p:Platform=\"Any CPU\" /p:ProductVersion=1.0.0.${env.BUILD_NUMBER}"

    stage 'Archive'
        archive 'ProjectName/bin/Release/**'

}

我还没有找到确切的文档来说明何时/为什么要使用它们。有没有人知道为什么它们是不同的,以及什么时候适合使用它们?

我不确定,但我相信'node‘指令是在脚本管道中使用的,而不是声明性管道。

提前感谢您的指导。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 19:05:20

是的,顶级node意味着脚本化管道,顶级pipeline意味着声明性管道。

声明式似乎是更面向未来的选项,也是人们推荐的选项,就像在这个jenkins user list post中,核心贡献者说“转到声明式”。它是Visual Pipeline编辑器唯一可以支持的。它支持验证。它最终拥有脚本的大部分功能,因为您可以在大多数上下文中退回到脚本。偶尔有人会想出一个用例,他们不能完全使用声明式来做他们想做的事情,但这通常是那些已经使用脚本一段时间的人,这些功能差距很可能会及时弥合。最后,如果您真的不得不放弃其中之一,那么编写一个从声明式到脚本式的程序化翻译器将比相反的方式更容易(根据定义,因为语法的约束更严格)。

有关声明性的优点的更多上下文,请参阅一般可用性博客文章:https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/

我能找到的提到两者的官方文件最多(截至2017年6月21日):https://jenkins.io/doc/book/pipeline/syntax/

票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44657896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档