2016-07-06 97 views
1

我有一個詹金斯設置組成一個主人和兩個奴隸。我有詹金斯工作(只在奴隸上運行),它會在每次提交時創建二進制文件。目前,詹金斯將這些文物歸檔到詹金斯大師的某處。當我希望使用bash shell腳本下載二進制文件時,我使用wget url_link_to_particular_artifact。我想改變這一點。我想將所有生成的構件複製到主節點上的一個公共位置。因此,url將保持不變,只有最後一部分會相對於生成的二進制名稱發生變化。我用標籤標記我的二進制文件,以便稍後檢索它們很容易。現在,是否有插件可以將工件複製到主節點中,但是可以提供給我可以提供的位置。主節點和從節點都是redhat linux機器。詹金斯 - 工件處理

我已經通過了Artifactory插件,我不想使用它。我想要一些非常簡單的實現。是否真的需要在我希望將工件複製到主設備上的位置運行Web服務器?我可以通過SSH將工件從奴隸傳遞給主人嗎?如果是,如何?

編輯:

我已經取得了一些進步,我現在有點卡住:假設我們有正在運行的詹金斯主節點上的Web服務器。從節點是否有可能將工件發送到這個位置,並且Web服務器將它寫入到主服務器上該位置的文件系統中?

+0

你有沒有試過其他的[Artifact Deployer plugin](https://wiki.jenkins-ci.org/display/JENKINS/ArtifactDeployer+Plugin)?或者你可以運行一個[後期構建任務/腳本](https://wiki.jenkins-ci.org/display/JENKINS/Post+build+task) – Morfic

+0

我認爲我們可以只將工件部署到從屬節點(節點使用Artifact Deployer進行構建)。我想將它複製到主節點。是的,劇本出現在我的腦海中,但我希望作爲最後的手段。如果已經有很好的插件可用,那麼我想首先利用這種用法。 –

+0

自從我上次配置分佈式作業並且我無法訪問此類系統以進行快速測試以來,這已經有一段時間了,但如果我沒有錯,Jenkins會自動傳輸構建在從屬設備上的主構件,至少對於檔案目的。如果不是這種情況,您可以使用[複製到從屬插件](https://wiki.jenkins-ci.org/display/JENKINS/Copy+To+Slave+Plugin)將文件傳入和傳出從站。 – Morfic

回答

0

這當然是可能的,但讓我給你解釋一下,爲什麼這是一個壞主意。

詹金斯不是你的神器儲存庫。事實上,您可以將您的工件存儲在Jenkins中,但它並非旨在這樣做。如果你將爲大部分工作做到這一點,你將遇到磁盤空間等問題,甚至與名稱競爭。 更何況,你不想在一個目錄中有數百或數千個文件。

更好的方法是使用工件存儲庫,例如Nexus來存儲工件。您可以通過不同的渠道輕鬆管理和檢索它們。

請記住,將Jenkins保持在無狀態模式並且版本控制您的配置以便於恢復將會很好。

如果你仍然想將你的工件存儲在一個Web位置,我建議設置一個nginx服務器,代理/ jenkins調用jenkins和/ artifacts到你的工件目錄。

+0

是的,我同意你的回答。這只是解決問題的臨時解決方案。這些工件只是後來用於迴歸測試的二進制文件等等。因此,在任何時間段內都不需要存在2-3個以上的工件。來到你的答案的第二部分,不能有一個插件,它會使奴隸將工件發送到主服務器上的Web服務器,並且該服務器將它寫入文件系統中?我不想代理調用,因爲我需要工件的兩個副本 - 一個在'$ JENKINS_HOME'中,另一個在此特定位置。 –