背景

持续交付的我们常见的流程如下,其中有一个环节就是软件包管理

今天我们以maven仓库为示例,如下是Jenkins与CD生态:


持续交付的示例


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 隔离有危害的组件,减少安全隐患

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:

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

  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.

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.

  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,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。

持续交付之软件包管理maven篇的更多相关文章

  1. 持续交付的Mesos与Docker导入篇

    变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0.虚拟化.云计算.大数据.微架构.DevOps再到今天的容器Docker与Mesos. Docker的出现方便了 ...

  2. [持续交付实践] pipeline使用:Multibranch Pipeline

    前言 在探讨multiBranch Pipeline之前,很有必要先探讨下如何制定有效的代码分支管理规范,使用高效的版本控制系统,并对构建产物及其依赖进行管理.我们首先要强调,需要进行版本控制的不仅是 ...

  3. 人多力量大vs.两个披萨原则,聊聊持续交付中的流水线模式

    人多力量大vs.两个披萨原则,聊聊持续交付中的流水线模式 在前面5期文章中,我们分别详细介绍了持续交付体系基础层面的建设,主要是多环境和配置管理,这些是持续交付自动化体系的基础,是跟我们实际的业务场景 ...

  4. [置顶] Docker学习总结(7)——云端基于Docker的微服务与持续交付实践

    本文根据[2016 全球运维大会•深圳站]现场演讲嘉宾分享内容整理而成 讲师简介 易立 毕业于北京大学,获得学士学位和硕士学位:目前负责阿里云容器技术相关的产品的研发工作. 加入阿里之前,曾在IBM中 ...

  5. 测试需要了解的技术之基础篇三__持续集成持续交付DevOps

    持续集成.持续交付.DevOps 1.容器技术Docker:容器技术介绍.Docker安装与加速配置.Docker基础命令.Docker搭建selenium.Docker搭建持续集成平台Jenkins ...

  6. 软件包管理 之 Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南

    在本文中,我们主要解介绍 Fedora core 4.0 通过软件包管理工具yum来在线安装更新软件:关于apt工具应用,我们会在另外一篇中介绍: 一. yum 的使用:有些初学Linux的弟兄可能问 ...

  7. Linux学习篇(二)-软件包管理器、Yum 软件仓库

    红帽软件包管理器 在红帽软件包管理器(rpm)公布之前,Linux 系统软件的安装只能采取"源码包"的方式安装,需要自行编译源码并解决许多依赖关系,所以软件的安装.升级.卸载的难度 ...

  8. Jenkins自动化部署-----持续交付【转】

    感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多的实践, ...

  9. [持续交付实践] Jenkins Pipeline 高可用设计方法

    前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...

随机推荐

  1. 判断decimal 是否为整数

    用了半个小时搞懂了这个问题,基础愁死我了! private static boolean isIntegerValue(BigDecimal decimalVal) { return decimalV ...

  2. ply python 图片压缩 图片裁剪 旋转

    http://tech.seety.org/python/python_imaging.html

  3. 使用Entity Framework Core访问数据库(Oracle篇)

    前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架  终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...

  4. jQuery杂谈一

    1.jQuery对象 jQuery包装集对象 获得mydiv的Jquery对象: var divJquery = $("#mydiv"); 2.基础选择器 1.ID选择器格式:$( ...

  5. 腾讯云发布runC容器逃逸漏洞修复公告

    尊敬的腾讯云客户,您好:  近日,腾讯云安全中心监测发现轻量级容器运行环境runc被爆存在容器逃逸漏洞,攻击者可以在利用该漏洞覆盖Host上的runc文件,从而在Host上以root权限执行代码. 为 ...

  6. [译]PEP 342--增强型生成器:协程

    PEP原文 : https://www.python.org/dev/peps/pep-0342/ PEP标题: Coroutines via Enhanced Generators PEP作者: G ...

  7. SpringCloud学习系列之三----- 断路器(Hystrix)和断路器监控(Dashboard)

    前言 本篇主要介绍的是SpringCloud中的断路器(Hystrix)和断路器指标看板(Dashboard)的相关使用知识. SpringCloud Hystrix Hystrix 介绍 Netfl ...

  8. Windows核心编程第一章.错误处理

    Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时 ...

  9. 24分钟让AI跑起飞车类游戏

    本文由云+社区发表 作者:WeTest小编 WeTest 导读 本文主要介绍如何让AI在24分钟内学会玩飞车类游戏.我们使用Distributed PPO训练AI,在短时间内可以取得不错的训练效果. ...

  10. Centos7搭建虚拟用户FTP

    yum install -y vsftpd #安装ftp服务 useradd -s /sbin/nologin virftp #创建用户,用于ftp服务 vim /etc/vsftpd/vsftpd_ ...