我有詹金斯LTS 2.60.2在Windows Server 2016上,並使用這些插件:詹金斯複製神器無法找到文件夾/ multiProjectPipeline/branchWithSlash
- 文件夾插件(6.1.0)
- Copy Artifact插件(1.38 1.1)
- 流水線插件(2.5)+所有相關的管線子插件
- 其他各種相關的插件...
關於我的設置的詳細信息,請參閱Pipeline to use artifacts from 2 projects associated by the same git branch name,但概括起來我有以下項目:
- 操場
- 前端(多分支管道)(與文件夾插件將所有這些下列項目創建的文件夾)
- 後端(多分支管道)
- 配置(管道帶參數調用BRANCH_NAME)
的前端和後端git回購,都有一個分支叫做主和一個叫版本/ 2017.2。
想法是在每次成功構建之後自動調用配置管道,並傳遞git分支名稱。自動觸發配置管道工程。
什麼是行不通的,我需要你的幫助來修復,是配置管道從一個multibranchPipeline/specificBranch拷貝工件的步驟。
如果對於BRANCH_NAME參數(或上游管道)是主人它的工作原理。如果BRANCH_NAME是:發佈/ 2017.2我得到這個錯誤:
ERROR: Unable to find project for artifact copy: playground/frontend/release%2f2017.2 This may be due to incorrect project name or permission settings; see help for project name in job configuration. Finished: FAILURE
的配置管道看起來是這樣的:
node {
stage('Prepare') {
def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2f")
step([$class: 'CopyArtifact', projectName: "${projectname}", selector: [$class: 'StatusBuildSelector', stable: false]])
}
stage('Archive') {
archiveArtifacts '**'
}
}
正如你可以看到我已經更換/用%2F(這是需要)。
如果我不使用「操場」文件夾(我的所有管道原樣,不在文件夾項目內),它可以工作。如果我使用該文件夾並使用主分支,它就可以工作。如果我使用文件夾和2017.2這樣的分支名稱,它不起作用。我究竟做錯了什麼?你能幫助它工作嗎?很好,如果它是一個錯誤(我在https://issues.jenkins-ci.org搜索,發現一些錯誤,其中類似的文件夾設置不起作用,但他們已被修復...所以我真的很想知道...)在副本神器插件,請文件錯誤和分享鏈接在這裏,所以我們都可以監控其進展...
謝謝。
這也可能是我得到了一個稍微不同的錯誤,並且這不會解決您的問題。儘管如此,它確實表明你想要做的是可行的。 – Kdawg
感謝您的回答Kdawg,也許我沒有指定,但問題出在* configure *作業中。我成功運行*前端*作業(最後一部分調用* configure *我包裝在一個try和catch中,即使它失敗,構建標記爲成功),然後再次運行configure作業,方法是指定參數「發佈/ 2017.2「,這是錯誤顯示的地方。同樣在我的設置中,我沒有使用github,而是使用gerrit作爲git存儲庫。也許在github上它可以工作,但在其他git服務器上卻不行? – firepol
Kdawg,* quietPeriod *和* wait *幫助加快構建並避免使用* try/catch *,但* configure *管道總是失敗並出現此錯誤: 錯誤:無法找到工件副本的項目:遊樂場/前臺/版本%2f2017.2 這可能是由於項目名稱或權限設置不正確;請參閱作業配置中項目名稱的幫助。 Finished:FAILURE' – firepol