我有一个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格式保存。
为什么内联版本工作且文件版本失败?
答案 0 :(得分:0)
这似乎与脚本文件的编码有关。我的文本编辑器Notepad ++以UTF8格式保存文件Folders.groovy。
然后我在Jenkins系统属性页面上注意到以下设置 sun.io.unicode.encoding UnicodeLittle
我打开文件Folders.groovy并将编码从UTF8更改为UTF8而没有BOM。在此更改后,脚本完美运行。
<强>更新强> 我更新到最新版本的Jenkins,并尝试在UTF8中保存Groovy脚本,但它仍然失败。我已经尝试过ANSI和UTF8没有BOM,它们都运行良好,所以我们只需要习惯用非默认编码保存我们的脚本。