使用Artifactory插件“包含模式”从Jenkins发布项目文件

时间:2016-09-15 19:18:41

标签: java maven jenkins artifactory

在Jenkins(2.7)中,我有一个简单的Maven 3 Java项目。它使用Jenkins Artifactory插件构建标准项目JAR并将其发布到Artifactory;没有问题。

目标

现在,我需要在JAR旁边向Artifactory发布一个任意文件deploycfg.yml;不在里面。因此,从存储库的角度来看,它应该如下所示:

com/acme/sbgroov/1.0.0.7/
-- sbgroov-1.0.0.7.jar
-- sbgroov-1.0.0.7.md5
-- sbgroov-1.0.0.7.sha
-- deploycfg.yml       <---publish this to Artifactory too!

试过

我修改了pom,以便在构建时将deploycfg.yml移动到/target,然后在Jenkins Artifactory插件中为Include Patterns尝试了不同的配置来获取要发布的文件:

*.jar *.yml
**/*.jar **/*.yml
*.jar deploycfg.yml

JAR发布到Artifactory,但不是deploycfg.yml。尝试将yml文件放在/target/maven-archiver而不是/target中,但这也不起作用。不知道此时还有什么可做,也许Include Patterns的起点不是我认为的那样,/target

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

我能够使用Pipeline Groovy脚本执行此操作。

println "Uploading artifacts to Artifactory.  Upload target is: ${uploadTarget}"

def server = Artifactory.server 'artifactory'
def uploadSpec = """{
    "files": [
        {
            "pattern": "target/${pom.artifactId}-${pom.version}.jar",
            "target": "${uploadTarget}/${pom.artifactId}-${pom.version}.jar"
        },
        {
            "pattern": "target/${pom.artifactId}-${pom.version}.war",
            "target": "${uploadTarget}/${pom.artifactId}-${pom.version}.war"
        },
        {
            "pattern": "manifest.yml",
            "target": "${uploadTarget}/manifest.yml"
        }
    ]
}"""

def buildInfo = server.upload(uploadSpec)

// Publish build information.
buildInfo.env.capture = true
server.publishBuildInfo(buildInfo)

但是,我遇到了你在Jenkins中使用传统Artifactory插件UI的同一问题。我很好奇,你最终搞清楚了吗?