Получение ошибки «Файл не найден» с плагином Jenkins pipe «Замена содержимого», даже если файл существует - PullRequest
0 голосов
/ 04 февраля 2019

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

Я получаю следующую ошибку (с использованием ведомого устройства Jenkins Windows) java.io.FileNotFoundException: Файл 'D: \ JenkinsRoot \ workspace \ TestJob2 \ lib \ database.cfg 'не существует

Я вижу, что файл существует на ведомом устройстве.

Вот пример кода,

pipeline {
agent { label 'mynode' }
stages {
    stage('Test') {
        steps {
            checkout([$class: 'SubversionSCM', 
                additionalCredentials: [[...]], 
                excludedCommitMessages: '', 
                excludedRegions: '', 
                excludedRevprop: '', 
                excludedUsers: '', 
                filterChangelog: false, 
                ignoreDirPropChanges: false, 
                includedRegions: '', 
                locations: [[
                    credentialsId: '...', 
                    depthOption: 'infinity', 
                    ignoreExternalsOption: true, 
                    local: '.', 
                    remote: '...']], 
                workspaceUpdater: [$class: 'CheckoutUpdater']])
            sleep 5
            contentReplace(configs: [
                fileContentReplaceConfig(
                    configs: [
                        fileContentReplaceItemConfig(
                            matchCount: 1, 
                            replace: 'PSTG_USER=${PSTG_USER}', 
                            search: '^PSTG_USER=.*')], 
                        fileEncoding: 'UTF-8', 
                        filePath: 'lib/database.cfg')
        }
        }
    }
}

В приведенном выше выполнении проверка выполняется правильно, и я добавил sleep только для того, чтобы не обновлять файл слишком рано.Тем не менее, я получаю файл не найдена ошибка.Любые указатели?

Файл существует, как с использованием приведенной ниже команды на ведомом устройстве Windows,

D:\>dir D:\JenkinsRoot\workspace\TestJob2\lib\database.cfg
 Volume in drive D has no label.
 Volume Serial Number is 3268-CE51

 Directory of D:\JenkinsRoot\workspace\TestJob2\lib

02/04/2019  06:24 AM               175 database.cfg
               1 File(s)            175 bytes
               0 Dir(s)  101,310,660,608 bytes free

1 Ответ

0 голосов
/ 06 февраля 2019

Следующий код работал для меня,

pipeline {
    agent none
    stages {
        stage("Test") {
            steps {
                node('mynode'){
                    checkout(...)
                    script {
                        String out = readFile('lib/database.cfg').trim()
                        //This prints the original text
                        print out
                        out = out.replaceFirst(/DB_USER=.*/, "DB_USER=$DB_USER")
                        //This prints the replaced text
                        print out
                        writeFile(file: 'lib/database2.cfg', text: out, encoding: 'UTF-8')
                    }
                    //This prints the replaced text from the file
                    bat "type lib\\database2.cfg"
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...