Jenkinsfile中的Docker代理在输出日志中正确的语法和命令未找到错误

时间:2018-08-03 04:57:06

标签: java docker jenkins-pipeline

我检查了其他帖子,但它们不是我的问题所代表的意思。 我正在上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,因为该课程中的一个不再可用,因此我在控制台日志输出中得到此错误: enter image description here

如果转到节点终端并手动运行

  

docker运行openjdk:7u181-jre   它工作正常,我不是以sudo用户身份运行。

我也不了解docker命令在Jenkinsfile中的作用:它是在拉容器之后还是只是拉容器之后运行容器?

关于发生了什么的任何想法? 谢谢。

1 个答案:

答案 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服务器上验证