如何在Jenkins从属节点上运行Dockerfile代理?
请帮我做下面的事情。 我在一台共享服务器上安装了Jenkins。目前由多个团队使用,因此不允许在那里安装其他软件包/软件。 每个团队都添加了专用的从属节点,并根据需要进行配置。 同样,我们有一个专用节点来运行我们的作业。(这也是我想要运行作业的地方) 我有bitbucket repo,其中有“Jenkinsfile”和“Dockerfile”,我们希望从中创建容器并在其中运行部署步骤 我想先用一些例子来测试一下。所以我有这样的“Dockerfile”如何在Jenkins从属节点上运行Dockerfile代理?,docker,jenkins,Docker,Jenkins,请帮我做下面的事情。 我在一台共享服务器上安装了Jenkins。目前由多个团队使用,因此不允许在那里安装其他软件包/软件。 每个团队都添加了专用的从属节点,并根据需要进行配置。 同样,我们有一个专用节点来运行我们的作业。(这也是我想要运行作业的地方) 我有bitbucket repo,其中有“Jenkinsfile”和“Dockerfile”,我们希望从中创建容器并在其中运行部署步骤 我想先用一些例子来测试一下。所以我有这样的“Dockerfile” #This image is Develop
#This image is Developed from ubuntu:18.04-Dockerhub
FROM ubuntu:18.04
#Updating System Packages and installing required packages
RUN apt-get update && \
apt-get install -y openssh-server wget git curl zip unzip && \
apt-get clean
#Installing rsync
RUN apt-get install -y rsync
我有下面这样的“Jenkinsfile”
pipeline {
agent { node { label 'slave_node' } }
stages {
stage('Test') {
agent {
dockerfile true
}
steps {
sh 'cat /etc/os-release'
sh 'curl --version'
sh 'echo Successfully compiled'
}
}
}
}
当我执行这个管道作业时
- 它得到詹金斯档案
- 在提到的从属节点上正确启动
- 检查回购代码
- 分期付款
- 但当它进入stage(‘Test’)时,节点会变回“Master Jenkins”,并再次开始检查repo代码。[这就是我的问题所在。我不知道为什么要切换]
- 分期付款
- 运行“Docker文件”
- 尝试从中心提取图像。但由于“Docker command not found”(主节点没有设置,预期会出现错误),作业失败
如果我在我的个人笔记本电脑上运行此程序,它会工作得非常好。我会在Jenkins中查看您的Docker设置。可能是您已将主节点定义为默认Jenkins代理,因此当您仅使用“dockerfile:true”运行时,它会尝试在主节点上运行构建 通过在此文档中搜索“指定Docker标签”,可以找到对此特定选项的引用
我会在Jenkins中查看您的Docker设置。可能是您已将主节点定义为默认Jenkins代理,因此当您仅使用“dockerfile:true”运行时,它会尝试在主节点上运行构建 通过在此文档中搜索“指定Docker标签”,可以找到对此特定选项的引用 指的是 我能够使用脚本化的管道来实现我的需求。所以在这里发布答案 但我仍然不知道声明性管道有什么问题
node ('slave_node') {
checkout scm
def customImage = docker.build("custom-image-name")
customImage.inside {
sh 'Inside Container'
sh 'cat /etc/os-release'
sh 'curl --version'
sh 'echo Successfully compiled'
}
}
谢谢提及
我能够使用脚本化的管道来实现我的需求。所以在这里发布答案
但我仍然不知道声明性管道有什么问题
node ('slave_node') {
checkout scm
def customImage = docker.build("custom-image-name")
customImage.inside {
sh 'Inside Container'
sh 'cat /etc/os-release'
sh 'curl --version'
sh 'echo Successfully compiled'
}
}
感谢Hi@Ramzi,我之前也这么做了。我们有3到4个从节点,配置为“尽可能多地使用”选项。最初,切换通常发生在这4个从节点的任何其他节点上。因此,我们将所有节点更新为“仅在指定时使用”选项。在那之后,它开始切换回主。这就是我现在卡住的地方,不知道为什么。我检查了你提到的设置。它没有在任何地方定义。如果该选项不存在,那么你没有安装docker管道。我会检查并确保它是。Hi@Ramzi,我之前也这么做了。我们有3到4个从n配置为“尽可能多地使用”选项的ODE。最初,切换通常与这4个从属节点一起发生。因此,我们将所有节点更新为“仅在指定时使用”选项。在此之后,它开始切换回主。这就是我现在卡住的地方,不知道为什么。我检查了您提到的设置。它没有在任何地方定义。如果该选项不存在,则您没有安装docker管道。我将检查并确保它是。