持續交付之軟件包管理maven篇


背景

持續交付的我們常見的流程如下,其中有一個環節就是軟件包管理

clipboard

今天我們以maven倉庫為示例,如下是Jenkins與CD生態:

clipboard

持續交付的示例

clipboard

5 Principles 五個原則

  • Deliver fast
  • Automate almost everything
  • Keep everything in version control
  • Build quality In
  • Empower the team


NEXUS介紹

Nexus為軟件組件管理工具,通過軟件開發周期的自動化管理,可以有效管理與控制組件,讓管理更加智能化。目前為二進制包管理倉庫行業佼佼者,該產品一大特色是可以得到開源組件的詳細信息,如安全漏洞、License使用和質量信息。總之,加快軟件創新、質量和安全。使用Nexus可以帶來以下的便利:

1 通過自動化管理,可以減少運維成本

2 提升構建性能,減少人工操作失誤

3 通過UI頁面在線操作,實現可視化控制

4 定義過濾組件的策略,提升對組件的審查力度

5 隔離有危害的組件,減少安全隱患

093912_9459

Nexus由三部分組成:Nexus Repository、Nexus Firewall和Nexus Lifecycle。

Nexus Repository

充當倉庫角色,負責整個Nexus產品的運行,可以存儲從開發環境部署的組件,及保存從遠程公共倉庫下載到本地的組件。

Nexus Firewall

保護Nexus Repository安全運行,阻止有危害的組件進入,並且可以隔離它們不進入倉庫。

Nexus Lifecycle

組件的軟件開發周期過程管理,通過與Eclipse、Jenkins、Hudson、Bamboo、IDEA開發工具集成插件,查看組件的基本運行信息。在軟件開發周期每一個階段,通過制定策略自動化過濾不想要的組件進入Nexus Repository。提供一組REST APIs,允許客戶開發定制化功能。
下載鏈接為
https://www.sonatype.com/download-oss-sonatype。安裝和使用請參考其官方文檔


Docker安裝

Docker 修改源

默認進行docker pull命令下載一些基礎鏡像時,是從國外源下載的,經常會網絡超時失敗,這時可以添加配置國內源,以便快速的進行下載;

修改 /etc/docker/daemon.json 文件中的”registry-mirrors”配置項

