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

背景

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

clipboard

今天咱們以maven倉庫爲示例,以下是Jenkins與CD生態:java

clipboard

持續交付的示例

clipboard

5 Principles 五個原則

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


NEXUS介紹

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

1 經過自動化管理,能夠減小運維成本數據庫

2 提高構建性能,減小人工操做失誤apache

3 經過UI頁面在線操做,實現可視化控制json

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

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倉庫地址示例:

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

SNAPSHOT倉庫地址示例:

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

若是用戶項目代碼庫的根目錄沒有Maven的settings.xml文件,那麼雲效構建時會爲用戶自動生成一個settings.xml文件。該文件不只包括了maven.aliyun.com等公共倉庫地址,也自動引入了該企業的兩個私有倉庫地址。因此用戶經過雲效構建時,無需任何額外配置就能夠實現下載私有倉庫中的二方庫。

若是用戶項目代碼庫的根目錄定製了Maven的settings.xml文件,那麼用戶須要自行將私有倉庫的配置信息添加到該文件中。具體能夠參考Maven私有倉庫服務

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

若是想經過流水線發佈二方庫到私有倉庫,能夠先在項目代碼庫根目錄的pom.xml中指定分發的倉庫地址,示例以下:

 
 
 
 
<distributionManagement> <repository> <id>releases</id> <url>http://repo.rdc.aliyun.com/repository/24409-release-87w1FL/</url> </repository></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。

相關文章
相關標籤/搜索