Скрипт Jenkins для копирования или перемещения файла в другое место назначения - PullRequest
0 голосов
/ 17 ноября 2018

Я готовлю сценарий конвейера Jenkins на языке Groovy.Я хотел бы переместить все файлы и папки в другое место.Поскольку Groovy поддерживает Java, поэтому для выполнения операции я использовал ниже Java-код.

pipe {agent any *

 stages{    
     stage('Organise Files'){                         
         steps{  
                script{                        
                    File sourceFolder = new File("C:\\My-Source");
                    File  destinationFolder = new File("C:\\My-Destination");                                                   
                    File[] listOfFiles = sourceFolder.listFiles();
                    echo "Files Total: " + listOfFiles.length;  

                    for (File file : listOfFiles) {
                        if (file.isFile()) {
                            echo file.getName()                                                                
                            Files.copy(Paths.get(file.path), Paths.get("C:\\My-Destination"));                                   
                        }
                    }                  
                }                                
            }                           
        } 
    }
}

Этот код выдает следующее исключение:

groovy.lang.MissingPropertyException: такого свойства нет: Файлы для класса: WorkflowScript

Я тоже пробовал с приведенным ниже кодом, но он тоже не работает.

FileUtils.copyFile(file.path, "C:\\My-Destination");

Наконец я сделалпопробуйте выполнить поток ввода-вывода java для выполнения операции, а код приведен ниже:

def srcStream = new File("C:\\My-Source\\**\\*").newDataInputStream()
def dstStream = new File("C:\\My-Destination").newDataOutputStream()
dstStream << srcStream
srcStream.close()
dstStream.close()

Но он также не работает и выдает следующее исключение:

java.io.FileNotFoundException: C: \ My-Source (доступ запрещен)

Может кто-нибудь предложить мне, как решить проблему, и, пожалуйста, также дайте мне знать, как я могу удалить файлы из исходного расположения после копирования илиподвинь это?Еще одна вещь, во время копирования я могу отфильтровать некоторые папки и файлы, используя подстановочный знак?Пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 17 ноября 2018

Не выполняйте эти функции ввода-вывода, используя простой Java / Groovy. Даже если вы запустите этот процесс, он всегда будет выполняться на главном сервере, а не на агентах сборки. Для этого используйте шаги конвейера , например:

bat("xcopy C:\\My-Source C:\\My-Destination /O /X /E /H /K")

или с помощью плагина File Operations

fileOperations([fileCopyOperation(
  excludes: '',
  flattenFiles: false,
  includes: 'C:\\My-Source\\**',
  targetLocation: "C:\\My-Destination"
)]).

Я предполагаю, что не использовал правильный синтаксис путей Windows здесь в моих примерах, но я надеюсь, что вы поняли.

...