簡體   English   中英

在 Pipeline 中將文件從 Jenkins master 復制到 slave

[英]Copy file from Jenkins master to slave in Pipeline

我的 Jenkins 有一些 windows 奴隸,所以我需要在管道中將文件復制到他們。 我聽說過 Copy To Slave 和 Copy Artifact 插件,但它們沒有管道語法手冊。 所以我不知道如何在管道中使用它們。

直接復制不行。

def inputFile = input message: 'Upload file', parameters: [file(name: 'parameters.xml')]
new hudson.FilePath(new File("${ENV:WORKSPACE}\\parameters.xml")).copyFrom(inputFile)

此代碼返回錯誤:

Caused: java.io.IOException: Failed to copy /var/lib/jenkins/jobs/_dev/jobs/(TEST)job/builds/107/parameters.xml to d:\Jenkins\workspace\_dev\(TEST)job\parameters.xml

有沒有辦法在 Jenkins 管道中將文件從主機復制到從機?

據我了解, copyFrom是在Windows節點上執行的,因此無法訪問源路徑。

我認為您想研究stash / unstash stash步驟( Jenkins Pipeline:基本步驟 ),該步驟可在不同節點上工作。 同樣,此示例可能會有所幫助。

管道DSL上下文在master節點上運行,即使您在管道中的寫入node('someAgentName')也是如此。

  • 嘗試使用stash / unstash ,但這對大文件不利。
  • 嘗試使用外部Workspace Manager插件 它具有管道步驟,適合大型文件。
  • 嘗試使用中間存儲。 archive()sh("wget $url")會有所幫助。

如果需要將可執行文件復制到測試從站並發布測試結果,則無需復制到從站插件即可輕松完成。

應該在每個測試從站上創建一個共享文件夾(普通的 Windows 共享文件夾)。

構建后:構建腳本將可執行文件復制到每個從站上的共享目錄。 使用copy命令的簡單批處理腳本就足夠了。

stage ('Copy to slaves') {
    steps {
        bat 'call "copy-to-slave.bat"'
    }
}

在測試期間:測試腳本將可執行文件復制到另一個目錄並運行它。

測試后:構建后動作“發布機器人框架測試結果”可用於報告測試結果。 無需先將測試結果文件復制回主站。

我在Pipeline: Phoenix AutoTest插件

Jenkins插件網址: https://plugins.jenkins.io/phoenix-autotest/#documentation

GitHub 插件倉庫: https://github.com/jenkinsci/phoenix-autotest-plugin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM