I have set the username and password for publishing to artifactory using gradle, however, the build fails on publishing the build.info.
artifactory {
publish {
contextUrl = 'http://localhost:8081/artifactory'
repository {
repoKey = "libs-snapshot-local"
username = "user"
password = "pass"
maven = true
}
defaults {
publications = ('mavenJava')
}
}
}
The user I am running gradle with doesn't have access to the artifactory repository but the user in the artifactory block does.
It seems like the build.info
is being published to artifactory with the gradle user and not the user in the build.gradle.
How do I set the username/password so that the build.info
is published using a user that has permissions?
There are two sets of Artifactory credentials you can configure for the Gradle Artifactory plugin:
Credentials used for artifacts resolution
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
}
}
}
Credentials used for deploying artifacts and publishing build info.
This is the set of credentials you need to use for deploying the artifacts and build info into Artifactory.
You need to make sure this user has permissions for Repositories:Deploy and Builds:Deploy.
The OS user which is running gradle (gradle user) is not being used for authentication and is not recognized as an Artifactory user. It is, however, captured as part of the build info.
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
}
}
}
The expected behavior is that when running the following command
./gradlew clean artifactoryPublish
The build artifacts and build info will be deployed to 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
In Artifactory you will see that the artifacts where deployed using the username specified in the publish section
As well as the build-info JSON file
In the build info you will see that 2 user types are being captured: