如何使用DSL [Jenkins]写入文件?

时间:2015-07-29 21:13:19

标签: jenkins dsl

我目前正在使用DSL制作流程。

在找到I之后,我已经能够找到如何从文本文件中读取,而不是如何写入文本文件。

DSL中是否有命令?

我还要借此机会询问我在哪里可以找到DSL的教程或命令列表?

3 个答案:

答案 0 :(得分:0)

由于DSL是基于Groovy的,我猜你可以编写任何Groovy代码并且它应该可以工作,请参考http://grails.asia/groovy-file-examples以获取如何写入文件的示例。 DSL命令在https://jenkinsci.github.io/job-dsl-plugin/处提供,您可以在http://job-dsl.herokuapp.com/的操场上试用。

答案 1 :(得分:0)

默认情况下,出于安全原因,您无法使用new File(...).text。您可以改为使用writefile

writeFile file: "myfile.txt", text: "File content."

答案 2 :(得分:0)

这是我能想到的最好的,它使用writeFile:

def readEscape(String file) {
  return readFileFromWorkspace(file).replace("\\", "\\\\").replace("\"", "\\\"").replace("\n", "\\n").replace("\r", "\\r").replace("\$", '\\$')
}
def Dockerfile = readEscape('./Dockerfile')
pipelineJob('sample-write-file') {
  definition {
    cps {
      script('''
        pipeline {
          agent any
          stages {
            stage("prep-files") {
              steps {
                writeFile file: './Dockerfile', text: "''' + Dockerfile + '''"
              }
            }
          }
        }
      ''')
    }
  }
}

关于在作业dsl的处理过程中还是在生成的作业的执行过程中是否需要写入文件的问题尚不清楚。由于我需要此文件来执行作业,因此这就是我的示例所显示的内容。创建作业时将读取文件,并将其嵌入到创建的作业定义中。