我在GitHub上传了一个Django项目,我需要把它和Jenkins链接起来。我在Ubuntu 20.04机器上安装了Jenkins和Docker服务。
我用我的repo配置了Jenkins服务器,并且安装了所有的sugestd plggins + docker pipeline插件。
之后,我创建了一个Jenkinsfile,它使用Docker代理在python Docker容器中运行stages,但我在控制台输出中得到“'Jenkins' doesn 't have label 'docker'”。我尝试在项目设置中添加label docker,但仍然出现相同的错误!
这是我的Jenkins档案:
pipeline {
agent any
stages {
stage("install pip dependencies") {
agent {
docker {
label "docker"
image "python:3.7"
}
}
steps {
withEnv(["HOME=${env.WORKSPACE}"]) {
sh "pip install virtualenv"
sh "virtualenv venv"
sh "pip install -r requirements.txt "
}
}
}
}}
我错过了什么?
谢谢大家!
2条答案
按热度按时间9rbhqvlz1#
该消息意味着您唯一可用的节点(恰好是Jenkins控制器)没有您在此块中的代理上要求的标签
docker
:将标签
docker
添加到控制器,然后重新启动Jenkins(识别标签更改是必需的,尽管这让我很惊讶。这可能是标记控制器本身的特性,因为如果可能,您应该避免调度作业在那里运行)解决了这个问题。标签前:
标签后,重新开始前:
重启后,突出显示我的控制器没有安装Docker
k4ymrczo2#
您的管道将如下所示:
但是在你需要按照这些步骤让Jenkins把码头集装箱当作奴隶来运行之前:
sudo usermod -aG docker jenkins
/lib/systemd/system/docker.service
中的ExecStart=/usr/bin/dockerd
行修改为以下ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd:// -s overlay2 --containerd=/run/containerd/containerd.sock
sudo systemctl daemon-reload
和sudo systemctl restart docker
manage Jenkins -> manage nodes and clouds -> configure clouds -> add a new cloud -> docker
在Docker URL字段中键入tcp://127.0.0.1:2375 (or 4243)
或unix:///var/run/docker.sock
。配置代理,设置任何标签并在管道中使用它。也许你需要关闭selinux。