-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
Ubuntu 16.04 64-bits
Jenkins 2.202
When you run a nested agent (let's call it 2nd agent) in the pipeline definition, it is being pulled from the 1st agent's (defined on top of pipeline) registry when no registry is specified on the 2nd (which should mean the official docker hub).
Steps to reproduce:
1. Run your Jenkins master, and assure the place you're gonna run the pipeline has Docker installed.
2. Create a pipeline like this:
```groovy
pipeline {
agent {
docker
}
stages {
stage('Docker on Docker') {
agent {
docker
}
steps
}
}
}
```
3. Run, and you'll get something like this:
```log
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Docker on Docker)
[Pipeline] getContext
[Pipeline] isUnix
[Pipeline] sh
+ docker inspect -f . alpine
Error: No such object: alpine
15:45:40.417159 durable_task_monitor.go:63: exit status 1
[Pipeline] isUnix
[Pipeline] sh
+ docker inspect -f . mirror.gcr.io/alpine
Error: No such object: mirror.gcr.io/alpine
15:45:40.704922 durable_task_monitor.go:63: exit status 1
[Pipeline] isUnix
[Pipeline] sh
+ docker pull mirror.gcr.io/alpine
Using default tag: latest
Error response from daemon: manifest for mirror.gcr.io/alpine:latest not found: manifest unknown: Failed to fetch "latest" from request "/v2/alpine/manifests/latest".
15:45:41.467742 durable_task_monitor.go:63: exit status 1
```
As you can see it tries to pull from mirror.gcr.io instead of the docker hub.
[JENKINS-59976] Nested agent try to fetch the image from top defined agent registry instead of docker hub
Epic Link |
New:
|
Summary | Original: Nested agent try to fetch the image from top defined registry instead of docker hub | New: Nested agent try to fetch the image from top defined agent registry instead of docker hub |
Attachment | New: consoleText.txt [ 49344 ] |
Description |
Original:
When you run a nested agent (let's call it 2nd agent) in the pipeline definition, it is being pulled from the 1st agent (agent defined on top of pipeline) when no registry is specified (which should mean the official docker hub). Steps to reproduce: 1. Run your Jenkins master, and assure the place you're gonna run the pipeline has Docker installed. 2. Create a pipeline like this: ```groovy pipeline { agent { docker { registryUrl 'https://mirror.gcr.io' image 'library/docker' args '-v /var/run/docker.sock:/var/run/docker.sock' } } stages { stage('Docker on Docker') { agent { docker { // Should fetch from docker hub, right? It tries to fetch from the https://mirror.gcr.io instead. image 'alpine' } } steps { sh 'echo hi' } } } } ``` 3. Run, and you'll get something like this: ```log [Pipeline] { [Pipeline] stage [Pipeline] { (Docker on Docker) [Pipeline] getContext [Pipeline] isUnix [Pipeline] sh + docker inspect -f . alpine Error: No such object: alpine 15:45:40.417159 durable_task_monitor.go:63: exit status 1 [Pipeline] isUnix [Pipeline] sh + docker inspect -f . mirror.gcr.io/alpine Error: No such object: mirror.gcr.io/alpine 15:45:40.704922 durable_task_monitor.go:63: exit status 1 [Pipeline] isUnix [Pipeline] sh + docker pull mirror.gcr.io/alpine Using default tag: latest Error response from daemon: manifest for mirror.gcr.io/alpine:latest not found: manifest unknown: Failed to fetch "latest" from request "/v2/alpine/manifests/latest". 15:45:41.467742 durable_task_monitor.go:63: exit status 1 ``` As you can see it tries to pull from mirror.gcr.io instead of the docker hub. |
New:
When you run a nested agent (let's call it 2nd agent) in the pipeline definition, it is being pulled from the 1st agent's (defined on top of pipeline) registry when no registry is specified on the 2nd (which should mean the official docker hub). Steps to reproduce: 1. Run your Jenkins master, and assure the place you're gonna run the pipeline has Docker installed. 2. Create a pipeline like this: ```groovy pipeline { agent { docker { registryUrl 'https://mirror.gcr.io' image 'library/docker' args '-v /var/run/docker.sock:/var/run/docker.sock' } } stages { stage('Docker on Docker') { agent { docker { // Should fetch from docker hub, right? It tries to fetch from the https://mirror.gcr.io instead. image 'alpine' } } steps { sh 'echo hi' } } } } ``` 3. Run, and you'll get something like this: ```log [Pipeline] { [Pipeline] stage [Pipeline] { (Docker on Docker) [Pipeline] getContext [Pipeline] isUnix [Pipeline] sh + docker inspect -f . alpine Error: No such object: alpine 15:45:40.417159 durable_task_monitor.go:63: exit status 1 [Pipeline] isUnix [Pipeline] sh + docker inspect -f . mirror.gcr.io/alpine Error: No such object: mirror.gcr.io/alpine 15:45:40.704922 durable_task_monitor.go:63: exit status 1 [Pipeline] isUnix [Pipeline] sh + docker pull mirror.gcr.io/alpine Using default tag: latest Error response from daemon: manifest for mirror.gcr.io/alpine:latest not found: manifest unknown: Failed to fetch "latest" from request "/v2/alpine/manifests/latest". 15:45:41.467742 durable_task_monitor.go:63: exit status 1 ``` As you can see it tries to pull from mirror.gcr.io instead of the docker hub. |
Attachment | New: Jenkins.png [ 49345 ] |
Assignee | Original: Andrew Bayer [ abayer ] |
This is a workaround which can be used for now:
Specify the registry on the 2nd agent
{ registryUrl 'https://docker.io' image 'alpine' }agent {
docker
}