经过半个月的公测,云效中的企业级Maven私有仓库服务正式上线,全面开放使用。用户可以一键开通Maven私有仓库服务,零配置实现私有二方库的上传和下载。
企业级Maven私有仓库核心功能点
- 一键开通,自动生成release和snapshot两个仓库;
- 高效上传和下载,后端存储使用阿里云OSS服务,二方库永不丢失;
- 与云效构建高度集成,无需额外配置即可与私库打通。
以下是使用说明。
将私有仓库服务加入侧边栏
点击‘我的’链接,选择左侧菜单栏中的‘设置’按钮,将‘私有仓库’服务加入到左侧菜单栏中。
这样在左侧菜单栏会看到‘私有仓库’链接。
开通仓库
虽然启用了私有仓库服务,当云效并没有真正的为您创建企业级Maven私有仓库。点击左侧菜单栏'私有仓库'链接后,如果您是企业管理员,会出现以下界面:
'点击开通'即可开通仓库服务。
企业的普通用户并没有开通仓库的权限,则需要联系您的企业管理员进行开通操作。
开通成功以后显示界面如下:
仓库地址
云效会自动为该企业生成两个Maven私库,一个是Release仓库,用于存储正式版本的二方库;另一个是Snapshot仓库,用于存放Snapshot版本的二方库。
settings.xml配置
私有仓库不允许匿名上传和下载二方库,云效为每个私有仓库生成了相应的用户名和密码。请注意不要泄露该用户名和密码。
用户可以通过该页面下载完整的settings.xml文件,也可以根据自己的需求在settings.xml文件中添加公共仓库的镜像地址。
上传二方库
用户可以通过UI上传二方库。目前支持通过GAV的模式进行上传,单个二方库的大小限制为300M。
检索
对二方库的检索支持关键字搜索和GAV搜索两种模式。
用户可以查看检索出来的二方库的基本信息,也可以下载二方库。
云效构建时从私有仓库下载二方库
如果用户项目代码库的根目录没有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
然后在云效中创建一条流水线,创建一个构建任务。示例配置如下:
也可以在构建命令中指定分发的仓库地址。方式是在Maven命令中指定-DaltDeploymentRepository
参数。
build.command=mvn -DaltDeploymentRepository=rdc-releases::default::https://repo.rdc.aliyun.com/repository/24409-release-87w1FL/ deploy -Dmaven.test.skip
altDeploymentRepository指定了id::layout::url
。在云效的Maven私有仓库服务中release仓库的id为rdc-releases
。SNAPSHOT仓库的id为rdc-snapshots
。layout一般使用默认值default,而url则为release仓库或SNAPSHOT仓库的url。上传到SNAPSHOT仓库的示例命令如下:
build.command=mvn -DaltDeploymentRepository=rdc-snapshots::default::https://repo.rdc.aliyun.com/repository/24409-snapshot-AA0Hx0/ deploy -Dmaven.test.skip
单应用同时支持应用构建和二方库发布
如果一个项目既要实现打包和部署,又要为其他项目提供SDK二方库,那么单个build.command
配置就无法满足这种场景。您可以使用传入参数改变构建行为中的方式,使用PACKAGE_LABEL
区分不同的构建命令。一个完整的例子如下。
在代码库根目录的<应用名>.release
文件中指定如下配置项:
deploy.build.command=mvn -DaltDeploymentRepository=rdc-releases::default::https://repo.rdc.aliyun.com/repository/24409-release-87w1FL/ deploy -Dmaven.test.skip
这个配置项使用前缀deploy
作为包标签。然后创建一条流水线,在构建任务中打开高级配置项,进行如下配置:
与上一个构建任务唯一不同的是这里将高级配置中的包标签的值改为deploy
,这样触发构建时执行的就是deploy.build.command
中指定的命令。
任何相关技术问题可以钉钉扫描下面的二维码联系云效的技术支持同学。