2016-06-28 73 views
16

我放在一起詹金斯管道作業,將採取文件參數。我可以觸發這個工作並將它指向一個文件,但是我無法找到文件結束的地方(在普通的自由式工作中它將在工作區中)。詹金斯管道作業與文件參數

上傳的文件去哪了?或者文件參數目前不適用於管道?

回答

3

解決它通過以下方式:

node { 
    deleteDir() 
    stage("upload") { 
     def inputFile = input message: 'Upload file', parameters: [file(name: 'data.zip')] 
     new hudson.FilePath(new File("$workspace/data.zip")).copyFrom(inputFile) 
     inputFile.delete() 
    } 
    stage("checkout") { 
     echo fileExists('data.zip').toString() 

    } 
} 

我知道,因爲管道被中斷的上傳的,但它的工作原理該解決方案是不是漂亮。

此外,該「的copyfrom」是必要的,因爲輸入存儲在作業目錄中,而不是在工作區中的「data.zip」(不知道爲什麼)

+0

'java.nio.file.NoSuchFileException:詹金斯/工作區/工作/ data.zip' –

1

我試着使用@提供的解決方案Christoph Forster,但輸入文件並未被複制到工作區的任何位置。 所以我用的解決方法,因爲在 https://bitbucket.org/janvrany/jenkins-27413-workaround-library/src/6b7dada8ea37?at=default

庫提供了一個新的庫提供 - unstashParam - 即保存文件構建參數轉換成一個工作區。適用於文本和yaml文件。

+0

couldn不能可靠地使用此解決方法 - 隨機文件不會複製到工作區。 –

0

找到一個WA(嚴格用於基於文本的文件輸入) 我們可以使用Jenkins多行字符串參數並要求用戶粘貼文件內容。 而在我們的管道,管道使用WriteFile的一步,因爲寫這個參數的內容:

stage('File Param WA') { 
      writeFile file: 'demo.yaml', text: params.DEMO_YAML 
} 

Multi Line String Parameter