在云效构建中使用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>rdc-releases</id>
<url>http://repo.rdc.aliyun.com/repository/24409-release-87w1FL/</url>
</repository>
<snapshotRepository>
<id>rdc-snapshots</id>
<url>https://repo.rdc.aliyun.com/repository/24409-snapshot-AA0Hx0/</url>
</snapshotRepository>
</distributionManagement>
项目代码库根目录的<应用名>.release
中指定构建命令为上传二方库,例如:
build.command=mvn clean deploy -Dmaven.test.skip
如果你的pom.xml配置的软件包版本是以-SNAPSHOT
结尾,比如版本为1.0-SNAPSHOT
,会自动发布到snapshot仓;如果想发到release仓,可以将命令改为build.command=mvn clean deploy -Dmaven.test.skip -P release
。
然后在云效中创建一条流水线,创建一个构建任务。示例配置如下:
注意:需要将上传构建包参数关闭。
也可以在构建命令中指定分发的仓库地址。方式是在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
中指定的命令。