Пишите в файл с помощью пост-Groovy сценария Дженкинса на раб - PullRequest
4 голосов
/ 21 февраля 2012

Я хотел бы сделать что-то очень простое: создать / записать в файл, расположенный в удаленном рабочем пространстве ведомого, через плагин jenkins groovy post-build script

def props_file = new File(manager.build.workspace.getRemote() + "/temp/module.properties")

def build_num = manager.build.buildVariables.get("MODULE_BUILD_NUMBER").toInteger()

def build_props = new Properties()
build_props["build.number"] = build_num

props_file.withOutputStream { p ->
    build_props.store(p, null)
}

Последняя строка терпит неудачу, поскольку файл не существует.Я думаю, что это как-то связано с выходным потоком, указывающим на главного исполнителя, а не на удаленную рабочую область, но я не уверен:

Groovy script failed:

java.io.FileNotFoundException: /views/build_view/temp/module.properties (No such file or directory)

Я неправильно записываю в файл?

Ответы [ 3 ]

10 голосов
/ 06 декабря 2013

При записи на ведомое устройство сначала необходимо проверить канал, а затем успешно создать дескриптор файла и начать чтение или запись в этот файл:

if(manager.build.workspace.isRemote())
{
    channel = manager.build.workspace.channel;
}

fp = new hudson.FilePath(channel, manager.build.workspace.toString() + "\\test.properties")

if(fp != null)
{
    String str = "test";
    fp.write(str, null); //writing to file
    versionString = fp.readToString(); //reading from file
}

надеюсь, это поможет!

2 голосов
/ 21 февраля 2012

Найдите слова The post build plugin runs on the manager and doing it as you say will fail if you are working with slaves! на странице плагина (ссылка на которую вы указали) и посмотрите, поможет ли обходной путь там.

0 голосов
/ 21 февраля 2012

Существует ли папка /views/build_view/temp?

Если нет, вам нужно будет сделать new File( "${manager.build.workspace.remote}/temp" ).mkdirs()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...