首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工具与码头代理的Jenkins差异

工具与码头代理的Jenkins差异
EN

Stack Overflow用户
提问于 2019-12-14 07:39:22
回答 1查看 1.5K关注 0票数 3

对不起,这可能是一个简单的问题,但使用工具和码头代理之间有什么区别呢?我认为使用对接代理比使用工具灵活得多。我应该什么时候使用码头代理或工具?

工具

代码语言:javascript
复制
pipeline {
    agent any
    tools {
        maven 'Maven 3.3.9'
        jdk 'jdk8'
    }
    stages {
        stage ('Initialize') {
            steps {
                sh '''
                    echo "PATH = ${PATH}"
                    echo "M2_HOME = ${M2_HOME}"
                '''
            }
        }

        stage ('Build') {
            steps {
                sh 'mvn -Dmaven.test.failure.ignore=true install' 
            }

码头代理

代码语言:javascript
复制
pipeline {
agent none
stages {
    stage('Back-end') {
        agent {
            docker { image 'maven:3-alpine' }
        }
        steps {
            sh 'mvn --version'
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-14 12:31:26

这两种选择的目的有点不同。tools块允许您在PATH中添加特定版本的mavenjdkgradle。您不能使用任何版本-您只能使用在全局工具配置 Jenkins页面中配置的版本:

如果您的Jenkins配置只包含一个Maven版本,例如Maven 3.6.3,则只能使用此版本。指定未在“全局工具配置”中配置的版本将导致管道失败。

代码语言:javascript
复制
pipeline {
    agent any
    tools {
        maven 'Maven 3.6.3' 
    }
    stages {
        stage('Example') {
            steps {
                sh 'mvn --version'
            }
        }
    }
}

如果您的Jenkins服务器不支持运行码头容器,那么使用tools块来指定不同版本的受支持的工具将是一个很好的选择。

另一方面,docker代理为您提供了指定工具及其版本的完全自由。它不限制您只使用mavenjdkgradle,并且不需要在Jenkins服务器中进行任何预配置。您唯一需要的工具是docker,您可以自由使用Jenkins管道中所需的任何工具。

代码语言:javascript
复制
pipeline {
    agent {
        docker {
            image "maven:3.6.3-jdk-11-slim"
        }
    }
    stages {
        stage('Example') {
            steps {
                sh 'mvn --version'
            }
        }
    }
}

什么时候用一个而不是另一个?

这个问题没有一个正确的答案。这取决于背景。tools块非常有限,但它允许您控制在Jenkins中使用的工具。在某些情况下,人们决定在Jenkins环境中不使用docker,他们更喜欢控制用户可以使用的工具。不管同意与否,我们都同意。当涉及到使用docker代理时,您可以完全访问可以作为码头容器提供的任何工具。在某些情况下,在使用带有特定版本的工具时,这是最好的选择--您的操作系统可能不允许安装所需的版本。当然,您需要记住,这种能力和灵活性是有代价的。您将失去对Jenkins管道中使用的工具的控制。此外,如果您拉出大量不同的对接图像,您将增加磁盘空间消耗。更不用说,docker代理允许您使用可能消耗大量CPU和内存的工具来运行管道。(我看到Jenkins管道在没有准备好负载的节点上启动Elasticsearch、Logstash、Zookeeper和其他服务。)

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

https://stackoverflow.com/questions/59333227

复制
相关文章

相似问题

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