Jenkinsfile:创建一个新文件(Groovy)

问题描述 投票:0回答:3

我正在尝试编写一个带有创建新文件并稍后使用它的阶段的

Jenkinsfile

无论我做什么,我都会收到以下错误:

java.io.FileNotFoundException: ./ci/new_file.txt (No such file or directory)

这是相关的代码块:

pipeline {
    agent any
    stages {
        stage('Some Stage') {
            steps {
                script{
                    file = new File('./ci/new_file.txt').text
                    file.createNewFile()
                }
            }
        }
    }
}

我讨论了一些类似的问题,但到目前为止没有任何帮助。 请指教。

jenkins groovy jenkins-pipeline jenkins-groovy
3个回答
5
投票

您尚未实际创建该文件并尝试读取该文件。在使用它之前,您必须创建文件。 例如:

pipeline {
    agent any
    stages {
        stage('Some Stage') {
            steps {
                script {
                    File file = new File('./ci/new_file.txt')
                    file.createNewFile()
                    //...
                    String fileText = ... read file
                }
            }
        }
    }
}

但这不是最适合您的解决方案。最好使用 jenkins 步骤“readFile”和“writeFile”。文档在这里 - https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/ 例如:

pipeline {
    agent any
    stages {
        stage('Some Stage') {
            steps {
                script {
                    writeFile file: "./ci/new_file.txt", text: "Some Text"
                    //...
                    String fileText = readFile file: "./ci/new_file.txt"
                }
            }
        }
    }
}

0
投票

您的管道代码是否在远程代理上执行?

Cloudbees 指出,

java.io.File
可能无法在 Pipeline 中工作,并建议使用本机管道步骤与文件交互。

https://support.cloudbees.com/hc/en-us/articles/230922128-Pipeline-Using-java-io-File-in-a-Pipeline-description


0
投票

我之前回答过类似的问题。这是我回答的代码。希望它可以帮助你! 舞台('我的舞台'){ 脚步{ ... 脚本{ writeFile file: 'groovy1.txt', text: '使用 Groovy 方式处理文件很简单。' sh 'ls -l groovy1.txt' sh 'cat groovy1.txt' } } }

© www.soinside.com 2019 - 2024. All rights reserved.