使用gradle脚本将工件(zip)文件上载到artifactory

时间:2015-05-25 16:44:23

标签: gradle gradlew

有人可以帮我编写gradle脚本来将工件上传到神器中吗?我想通过jenkins作为参数提供工件名称,gradle脚本会将具有正确groupid,artifactid和version的工件上传到具有POM文件的工件。但我不知道如何提供zip作为参数,我希望从jenkins工作上传一些版本和内部版本号的zip文件

apply plugin: 'java'
apply plugin: 'maven'

repositories {
    maven {
          url "http://localhost:8081/nexus/content/groups/public"
    }
}

dependencies {
    testCompile "junit:junit:3.8.1"
    compile "org.jbundle.util:org.jbundle.util.jbackup:2.0.0"
    compile "net.sf.webtestfixtures:webtestfixtures:2.0.1.3"
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/nexus/content/repositories/snapshots") {
                authentication(userName: "admin", password: "admin123")
            }
            pom.version = "1.0-SNAPSHOT"
            pom.artifactId = "simple-project"
            pom.groupId = "com.example"
        }
    }
}

以下是您建议我的脚本

buildscript {
  repositories {
    maven {
      url "http://cm.t.th.com:8/artifactory/files-release-local"
    }
  }
}

allprojects {
  apply plugin: 'java'

  group = 'com.trlth.anaengine'
 // artifactId = 'reference-files'
  version = '0.0.6'
  status = 'integration'
}

// Setting this property to true will make the artifactoryPublish task
// skip this module (in our case, the root module):
artifactoryPublish.skip = true


def dir = 'build'
def f = file("$dir/test.txt")
artifacts {
    archives file: f, name: f.getName(), type: 'txt'
}

task wrapper(type: Wrapper) {
  gradleVersion = '2.3'
}

1 个答案:

答案 0 :(得分:10)

以下步骤应该提供您所需要的: 步骤1:创建运行Gradle构建的Jenkins作业,并将其构建信息部署到Artifactory。 为此,请创建Gradle作业,并使其构建在以下位置找到的gradle2-example-ci-server: https://github.com/JFrogDev/project-examples/tree/master/gradle-examples 您将看到每个工件都使用与Jenkins构建名称和编号匹配的buildName和buildNumber属性进行部署。

步骤2:既然您有工作,可以在Artifactory中看到Jenkins构建名称和编号,可以根据需要修改build.gradle代码 - 您可能希望删除正在构建的代码并拥有正在部署的工件被移除。

步骤3:您现在想要将您的zip工件添加到发布到Artifactory的工件列表中。 要实现这一点,您需要将此工件添加到"档案" Gradle配置(默认情况下,由Jenkins Artifactory插件应用的Gradle Artifactory插件使用存档配置来获取部署到Artifactory的工件列表)。 要将文件添加到存档配置,可以向build.gradle添加类似于以下内容的代码:

def dir = 'build/outputs/artifacts' 
def f = file("$dir/my-zip-file.zip")
artifacts {
    archives file: f, name: f.getName(), type: 'zip'
}

步骤4:现在您需要做的就是用您从Jenkins作业发送到构建的变量替换zip文件的名称。 您可以将系统属性添加到作业中的gradle命令行: clean artifactoryPublish -DfileName = my-zip-file.zip

并在您的gradle脚本中,按如下方式访问它:

def dir = 'build/outputs/artifacts'
def f = file("$dir/$fileName")
artifacts {
    archives file: f, name: f.getName(), type: 'zip'
}