Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
描述管道和docker作为工具的代理_Docker_Jenkins_Jenkins Pipeline_Pipeline - Fatal编程技术网

描述管道和docker作为工具的代理

描述管道和docker作为工具的代理,docker,jenkins,jenkins-pipeline,pipeline,Docker,Jenkins,Jenkins Pipeline,Pipeline,我想使用docker作为代理来运行我的Jenkins工作。我试图创建一个描述性管道,在其中定义我的工作应该做的事情。根据定义,我可以定义应该在代理中使用的工具。但是,这似乎不适用于docker容器 简化文件: pipeline { agent { docker { image 'centos:7' } } tools { jdk 'openJDK 1.8' } stages { stage('Test') {

我想使用docker作为代理来运行我的Jenkins工作。我试图创建一个描述性管道,在其中定义我的工作应该做的事情。根据定义,我可以定义应该在代理中使用的工具。但是,这似乎不适用于docker容器

简化文件:

pipeline {
    agent {
        docker { image 'centos:7' }
    }
    tools {
        jdk 'openJDK 1.8'
    }
    stages {
        stage('Test') {
            steps {
                sh 'java -version'
            }
        }
    }
}
这项工作的结果如下:

...
+ java -version
/home/jenkins/jenkins-test/workspace/Job@tmp/durable-442553e8/script.sh: line 1: java: command not found
...
该工具已在Jenkins配置的“工具”部分中正确定义。它可以用于将物理机器用作节点的其他作业


有什么我不知道的吗。感谢您抽出时间。

这是因为Java是Jenkins操作系统的一部分,而不是Docker。Docker独立于Jenkins主机配置运行,我个人发现Jenkins中Docker存在许多缺陷,因为所有东西都需要从外部安装到容器上。您只想运行Java构建,为什么不使用?我的构建过程编译Java代码和C代码,因此我选择使用docker,因为我能够使用不同的Java版本和不同的glibc版本交叉构建代码。这意味着我将使用所需的OS/Java组合创建自己的docker映像,然后告诉Jenkins使用这些映像作为基础。我正在尝试使用Jenkins代理作为模板,使用我需要的操作系统创建我自己的版本。使用您自己的版本将是最简单的,否则您将需要使用多个映像的多个节点来执行此操作。如果时间不是问题,那么您可以让Jenkins在运行时构建Docker映像。