2017-02-15 46 views
2

CI系統:詹金斯與詹金斯Artifactory的插件,使用流水線作業
語言: Java中,與Maven不允許重新部署,以釋放存儲庫

建我們有一個設置,其中「發佈版本」是應該被上傳到一個臨時存儲庫,並且應該能夠從連續的Jenkins構建中被覆蓋(例如,因爲發佈/ xxx分支中的錯誤修正)。
發佈版本不應該被允許直接上傳到發佈版本庫,但應該被允許提升到發佈版本中。他們當然不應該被允許從促銷或直接上傳中被覆蓋。

在我們當前的設置中,我們已經成功地允許重新裝配,並且不允許「重新促銷」發佈。但發行工件仍可以重新部署到發佈存儲庫中。

對於詹金斯用戶有效權限:

  • 發行庫
    • 刪除/覆蓋:
    • 部署/緩存:真正
    • 註釋:真正
    • 閱讀:真正
  • 分期
    • 刪除/覆蓋:真正
    • 部署/緩存:真正
    • 註釋:真正
    • 閱讀:真正

那麼,有沒有一種方法:

  1. 不允許部署(和重新展開時),以釋放存儲庫
  2. 允許一個促銷每個版本發佈到版本庫
  3. 不允許「重新升級」到版本庫
  4. 允許展開時(和重新展開時)到暫存庫

優選地,僅使用Artifactory的權限設置。

+0

你知道從Maven的觀點來看,用不同的內容覆蓋,即重新剝離「發佈版本」(具有相同的發佈版本號)是違反Maven的哲學的,對嗎?這就是snaphot版本的目的。即使它只是您的臨時存儲庫。 Maven不知道任何有關分級存儲庫的信息。它只知道快照和發佈。 –

回答

5

看來你是在正確的軌道上。正如您所提到的,您可以通過撤銷「刪除/覆蓋」權限來「阻止」重新部署(覆蓋)。針對特定用戶或針對您的案例中的所有用戶。爲了回答您的具體使用情況,你需要做的是:

  1. 不允許部署(和重新展開時),以釋放存儲庫

[A1]創建推廣用戶,這將已經向發佈版本庫部署權限。除此用戶外,其他任何用戶都不應該將權限部署到該存儲庫。它還應該具有對分段存儲庫的讀取權限。請注意,管理員用戶仍然擁有所有存儲庫的所有權限,但我相信這不應該有任何問題。

  • 允許每個版本的一個推廣到釋放資源庫
  • [A2]不要把促進用戶(見A1)刪除釋放存儲庫的權限。因此,在正在嘗試覆蓋的情況下,您將收到一條錯誤消息:

    「message」:「沒有足夠的權限來覆蓋工件'repoX:path/to/file'(用戶'YYY'需要DELETE權限) 「。

  • 不允許 「再促銷」,以釋放資源庫
  • [A3]見A2

  • 允許展開時(並重新部署)到分段存儲庫
  • [A4]爲Jenkins用戶在暫存存儲庫上刪除權限。

    這應該使用Artifactory許可目標來實現。