"registry-mirrors": [https://registry.docker-cn.com]

搭建Nexus服務

1 . 鏡像下載

docker pull sonatype/nexus3

2 . 使用nexus鏡像啟動容器服務

docker run -d -p 8081:8081 --name nexus -v /data/nexus:/nexus-data sonatype/nexus3

3 . 訪問nexus, 進行服務初始化 , 默認管理用戶 [admin:admin123]

http://localhost:8081/


構建雲端的Maven私有倉庫

目前方案有:

1.阿里雲 -- 雲效的企業級Maven私有倉庫服務

當用戶開通了Maven私有倉庫服務后,雲效會為用戶生成兩個私有倉庫,一個用於存放release版本的二方庫,一個用於存儲SNAPSHOT版本的二方庫。

release倉庫地址示例:

 
 
 
         
  1. https://repo.rdc.aliyun.com/repository/24409-release-87w1FL/

SNAPSHOT倉庫地址示例:

 
 
 
         
  1. https://repo.rdc.aliyun.com/repository/24409-snapshot-AA0Hx0/
雲效構建時從私有倉庫下載二方庫

如果用戶項目代碼庫的根目錄沒有Maven的settings.xml文件,那么雲效構建時會為用戶自動生成一個settings.xml文件。該文件不僅包括了maven.aliyun.com等公共倉庫地址,也自動引入了該企業的兩個私有倉庫地址。所以用戶通過雲效構建時,無需任何額外配置就可以實現下載私有倉庫中的二方庫。

如果用戶項目代碼庫的根目錄定制了Maven的settings.xml文件,那么用戶需要自行將私有倉庫的配置信息添加到該文件中。具體可以參考Maven私有倉庫服務

通過雲效上傳二方庫到私有倉庫

如果想通過流水線發布二方庫到私有倉庫,可以先在項目代碼庫根目錄的pom.xml中指定分發的倉庫地址,示例如下:

 
 
 
         
  1. <distributionManagement>
  2. <repository>
  3. <id>releases</id>
  4. <url>http://repo.rdc.aliyun.com/repository/24409-release-87w1FL/</url>
  5. </repository>
  6. </distributionManagement>

項目代碼庫根目錄的<應用名>.release中指定構建命令為上傳二方庫,例如:

  1. build.command=mvn clean deploy -Dmaven.test.skip


更多參考:

https://help.aliyun.com/document_detail/72474.html?spm=a2c4g.11186623.2.3.JDs8ca

https://helpcdn.aliyun.com/document_detail/57890.html

2. 華為雲 --  Maven私有倉庫

  1. 登錄發布服務首頁。
  2. 獲取Maven倉庫用戶名及密碼。

    在發布服務首頁右上角單擊“獲取密碼”,如圖1所示。

    圖1 獲取密碼

    說明:

    只有租戶管理員才可以看見“權限管理”。

    下載成功后,所有用戶密碼信息(包括Group用戶、Releases用戶和Snapshots用戶)顯示在XML文件中,如圖2所示。

    圖2 XML文件用戶密碼信息

    說明:

    • 倉庫地址中的域名,請修改為“devrepo.devcloud.hwclouds.com”。
    • 用戶名密碼僅為樣例,為方便描述,用戶名與密碼均以“123”為例,請以實際下載為准。
  3. 配置Maven的“settings.xml”文件。

    “settings.xml”文件用於配置Server(連接遠程倉庫時的驗證方式)與Mirror(遠程倉庫鏡像)。

    說明:

    • “settings.xml”文件位於本地目錄“$MAVEN/conf”下,如“D:\maven3.3.9\conf”。
    • 如果只需要使用公共庫,可以直接將“mirror倉庫”里的倉庫地址復制到“settings.xml”中的mirrors里,servers里的用戶名和密碼默認為倉庫名(如:jcenter倉的用戶名和密碼都為jcenter)。
    1. 配置Server連接遠程倉庫時的驗證方式。

      在“settings.xml”文件中配置訪問倉庫需要的用戶名和密碼,包括Group用戶、Releases用戶與Snapshots用戶,如圖3所示。

      圖3 Server配置

      說明:

      各用戶名及密碼分別對應步驟步驟2中XML文件的“username”與“password”。

    2. 配置Mirror遠程倉庫鏡像。

      在“settings.xml”文件中配置遠程倉庫鏡像涉及的倉庫URL、倉庫訪問用戶名和密碼,即在<mirrors>節點中增加需要的倉庫鏡像,如圖4所示。

    圖4 Mirror配置

    說明:

    “url”為步驟步驟2中Group用戶獲取的倉庫地址。

  4. 配置項目POM文件。

    在Maven的“pom.xml”工程文件中,配置項目POM,即構建上傳包,如圖5所示。

    圖5 項目POM配置

    說明:

    • 倉庫路徑中Releases用戶與Snapshots用戶獲取的倉庫地址“url”請直接在發布首頁“Maven倉庫(Release)” 和“Maven倉庫(Snapshot)” 頁簽中分別進行復制。
    • 上傳本地IDE工具構建包時才需要配置POM文件。

參考:

https://devcloud.huaweicloud.com/releaseman/repository/maven

https://support.huaweicloud.com/usermanual-releaseman/releaseman_hlp_00004.html

3. 微軟 -- Visual Studio Team Services(VSTS)

A feed is a container for packages. You consume and publish packages through a particular feed.

  1. Navigate to the Packages hub in the Build & Release hub group:

    Go to Packages hub

  2. Click the dropdown in the top left and select New feed:

    New feed button

  3. In the dialog:

    • Give the feed a name.
    • Choose who can read and contribute (or update) packages in your feed.
    • Choose the upstream sources for your feed.
    • When you're done, choose Create.

Most of the default settings work great for most feed users. Making your feed account visible means it's easy to share a single source of packages across your entire team. Enabling upstream sources to public sources makes it easy to use your favorite OSS packages, and can also give you additional protection against outages and corrupted or compromised packages.

New feed dialog

You can change these settings later by editing the feed.

Set up authentication

To talk to VSTS feeds, you'll need a token on your local machine that Maven can pick up and pass to VSTS.

  1. Navigate to the feed that you'd like to use and select Connect to feed.

    Connect to feed button in the upper-right of the page

  2. Open the Maven tab, choose Generate Maven credentials, and copy the generated credentials. (images below)

    • Maven pulls credentials from your settings.xml file.

    • On Linux, the file path is usually "${user.home}/.m2/settings.xml"

    • On macOS, the file path is usually "~/.m2/settings.xml"

    • On Windows, the file path is usually "%USERPROFILE%/.m2/settings.xml"

    • If the file doesn't exist, create one now.

  3. Inside the <settings> and <servers> elements in the file, paste the credentials you copied in Step 3 above.

Sample settings.xml:

XMLCopy

<settings> <servers> <!-- Copy this section from the Maven section of the "Connect to Feed" dialog" --> <server> <id>yourAccount-visualstudio.com-yourFeedName</id> <configuration> <httpHeaders> <property> <name>Authorization</name> <!--The generated token expires on or before 7/19/2017--> <value>Basic Y2Fqb...</value> </property> </httpHeaders> </configuration> </server> </servers> </settings> 

NOTE: You can find more information about the settings.xml file in the settings.xml reference.

參考:

https://docs.microsoft.com/en-us/vsts/package/get-started-maven?%3ftoc=%2fvsts%2fjava%2ftoc.json&%3bbc=%2fvsts%2fjava%2fbreadcrumb%2ftoc.json&view=vsts

https://docs.microsoft.com/en-us/vsts/package/maven/pom-and-settings?view=vsts

https://docs.microsoft.com/en-us/vsts/pipelines/apps/java/build-maven?view=vsts&tabs=vsts


目前情況下 各個雲端服務的對比:

1. 文檔: 阿里雲的雲效的文檔更為正式,華為雲的文檔還在論壇中,不完整,  微軟VSTS官方文檔詳細。

2. 流水線: 阿里雲,華為雲,微軟VSTS的私有倉庫都與其研發平台流程線打通了。

3. 價格: 目前都沒有收費,對於小型開發團隊還是比較適合的。微軟VSTS限制5個開發人員賬號

4. 速度:阿里雲,華為雲較快,微軟VSTS較慢

-----------------------------------------------------------------------------

今天先到這兒,希望對您技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平台的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計划
構建高效的研發與自動化運維
某大型電商雲平台實踐
互聯網數據庫架構設計思路
IT基礎架構規划方案一(網絡系統規划)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之采購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變

如有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發布在我的獨立博客中-Petter Liu Blog。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM