由于磁盘空间的考虑,我只希望在我的存储库中保留一个版本的任何快照.而不是保留带有时间戳后缀的多个版本
例如ecommerce-2.3-20090806.145007-1.ear
我怎么设置它?这是构建设置或存储库(Artifactory)设置
谢谢!
我们有一个Nexus本地存储库管理器,它可以处理我们所有的内部项目(以及镜像外部存储库).对于我们的内部项目,我们只保留最新版本的快照构建.例如,如果我们有ProjectX 1.0,1.1和1.2-SNAPSHOT,一旦1.2发布,我们将删除1.2-SNAPSHOT,然后在我们的Nexus存储库中有1.0,1.1,1.2和1.3-SNAPSHOT.
问题是我们的Jenkins服务器在其本地.m2/repository文件夹中具有所有OLD快照,并继续针对这些旧快照成功构建项目,而实际上它们应该失败(我们的开发人员应该修复他们的POM文件.)
是否可以配置Maven(在settings.xml或pom.xml中)以删除Nexus存储库中不存在的这些不需要的快照?
如果没有,摆脱它们的最佳方法是什么?Jenkins配置,cron作业,其他选择?
谢谢...
如何从本地仓库中轻松删除所有陈旧的快照?
我的repo中的许多文件导致性能不佳,并且获取工件的时间很长.我想将repo保留到最新的快照.
我看到了依赖:purge-local-repository可以清除本地存储库,但我想保持最新状态.我可以轻松地创建一个脚本来完成这项工作(并将其包装在一个插件中),但如果已经有一个清除最新的工具,则不想重新发明轮子.
是否有一个插件可以清除我对最新快照或最后X个快照的依赖?
我的java/maven项目叫做"testproject",它与我的jenkins和nexus repo联系在一起:
我的pom.xml看起来像:
....
<distributionManagement>
<!-- use the following if you're not using a snapshot version. -->
<repository>
<id>nexus</id>
<name>RepositoryProxy</name>
<url>http://nexus:8080/nexus/content/repositories/releases</url>
</repository>
<!-- use the following if you ARE using a snapshot version. -->
<snapshotRepository>
<id>nexus</id>
<name>RepositoryProxy</name>
<url>http://nexus:8080/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
......
Run Code Online (Sandbox Code Playgroud)
在我的jenkins设置中,我有:
Build - maven3 - clean deploy
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,jenkins将工件上传到jenkins构建的控制台输出的Nexus.Look,如下所示:
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ testproject ---
[INFO] Building jar: /var/lib/jenkins/workspace/testproject/target/testproject-0.1-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ testproject ---
[INFO] Installing /var/lib/jenkins/workspace/testproject/target/testproject-0.1-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1- SNAPSHOT.jar
[INFO] Installing /var/lib/jenkins/workspace/testproject/pom.xml to /var/lib/jenkins/.m2/repository/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1-SNAPSHOT.pom
[INFO] …Run Code Online (Sandbox Code Playgroud) 我正在尝试配置 Android 库项目以将多个工件部署到本地托管的 Maven 存储库。我已经足够了,两个工件都生成了自己的 POM,并且使用以下脚本将其正确部署到存储库:
android {
// Publish both debug and release
publishNonDefault true
}
uploadArchives {
repositories.mavenDeployer {
def majorVersion = 1
def minorVersion = 1
def buildVersion = project.properties.get('RELEASE', '0').toInteger()
addFilter('release') { artifact, file ->
file.name.contains('release')
}
addFilter('debug') { artifact, file ->
file.name.contains('debug')
}
activePomFilters.each { filter ->
pom(filter.name) {
groupId = 'com.redacted'
artifactId = 'redacted'
packaging = 'aar'
version = "${majorVersion}.${minorVersion}.${buildVersion}"
if (!project.hasProperty('RELEASE')) {
version += "-SNAPSHOT"
}
if (filter.name == 'debug') {
artifactId += …Run Code Online (Sandbox Code Playgroud) 我正在使用Jenkins Multibranch Pipelines实现构建作业.最后一步是将构建输出上传到Artifactory.
通过界面配置独立作业时,可以选择"从Artifactory中丢弃旧版本",这样我就可以保留与"要保留的最大版本数"设置中指定的相同数量的版本.
我的Jenkins文件中的上传阶段配置如下:https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+-+Working+With+the+Pipeline+Jenkins+Plugin
...我的Jenkins文件中还有以下内容,它可以清理Jenkins工作区中的构建:
properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', numToKeepStr: '10']]])
Run Code Online (Sandbox Code Playgroud)
如何在我的Jenkinsfile中将discardOldBuilds设置为true,这样我还可以清理Artifactory中存储的构建版本?