Jenkinfile DSL如何指定目标目录

时间:2016-03-29 15:32:32

标签: jenkins jenkins-pipeline

我正在探索Jenkins 2.0管道。到目前为止,我的文件很简单。

node {
    stage "checkout"
    git([url:"https://github.com/luxengine/math.git"])

    stage "build"
    echo "Building from pipeline"
}

我似乎无法找到任何方法来设置git将结帐的目录。我也找不到与此相关的任何文件。我发现https://jenkinsci.github.io/job-dsl-plugin/但它似乎与我在其他教程中看到的不匹配。

5 个答案:

答案 0 :(得分:18)

澄清

看起来您正在尝试配置Pipeline作业(以前称为“工作流程”)。这类工作与Job DSL非常不同。

管道工作的目的是:

  

协调可以跨越多个构建从属的长时间运行的活动。适用于构建管道(以前称为工作流程)和/或组织不易适应自由式工作类型的复杂活动。

作为工作DSL的地方:

  

...允许使用DSL以编程方式创建项目。将作业创建推送到脚本中可以让您自动化和标准化Jenkins安装,这与以前不同。

解决方案

如果要将代码签出到特定目录,请将git步骤替换为更常规的SCM checkout步骤。 最终Pipeline配置应如下所示:

node {
    stage "checkout"
    //git([url:"https://github.com/luxengine/math.git"])
    checkout([$class: 'GitSCM', 
        branches: [[name: '*/master']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [[$class: 'RelativeTargetDirectory', 
            relativeTargetDir: 'checkout-directory']], 
        submoduleCfg: [], 
        userRemoteConfigs: [[url: 'https://github.com/luxengine/math.git']]])

    stage "build"
    echo "Building from pipeline"
}

作为Jenkins 2.0Pipeline DSL的未来参考,请使用内置的代码段生成器documentation

答案 1 :(得分:10)

这可以通过使用dir:

的指令来完成
.class-name {
  background-image: url("images/file.jpg")
}

答案 2 :(得分:1)

首先要明确您使用的是Jenkins Job DSL。

你可以这样做:

    scm {
        git {
            wipeOutWorkspace(true)
            shallowClone(true);
            remote {
                url("xxxx....")
                relativeTargetDir('checkout-folder')
            }
        }
    }

上面这个地址让你有机会输入左上角的例子'scm'而不是它会显示哪些关系'scm'可以使用。你可以选择'scm-freestylejob'然后点击'***',你可以看到详细信息。

Jenkins Job DSL的一般起点是:

您当然可以在SO或Google论坛上询问:

答案 3 :(得分:0)

您使用的是Pipeline Plugin,而不是Job DSL Plugin。在Pipeline Plugin中,如果要定义某些内容,而Pipeline语法中还没有可用的函数,则可以define it yourself

答案 4 :(得分:0)

    pipeline {

      agent any
      stages{
        stage("Checkout") {
            steps {
                    dir('def exists = fileNotExists \'git\'') {
                      bat label: '', script: 'sh "mkdir.sh'
                    }
                    dir ('cm') {
                        git branch: 'dev',
                        credentialsId: '<your credential id>',
                        url: '<yours git url>'
                    }
                }
            } //End of Checkout stage
        stage("TestShellScript") {
            steps {
                bat label: '', script: 'sh "PrintNumber.sh"'
            }
          }
        }//End of stages
    } // End of pipeline


Note: cat mkdir.sh
#!/bin/bash
#Create a directory
mkdir git