如何使用Artifactory Gradle插件设置构建信息的用户名/密码?

4

我已经在Gradle中设置了发布到Artifactory时使用的用户名和密码,但是在尝试发布build.info时构建失败了。

artifactory {
    publish {
        contextUrl = 'http://localhost:8081/artifactory'
        repository {
            repoKey = "libs-snapshot-local"
            username = "user"
            password = "pass"
            maven = true
        }
        defaults {
            publications = ('mavenJava')
        }
    }
}

我正在使用Gradle的用户没有访问Artifactory存储库的权限,但是在Artifactory块中的用户有访问权限。
似乎使用Gradle用户而不是build.gradle中的用户将build.info发布到artifactory。
如何设置用户名/密码以使build.info使用具有权限的用户发布?

什么是“Gradle用户”?如何配置它? - yahavi
“gradle用户”是运行./gradlew的用户。 - opticyclic
1个回答

4

您可以为Gradle Artifactory插件配置两组Artifactory凭据:

用于解析构件的凭据

repositories {
    jcenter()
    maven {
        url "http://repo.myorg.com/artifactory/my-repo" // The Artifactory (preferably virtual) repository to resolve from
        credentials {               // Optional resolver credentials (leave out to use anonymous resolution)
            username = "username" // Artifactory user name
            password = "password" // Password or API Key
        }
    }
}

部署工件和发布构建信息所使用的凭据。 这是您在将工件和构建信息部署到Artifactory时需要使用的凭据。
您需要确保此用户具有Repositories:Deploy和Builds:Deploy的权限。
运行gradle(gradle用户)的操作系统用户未用于身份验证,也不被识别为Artifactory用户。然而,它作为构建信息的一部分被捕获。
artifactory {
  contextUrl = 'http://repo.myorg.com/artifactory'   // The base Artifactory URL if not overridden by the publisher/resolver
  publish {
    contextUrl = 'http://repo.myorg.com/artifactory'   //The base Artifactory URL for the publisher
    //A closure defining publishing information
    repository {
      repoKey = 'my-repo'   //The Artifactory repository key to publish to
      username = 'stackoverflow'          //The publisher user name
      password = 'password'       //The publisher password or API key
    }
  }
}

预期行为是在运行以下命令时:
./gradlew clean artifactoryPublish

构建产物和构建信息将被部署到Artifactory。
[pool-17-thread-1] Deploying artifact: http://127.0.0.1:8081/artifactory/libs-snapshot-local/gradle-example-minimal/1.0-SNAPSHOT/gradle-example-minimal-1.0-SNAPSHOT.jar
[pool-17-thread-1] Deploying artifact: http://127.0.0.1:8081/artifactory/libs-snapshot-local/gradle-example-minimal/1.0-SNAPSHOT/gradle-example-minimal-1.0-SNAPSHOT.pom

> Task :artifactoryDeploy
Deploying build descriptor to: http://127.0.0.1:8081/artifactory/api/build
Build successfully deployed. Browse it in Artifactory under http://127.0.0.1:8081/artifactory/webapp/builds/gradle-example-minimal/1602276439713

BUILD SUCCESSFUL in 903ms
7 actionable tasks: 7 executed

在Artifactory中,您将看到使用发布部分指定的用户名部署的构件。

enter image description here

除了构建信息的JSON文件

enter image description here

在构建信息中,您将看到捕获了两种用户类型:
  1. Artifactory主体 - 这是用于部署构建信息的Artifactory用户
  2. 主体 - 这是运行gradle构建的操作系统用户。此信息以“主体”形式捕获在构建信息JSON中

enter image description here


你基本上重复了我在问题中所说的内容。这并没有回答实际的问题,该问题涉及的是与构建信息不同的位置存储的工件库。 - opticyclic
@opticyclic 我更新了答案以包含更多细节。我相信它回答了问题“如何设置用户名/密码,以便使用具有权限的用户发布build.info?” - Dror Bereznitsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接