持续交付的咱们常见的流程以下,其中有一个环节就是软件包管理html
今天咱们以maven仓库为示例,以下是Jenkins与CD生态:java
Nexus为软件组件管理工具,经过软件开发周期的自动化管理,能够有效管理与控制组件,让管理更加智能化。目前为二进制包管理仓库行业佼佼者,该产品一大特点是能够获得开源组件的详细信息,如安全漏洞、License使用和质量信息。总之,加快软件创新、质量和安全。使用Nexus能够带来如下的便利:docker
1 经过自动化管理,能够减小运维成本数据库
2 提高构建性能,减小人工操做失误apache
3 经过UI页面在线操做,实现可视化控制json
4 定义过滤组件的策略,提高对组件的审查力度promise
5 隔离有危害的组件,减小安全隐患安全
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 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]
目前方案有:
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
中指定构建命令为上传二方库,例如:
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所示。
说明:
只有租户管理员才能够看见“权限管理”。
下载成功后,全部用户密码信息(包括Group用户、Releases用户和Snapshots用户)显示在XML文件中,如图2所示。
说明:
“settings.xml”文件用于配置Server(链接远程仓库时的验证方式)与Mirror(远程仓库镜像)。
说明:
在“settings.xml”文件中配置访问仓库须要的用户名和密码,包括Group用户、Releases用户与Snapshots用户,如图3所示。
说明:
各用户名及密码分别对应步骤步骤2中XML文件的“username”与“password”。
在“settings.xml”文件中配置远程仓库镜像涉及的仓库URL、仓库访问用户名和密码,即在<mirrors>节点中增长须要的仓库镜像,如图4所示。
说明:
“url”为步骤步骤2中Group用户获取的仓库地址。
在Maven的“pom.xml”工程文件中,配置项目POM,即构建上传包,如图5所示。
说明:
参考:
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.
Navigate to the Packages hub in the Build & Release hub group:
Click the dropdown in the top left and select New feed:
In the dialog:
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.
You can change these settings later by editing the feed.
To talk to VSTS feeds, you'll need a token on your local machine that Maven can pick up and pass to VSTS.
Navigate to the feed that you'd like to use and select Connect to feed.
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.
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/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,企业信息化, 团队管理 资讯,请关注个人微信订阅号:
做者:Petter Liu
出处:http://www.cnblogs.com/wintersun/ 本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。 该文章也同时发布在个人独立博客中-Petter Liu Blog。