deis / deis/builder

Deis does a duplicate build after pushing, uses different registry

Open
#521 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
40
Forks
41
PR merge metrics
No merged PRs in 30d

Description

When I deploy my app in deis (a Dockerfile app), it builds twice. The first time succeeds, and the second time fails. This doesn't seem to affect the resulting application (since it fails on step 1 of the dockerfile), but it is still quite annoying.

```
> git push deis BRANCH
... regular output
Step 11 : CMD
---> Running in da8aa48f52c6
---> 39fc0d76f49b
Removing intermediate container da8aa48f52c6
Successfully built 39fc0d76f49b
Pushing to registry
Build complete.->
Launching App...
...
Done, enlightning-staging:v5 deployed to Workflow

Use 'deis open' to view this application in your browser

To learn more, use 'deis help' or visit https://deis.com/

Starting build... but first, coffee!
Step 1 : FROM companyRegistry/base/ubuntu-14.04:latest
Get https://companyRegistry/v1/_ping: dial tcp 52.0.154.17:443: i/o timeout
remote: 2017/07/20 18:41:14 Error running git receive hook [Build pod exited with code 1, stopping build.]
To ssh://internalDeisBuilder:2222/enlightning-staging.git
! [remote rejected] DEPLOY-PRODUCTION-2.0.1 -> master (pre-receive hook declined)
! [remote rejected] v0.2.0 -> v0.2.0 (pre-receive hook declined)
! [remote rejected] v0.2.1 -> v0.2.1 (pre-receive hook declined)
! [remote rejected] v0.2.2 -> v0.2.2 (pre-receive hook declined)
! [remote rejected] v0.2.3 -> v0.2.3 (pre-receive hook declined)
! [remote rejected] v0.3.0 -> v0.3.0 (pre-receive hook declined)
! [remote rejected] v0.4.0 -> v0.4.0 (pre-receive hook declined)
! [remote rejected] v0.4.1 -> v0.4.1 (pre-receive hook declined)
! [remote rejected] v0.4.2 -> v0.4.2 (pre-receive hook declined)
! [remote rejected] v0.4.3 -> v0.4.3 (pre-receive hook declined)
! [remote rejected] v0.4.4 -> v0.4.4 (pre-receive hook declined)
! [remote rejected] v0.4.5 -> v0.4.5 (pre-receive hook declined)
! [remote rejected] v0.5.0 -> v0.5.0 (pre-receive hook declined)
! [remote rejected] v0.6.0 -> v0.6.0 (pre-receive hook declined)
! [remote rejected] v0.7.0 -> v0.7.0 (pre-receive hook declined)
! [remote rejected] v0.8.0 -> v0.8.0 (pre-receive hook declined)
! [remote rejected] v0.8.1 -> v0.8.1 (pre-receive hook declined)
! [remote rejected] v0.8.2 -> v0.8.2 (pre-receive hook declined)
! [remote rejected] v0.9.0 -> v0.9.0 (pre-receive hook declined)
! [remote rejected] v0.9.1 -> v0.9.1 (pre-receive hook declined)
! [remote rejected] v0.9.2 -> v0.9.2 (pre-receive hook declined)
! [remote rejected] v0.9.3 -> v0.9.3 (pre-receive hook declined)
! [remote rejected] v1.0.0 -> v1.0.0 (pre-receive hook declined)
! [remote rejected] v1.1.0 -> v1.1.0 (pre-receive hook declined)
! [remote rejected] v1.2.0 -> v1.2.0 (pre-receive hook declined)
! [remote rejected] v1.3.0 -> v1.3.0 (pre-receive hook declined)
! [remote rejected] v1.3.1 -> v1.3.1 (pre-receive hook declined)
! [remote rejected] v1.3.2 -> v1.3.2 (pre-receive hook declined)
! [remote rejected] v1.3.3 -> v1.3.3 (pre-receive hook declined)
! [remote rejected] v1.3.4 -> v1.3.4 (pre-receive hook declined)
! [remote rejected] v1.3.5 -> v1.3.5 (pre-receive hook declined)
! [remote rejected] v1.4.0 -> v1.4.0 (pre-receive hook declined)
! [remote rejected] v1.5.0 -> v1.5.0 (pre-receive hook declined)
! [remote rejected] v1.6.0 -> v1.6.0 (pre-receive hook declined)
! [remote rejected] v1.6.1 -> v1.6.1 (pre-receive hook declined)
! [remote rejected] v1.6.2 -> v1.6.2 (pre-receive hook declined)
! [remote rejected] v1.6.3 -> v1.6.3 (pre-receive hook declined)
! [remote rejected] v1.7.0 -> v1.7.0 (pre-receive hook declined)
! [remote rejected] v1.7.1 -> v1.7.1 (pre-receive hook declined)
! [remote rejected] v1.7.2 -> v1.7.2 (pre-receive hook declined)
! [remote rejected] v1.8.0 -> v1.8.0 (pre-receive hook declined)
! [remote rejected] v1.8.1 -> v1.8.1 (pre-receive hook declined)
! [remote rejected] v1.8.2 -> v1.8.2 (pre-receive hook declined)
! [remote rejected] v1.8.3 -> v1.8.3 (pre-receive hook declined)
! [remote rejected] v1.9.0 -> v1.9.0 (pre-receive hook declined)
! [remote rejected] v1.9.1 -> v1.9.1 (pre-receive hook declined)
! [remote rejected] v1.9.2 -> v1.9.2 (pre-receive hook declined)
! [remote rejected] v1.9.3 -> v1.9.3 (pre-receive hook declined)
! [remote rejected] v1.9.4 -> v1.9.4 (pre-receive hook declined)
! [remote rejected] v1.9.5 -> v1.9.5 (pre-receive hook declined)
! [remote rejected] v2.0.0 -> v2.0.0 (pre-receive hook declined)
! [remote rejected] v2.0.1 -> v2.0.1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@internalDeisBuilder:2222/enlightning.git'
```

Looking at the second build, you can see that it tries to use the company registry for the base image, which is where it fails. The successful build does not do this:
```
Step 1 : FROM ubuntu:14.04
---> 54333f1de4ed
Step 2 : MAINTAINER Brandon Okert
---> Using cache
---> 9598ac5bd5dd
...
```

I do have both registries on my development machine:
```
> cat ~/.docker/config.json
{
"auths": {
"companyRegistryUrl": {
"auth": "xxx",
"email": "xxx"
},
"https://index.docker.io/v1/": {
"auth": "xxx",
"email": "xxx"
}
}
}
```

But I don't think this would affect deis.

Also, it's strange that it reports all those tags as well; as if it's thinking about building each one. There's only the one Dockerfile in the branch that I'm pushing.

Cheers!

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the git push through the builder's receive hook with the Dockerfile app and compare the first and second Docker builds. Trace why the hook reports all pushed tags and why the second build resolves a different base-image registry; done means one build completes without the duplicate failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, git
Domain
build-system, devops
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.