How can I teach my Jenkisfile to login via basic auth in this setup?
I'm using a custom docker image for my Jenkins build. As described in the documentation here I defined a docker agent like so:
pipeline { agent { docker { image 'registry.az1:5043/maven-proto' registryUrl 'https://registry.az1' args '-v /var/jenkins_home/.m2:/root/.m2' } } options { timeout(time: 1, unit: 'HOURS') buildDiscarder(logRotator(numToKeepStr:'10')) } stages { stage ('Build') { steps{ sh ... } } stage ('Test') { steps { sh ... } } stage ('Deploy') { steps { sh ... } } } post { always { echo 'Clean up workspace' deleteDir() } }
}
If I use the following agent setup:
pipeline { agent { docker.withRegistry('https://registry.az1', 'registry_login'){ image 'registry.az1:5043/maven-proto' registryUrl 'https://registry.az1' args '-v /var/jenkins_home/.m2:/root/.m2' } }
The execution of the pipeline fails with the following exception:
WorkflowScript: 3: Too many arguments for map key "withRegistry" @ line 3, column 16. docker.withRegistry('https://registry.az1', 'registry_login'){ ^ WorkflowScript: 3: Invalid agent type "withRegistry" specified. Must be one of [docker, dockerfile, label, any, none] @ line 3, column 16. docker.withRegistry('https://registry.az1', 'registry_login'){ ^
The problem is that the used registry requires a basic auth login. The registry runs behind a nginx reverse proxy using this configuration.
Manage Jenkins → Manage Plugins In Jenkins you have to add a new credential with your Docker Hub account details. Go to Credentials → Global → Add credentials and fill out the form with your username and password. Create your Jenkins pipeline.
As specified in Using a custom registry, you can specify the credentials and registry url to use as such:
docker.withRegistry('https://registry.az1', 'credentials-id') { ... }
You need to create a Jenkins credentials object which will contain the credentials for the repository and give it a name to replace credentials-id
above.
Update:
For declarative pipelines, the syntax is as such:
agent { docker { image 'registry.az1:5043/maven-proto' registryUrl 'https://registry.az1' registryCredentialsId 'credentials-id' args '-v /var/jenkins_home/.m2:/root/.m2' } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With