描述管道和docker作为工具的代理
我想使用docker作为代理来运行我的Jenkins工作。我试图创建一个描述性管道,在其中定义我的工作应该做的事情。根据定义,我可以定义应该在代理中使用的工具。但是,这似乎不适用于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') {
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映像。