将多个工件的受控发布到 Artifactory(如果已发布则跳过)
Controlled Publishing to Artifactory for multiple artifacts (skipped if already published)
我的项目中有一个动态生成的出版物列表。
我想问一下,如果其中一个有错误,是否有办法对每个出版物进行 try catch 以继续。
原因是不是所有的版本都递增,也不应该递增,所以我只想推送那些还不存在的。
我正在考虑在发布阶段或动态生成发布时执行此操作。
假设我有任务 publish_1、publish_2、publish_3
我想确保即使 publish_1 和 publish_2 失败,publish_3 仍然会发生。
我想控制失败的原因是文件是否已经发布。
另一种选择是我先以某种方式查询 artifactory 以查看文件是否存在(不知道该怎么做)。
这是我的出版物的想法是这样的:
HashMap<String,ProtoFile> artifacts = new HashMap<String,ProtoFile>()
List<String> thePublications = new ArrayList<String>()
publishing {
artifacts.values().each() { f ->
def pubName = "publish_"+f.name
publications.create(pubName, MavenPublication) {
groupId = f.groupId
artifactId = f.artifactId
version = f.version
artifact(file("build/distributions/" + f.zipFileName))
thePublications.add(pubName)
}
}
}
deploy {
publications thePublications.toArray(new String[thePublications.size()])
}
我没有得到我想要的,所以我会保持打开状态,但最终找到了一种方法来完成这项工作,只需检查文件是否存在于 artfiactory 中
def addPublication(publicationName, fileProperties, artifactoryPublications) {
final String artifactBaseUrl = 'https://your.repo.here/artifactory'
final String artifactFile = fileProperties.artifactGroupUrl + '/' + fileProperties.artifactId + '/' + fileProperties.version + '/' + fileProperties.zipFileName
Artifactory artifactory = ArtifactoryClientBuilder.create()
.setUrl(artifactBaseUrl)
.build()
ItemHandle result = artifactory.repository('/local-m2-development/').file(artifactFile)
try {
result.info();
println fileProperties.zipFileName + " is being skipped because it's already in artifactory with version " + fileProperties.version
} catch(Exception e) {
artifactoryPublications.add(publicationName)
}
}
我的项目中有一个动态生成的出版物列表。 我想问一下,如果其中一个有错误,是否有办法对每个出版物进行 try catch 以继续。 原因是不是所有的版本都递增,也不应该递增,所以我只想推送那些还不存在的。 我正在考虑在发布阶段或动态生成发布时执行此操作。
假设我有任务 publish_1、publish_2、publish_3 我想确保即使 publish_1 和 publish_2 失败,publish_3 仍然会发生。
我想控制失败的原因是文件是否已经发布。 另一种选择是我先以某种方式查询 artifactory 以查看文件是否存在(不知道该怎么做)。
这是我的出版物的想法是这样的:
HashMap<String,ProtoFile> artifacts = new HashMap<String,ProtoFile>()
List<String> thePublications = new ArrayList<String>()
publishing {
artifacts.values().each() { f ->
def pubName = "publish_"+f.name
publications.create(pubName, MavenPublication) {
groupId = f.groupId
artifactId = f.artifactId
version = f.version
artifact(file("build/distributions/" + f.zipFileName))
thePublications.add(pubName)
}
}
}
deploy {
publications thePublications.toArray(new String[thePublications.size()])
}
我没有得到我想要的,所以我会保持打开状态,但最终找到了一种方法来完成这项工作,只需检查文件是否存在于 artfiactory 中
def addPublication(publicationName, fileProperties, artifactoryPublications) {
final String artifactBaseUrl = 'https://your.repo.here/artifactory'
final String artifactFile = fileProperties.artifactGroupUrl + '/' + fileProperties.artifactId + '/' + fileProperties.version + '/' + fileProperties.zipFileName
Artifactory artifactory = ArtifactoryClientBuilder.create()
.setUrl(artifactBaseUrl)
.build()
ItemHandle result = artifactory.repository('/local-m2-development/').file(artifactFile)
try {
result.info();
println fileProperties.zipFileName + " is being skipped because it's already in artifactory with version " + fileProperties.version
} catch(Exception e) {
artifactoryPublications.add(publicationName)
}
}