为什么Jenkins Job DSL使用提供的脚本但使用文件系统脚本失败?

时间:2015-11-29 16:16:53

标签: jenkins-job-dsl

我有一个groovy脚本来为我的Jenkins服务器创建文件夹。文件夹插件已安装并正常工作。我还安装了Job DSL插件并创建了Seed作业。提供groovy DSL代码有两种选择。 1.使用提供的DSL脚本或2.查看文件系统。

如果我使用选项1并提供此脚本,它可以正常工作,我会看到文件夹:

<button name="update_func" type="object"
                            string="refresh" icon="gtk-refresh" /> 

到目前为止一切顺利。

我将此代码保存到种子作业工作区文件夹中的Folders.groovy中,然后尝试选项2

此操作失败,控制台中的错误消息为:

def folders = '''
Active Folder
Active Folder/DqCpi
Active Folder/DqCtlRent
Active Folder/DqFileBox
'''

def folderList = folders.tokenize('\n')

for (folderName in folderList) {
    folder(folderName)
}

文件Folders.groovy以UTF8格式保存。

为什么内联版本工作且文件版本失败?

1 个答案:

答案 0 :(得分:0)

这似乎与脚本文件的编码有关。我的文本编辑器Notepad ++以UTF8格式保存文件Folders.groovy。

然后我在Jenkins系统属性页面上注意到以下设置 sun.io.unicode.encoding UnicodeLittle

我打开文件Folders.groovy并将编码从UTF8更改为UTF8而没有BOM。在此更改后,脚本完美运行。

<强>更新 我更新到最新版本的Jenkins,并尝试在UTF8中保存Groovy脚本,但它仍然失败。我已经尝试过ANSI和UTF8没有BOM,它们都运行良好,所以我们只需要习惯用非默认编码保存我们的脚本。