簡體   English   中英

基礎設施與maven,Jenkins,Nexus

[英]Infrastructure with maven, Jenkins, Nexus

我們正在使用maven。 我想設置基礎架構,以便自動構建的工件將轉到Nexus存儲庫。 然后他們可以被開發人員使用。

我已經為我們的項目設置了一份Jenkins工作。 我在同一台服務器上安裝了Nexus。

在開發人員的PC上,我將默認maven設置復制到添加此部分的C:\\ Users {user} .m2 \\ settings.xml。 參考文獻:

配置Maven使用單個Nexus

Maven設置參考

<mirror>
  <!--This sends everything else to /public -->
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <url>http://myserver:8081/nexus/content/groups/public</url>
</mirror>

(我只是通過Nexus書來關注Repository Management

我的下一步應該是什么? 詹金斯的工作應該mvn install嗎? 如何為公司工件創建Nexus存儲庫?

我不需要對我的項目pom.xml進行任何更改。 相反,在jenkins“Post-build Actions”中,我選擇了“將工件部署到Maven存儲庫”,然后選擇“Advanced”並將存儲庫URL設置為http://nexusserver:8081/nexus/content/repositories/releases和存儲庫ID到deploymentRepo

在jenkins機器上的~/.m2/settings.xml我添加了

<settings>
  <servers>
    <server>
      <id>deploymentRepo</id>
      <username>deployment</username>
      <password>deployment123</password>
    </server>
  </servers>
   ...

</settings>

要將工件部署到Nexus,您需要在pom中包含distributionManagement部分 Nexus附帶了已為快照和版本設置的特定存儲庫。 您應該為每個提供正確的路徑,以便maven將快照和發布工件部署到正確的存儲庫。 然后,每當您部署工件時 - 通常使用mvn deploy或使用maven發布插件 ,工件將在那里部署。 Nexus默認啟用了寫入身份驗證,因此您需要確保將具有正確憑據的服務器部分添加到將要部署工件的任何人的settings.xml中。 Jenkins可以像任何其他用戶一樣對待。 如果你有它的deploy作為其構建,那么每個構建將部署到Nexus。 還有一個用於部署工件的構建后操作,以防您希望稍后在Jenkins作業中發生。

更新pom.xml

 <distributionManagement>
    ...
    <repository>
      <id>deploymentRepo</id>
      <name>Internal Releases</name>
      <url>http://nexusserver:8081/nexus/content/repositories/releases</url>
    </repository>
    ...
  </distributionManagement>

然后為maven ~/.m2/settings.xml添加(這是Nexus中的默認部署用戶)

<server>
  <id>deploymentRepo</id>
  <username>deployment</username>
  <password>deployment123</password>
 </server>

然后mvn deploy

然后可以在任何項目中使用已部署的工件,就像標准工件一樣。 在這種情況下添加到pom.xml

<!-- company repositories -->
    <repository>
        <id>deploymentRepoReleases</id>
        <name>Releases (Nexus)</name>
        <url>http://nexusserver:8081/nexus/content/repositories/releases/</url>
    </repository>
    <repository>
        <id>deploymentRepoSnapshots</id>
        <name>Snapshots (Nexus)</name>
        <url>http://nexusserver:8081/nexus/content/repositories/snapshots/</url>
    </repository>

更新:后來我們離開了Snapshot存儲庫並使用了maven-release-plugin ,它只需要發布類型的存儲庫。

如果這是一個Jenkins問題而不是Maven問題,我建議使用內置的Jenkins“部署工件到Maven存儲庫”大多數情況下的Post build Action。

我認為的優點:

  • 更具可移植性(我們在生命周期的不同階段使用不同的存儲庫),每個Jenkins實例都知道它自己的存儲庫
  • 閱讀詹金斯工作的人更明顯
  • 更符合詹金斯的做事方式

maven-release-plugin的maven目標參數可用於傳遞nexus存儲庫身份驗證

-Dusername=<> -Dpassword=<>

與jenkins項目,maven命令行一起使用,用於nexus repo身份驗證

暫無
暫無

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

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