Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 詹金斯档案代理;dockerfile“;参数化';目录';论点_Jenkins_Dockerfile_Jenkins Pipeline - Fatal编程技术网

Jenkins 詹金斯档案代理;dockerfile“;参数化';目录';论点

Jenkins 詹金斯档案代理;dockerfile“;参数化';目录';论点,jenkins,dockerfile,jenkins-pipeline,Jenkins,Dockerfile,Jenkins Pipeline,我在Jenkins 2.280中使用了一个带有顺序阶段的声明性管道 dockerfile的dir参数应从${params}获取: pipeline { agent none parameters { choice(name: PLATFORM, choices: ['dir1', 'dir2', ...], description: '') string(name: FOO, defaultValue: 1001, description: 'Interesting nu

我在Jenkins 2.280中使用了一个带有顺序阶段的声明性管道

dockerfile
dir
参数应从
${params}
获取:

pipeline {
  agent none
  parameters {
    choice(name: PLATFORM, choices: ['dir1', 'dir2', ...], description: '')
    string(name: FOO, defaultValue: 1001, description: 'Interesting number')
  }
  stages {
    stage('Top') {
      agent {
        dockerfile {
          filename 'Dockerfile'
          dir 'platforms/${params.PLATFORM}'   // <-- HERE
          label 'master'
          additionalBuildArgs '--build-arg FOO=${params.FOO}'
          args '--mount type=bind,source=/opt/tools,target=/tools,readonly'
        }
      }  // agent
      stages {
        stage('Checkout') {
          steps { checkout scm }
        }
        stage('Build') {
          sh """
            // call cmake
            // call ninja
          """
        }
        ...
      } // stages
    } // Top
  } // stages
} // pipeline
这两件事怎么办

有更好的方法吗


更新:我的问题是管道项目名称中有一个“空格”。

我试图创建一个类似于您的示例。请看一下Docker文件和dockerfile代理如何在声明性管道中使用

Dockerfile

FROM alpine
ARG PACKAGE
RUN apk add ${PACKAGE}
pipeline {
  agent {
     dockerfile {
        filename 'Dockerfile'
        dir "${params.DOCKERFILE_PATH}"
        additionalBuildArgs  "--build-arg PACKAGE=${params.PACKAGE}"
        args '-v /tmp:/tmp'
     }
   }
   parameters {
        string(name: 'DOCKERFILE_PATH', defaultValue: 'src01', description: 'Pick Dockerfile from a folder')
        text(name: 'PACKAGE', defaultValue: 'curl', description: 'Package To Be Installed')
   }
   stages {
     stage('build'){
        steps {
          sh 'git version'
        }
     } 
   }
}

Jenkinsfile

FROM alpine
ARG PACKAGE
RUN apk add ${PACKAGE}
pipeline {
  agent {
     dockerfile {
        filename 'Dockerfile'
        dir "${params.DOCKERFILE_PATH}"
        additionalBuildArgs  "--build-arg PACKAGE=${params.PACKAGE}"
        args '-v /tmp:/tmp'
     }
   }
   parameters {
        string(name: 'DOCKERFILE_PATH', defaultValue: 'src01', description: 'Pick Dockerfile from a folder')
        text(name: 'PACKAGE', defaultValue: 'curl', description: 'Package To Be Installed')
   }
   stages {
     stage('build'){
        steps {
          sh 'git version'
        }
     } 
   }
}

groovy必须插入您的运行时参数,为此,您必须用
包装它<代码>''将不起作用

在你的情况下,它将是

dockerfile {
    filename 'Dockerfile'
    dir "platforms/${params.PLATFORM}"
    label 'master'
    additionalBuildArgs "--build-arg FOO=${params.FOO}"
    args '--mount type=bind,source=/opt/tools,target=/tools,readonly'
}

谢谢你的帮助@samit kumar patel。我正试着找时间回去测试它!嗨@samit kumar patel,在整个过程中替换双引号之后,在替换变量的值之后,删除所有脚本,删除注释等等。所以它被完全剥离了。。。我还是犯了同样的错误。我把这个项目从“foobar”改名为“foobar”,它成功了!你的回答并没有解决我的问题,但我还是会“接受”,因为你帮助了我!谢谢