вывод команды очистки бит в Jenkins Groovy - PullRequest
0 голосов
/ 07 июня 2019

Как очистить вывод команды bat в конвейерном скрипте на Jenkins

Ниже приведен скрипт конвейера, который я использовал.

Drive_list = bat (  label: 'Get Drive List',
                    returnStdout: true,
                    script: 'wmic logicaldisk where DriveType=3 get DeviceID'
                    ).trim()

Drive_list теперь содержит следующее.

{D:\Jenkins\workspace\test>wmic logicaldisk where DriveType=3 get DeviceID 
    DeviceID  

    C:        

    D:}

Что нужно сделать для извлечения списка {'C:','D:'}

Я попытался создать список, используя токен_диск с помощью c_list = Drive_list.tokenize('\r\n'), и теперь c_list равен

{[D:\Jenkins\workspace\test>wmic logicaldisk where DriveType=3 get DeviceID , DeviceID , , C: , , D:]}

Для очистки c_list Я пробовал следующее c_list.removeAll{ it.contains('DeviceID') привело к

{[DeviceID , , C: , , D:]}, который только удалил первую строку, но все еще имеет другие, добавляющие к этому идентификаторы дисков, которые имеют некоторые белые символы, которые я не могу удалить.

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Причина, по которой ни один из методов groovy не работает из-за кодирования, изменил сценарий конвейера, добавив опцию кодирования "UTF-16LE".

Drive_list = bat (  label: 'Get Drive List',
                    returnStdout: true,
                    encoding  : "UTF-16LE",
                    script: 'wmic logicaldisk where DriveType=3 get DeviceID'
                    ).trim()
0 голосов
/ 07 июня 2019

Вы можете использовать собственный метод groovy (java) для получения корневых дисков:

https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()

File[] Drive_list = File.listRoots()


...