我检查了其他帖子,但它们不是我的问题所代表的意思。 我正在上Linuxacademy的“ Jenkins认证工程师”课程,在“功能测试”课程中,我们在Jenkinsfile中添加了带有某些步骤的Docker代理,但对于使用的语法与官方Jenkins Pipeline文档中描述的语法感到困惑Using Docker with Pipeline。 Jenkins试图实现的目标是使用CentOS在Jenkins节点上的.jar文件上运行测试,但是该测试需要在Debian OS上运行,为了在CentOS节点上进行测试,Jenkinsfile具有一个阶段一个Docker代理和一个命令,该命令从Dockerhub中提取openjdk映像并在其中运行一些命令。 这是Lesson Repo中的语法:
stage("Test on Debian") {
agent {
docker 'openjdk:8u121-jre'
}
steps {
sh "wget http://brandon4231.mylabserver.com/rectangles/all/rectangle_${env.BUILD_NUMBER}.jar"
sh "java -jar rectangle_${env.BUILD_NUMBER}.jar 3 4"
请注意,我简化了文件以匹配进行中的工作,这是最终版本,但重点是代理行。
我的第一个问题是,詹金斯(Jenkins)文档语法与此处使用的语法不同,但是在本课程视频中,它没有问题,正确的语法应为agent {
docker { image 'openjdk:8u121-jre' }
}
我的第二个问题是,在使用一种或另一种语法的同时,我也使用了openjdk:7u181-jre,因为该课程中的一个不再可用,因此我在控制台日志输出中得到此错误:
如果转到节点终端并手动运行
docker运行openjdk:7u181-jre 它工作正常,我不是以sudo用户身份运行。
我也不了解docker命令在Jenkinsfile中的作用:它是在拉容器之后还是只是拉容器之后运行容器?
关于发生了什么的任何想法? 谢谢。
答案 0 :(得分:0)
1)请在Jenkins服务器中安装docker。
2)请通过运行以下命令来更改Jenkins和docker的用户模式,然后重新启动Jenkins和docker,现在您将可以访问。
sudo usermod -aG docker jenkins-server-user-name
sudo systemctl重新启动docker
sudo systemctl重新启动詹金斯
要安装Jenkins:https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-ubuntu-16-04
要安装Docker:https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04
注意:已在ubuntu服务器上验证