在云效構(gòu)建中使用Maven私有倉(cāng)庫(kù)服務(wù)
當(dāng)用戶開(kāi)通了Maven私有倉(cāng)庫(kù)服務(wù)后,云效會(huì)為用戶生成兩個(gè)私有倉(cāng)庫(kù),一個(gè)用于存放release版本的二方庫(kù),一個(gè)用于存儲(chǔ)SNAPSHOT版本的二方庫(kù)。
release倉(cāng)庫(kù)地址示例:
https://repo.rdc.aliyun.com/repository/24409-release-87w1FL/
SNAPSHOT倉(cāng)庫(kù)地址示例:
https://repo.rdc.aliyun.com/repository/24409-snapshot-AA0Hx0/
云效構(gòu)建時(shí)從私有倉(cāng)庫(kù)下載二方庫(kù)
如果用戶項(xiàng)目代碼庫(kù)的根目錄沒(méi)有Maven的settings.xml文件,那么云效構(gòu)建時(shí)會(huì)為用戶自動(dòng)生成一個(gè)settings.xml文件。該文件不僅包括了maven.aliyun.com等公共倉(cāng)庫(kù)地址,也自動(dòng)引入了該企業(yè)的兩個(gè)私有倉(cāng)庫(kù)地址。所以用戶通過(guò)云效構(gòu)建時(shí),無(wú)需任何額外配置就可以實(shí)現(xiàn)下載私有倉(cāng)庫(kù)中的二方庫(kù)。
如果用戶項(xiàng)目代碼庫(kù)的根目錄定制了Maven的settings.xml文件,那么用戶需要自行將私有倉(cāng)庫(kù)的配置信息添加到該文件中。具體可以參考Maven私有倉(cāng)庫(kù)服務(wù)。
通過(guò)云效上傳二方庫(kù)到私有倉(cāng)庫(kù)
如果想通過(guò)流水線發(fā)布二方庫(kù)到私有倉(cāng)庫(kù),可以先在項(xiàng)目代碼庫(kù)根目錄的pom.xml中指定分發(fā)的倉(cāng)庫(kù)地址,示例如下:
<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>
項(xiàng)目代碼庫(kù)根目錄的<應(yīng)用名>.release
中指定構(gòu)建命令為上傳二方庫(kù),例如:
build.command=mvn clean deploy -Dmaven.test.skip
如果你的pom.xml配置的軟件包版本是以-SNAPSHOT
結(jié)尾,比如版本為1.0-SNAPSHOT
,會(huì)自動(dòng)發(fā)布到snapshot倉(cāng);如果想發(fā)到release倉(cāng),可以將命令改為build.command=mvn clean deploy -Dmaven.test.skip -P release
。
然后在云效中創(chuàng)建一條流水線,創(chuàng)建一個(gè)構(gòu)建任務(wù)。示例配置如下:
注意:需要將上傳構(gòu)建包參數(shù)關(guān)閉。
也可以在構(gòu)建命令中指定分發(fā)的倉(cāng)庫(kù)地址。方式是在Maven命令中指定-DaltDeploymentRepository
參數(shù)。
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私有倉(cāng)庫(kù)服務(wù)中release倉(cāng)庫(kù)的ID為rdc-releases
。SNAPSHOT倉(cāng)庫(kù)的ID為rdc-snapshots
。layout一般使用默認(rèn)值default,而URL則為release倉(cāng)庫(kù)或SNAPSHOT倉(cāng)庫(kù)的URL。上傳到SNAPSHOT倉(cāng)庫(kù)的示例命令如下:
build.command=mvn -DaltDeploymentRepository=rdc-snapshots::default::https://repo.rdc.aliyun.com/repository/24409-snapshot-AA0Hx0/ deploy -Dmaven.test.skip
單應(yīng)用同時(shí)支持應(yīng)用構(gòu)建和二方庫(kù)發(fā)布
如果一個(gè)項(xiàng)目既要實(shí)現(xiàn)打包和部署,又要為其他項(xiàng)目提供SDK二方庫(kù),那么單個(gè)build.command
配置就無(wú)法滿足這種場(chǎng)景。您可以使用傳入?yún)?shù)改變構(gòu)建行為中的方式,使用PACKAGE_LABEL
區(qū)分不同的構(gòu)建命令。一個(gè)完整的例子如下。
在代碼庫(kù)根目錄的<應(yīng)用名>.release
文件中指定如下配置項(xiàng):
deploy.build.command=mvn -DaltDeploymentRepository=rdc-releases::default::https://repo.rdc.aliyun.com/repository/24409-release-87w1FL/ deploy -Dmaven.test.skip
這個(gè)配置項(xiàng)使用前綴deploy
作為包標(biāo)簽。然后創(chuàng)建一條流水線,在構(gòu)建任務(wù)中打開(kāi)高級(jí)配置項(xiàng),進(jìn)行如下配置:
與上一個(gè)構(gòu)建任務(wù)唯一不同的是這里將高級(jí)配置中的包標(biāo)簽的值改為deploy
,這樣觸發(fā)構(gòu)建時(shí)執(zhí)行的就是deploy.build.command
中指定的命令。