Nexus Latest Snapshot and BadRequest
ijkplayer安卓库使用gradle构建,今天给它编写Jenkinsfile的时候遇到了两个问题。
问题1
gradle的maven插件上传完artifact之后并不会打印包上传的位置,这对Jenkins Pipeline是不太友好,因为我希望在Jenkinsfile中将上传的位置发送给需要这些artifact的开发者。
Nexus提供了”redirect”的API,如,我们可以使用如下url来定位最新的构建结果:
https://repo.example.com/nexus/service/local/artifact/maven/redirect?r=snapshots&g=tv.danmaku.ijk.media&a=ijkplayer-armv7a&v=LATEST&p=aar
其中r为repository的名字,g为groupId,a为artifactId,v代表version。
在任务uploadArchives中加入如下操作,就可以在上传之后打印出artifact的信息。
doLast {
println "Upload Successful!\n"
println " groupID: $GROUP"
println " artifactId: $POM_ARTIFACT_ID"
println " version: $VERSION_NAME"
println " type: aar"
println " url: http://repo.startimes.me/nexus/service/local/artifact/maven/redirect?r=${isReleaseBuild()? 'releases' : 'snapshots'}&g=$GROUP&a=$POM_ARTIFACT_ID&v=$VERSION_NAME&p=aar"
}
问题2
由于同一个release版本三元组完全一样,上传会出现如下错误:
这是由于Nexus仓库禁止Redeploy,只需要更改仓库的Deployment Policy为Allow Redeploy即可。
注:不建议将Deployment Policy设置为Allow,这样不利于回滚
Copyright © 2016-2024 by 赵军旺