deis / dockerbuilder

Deis dockerbuilder builds your app from a Dockerfile inside a Kubernetes pod, used by Deis Workflow.
https://deis.com
MIT License
17 stars 27 forks source link

pre/post compile hooks #89

Open pixeleet opened 8 years ago

pixeleet commented 8 years ago

As a Developer using the Deis platfrom I'd like to have pre/post compile hooks available for dockerfile based builds too, so I can execute checks that my services required for tests are alive and execute tests after an image has been made. Thus making my flow more CI/CD enabled.

mboersma commented 8 years ago

This general idea works well for buildpack-based apps (now that deis/slugbuilder#104 landed).

It would be useful to have a similar pre-/post-compile hook mechanism for Dockerfile apps, as well as for deis pull deploys. We should put some thought into how to implement that in a consistent way--suggestions welcome!

robholland commented 8 years ago

This probably belongs on deis/controller then?

pixeleet commented 8 years ago

So controller would setup the service you depend on for testing? Would it work with shell scripts? Would it be a DSL like some ci systems use? How do you imagine it working @robholland?

bacongobbler commented 8 years ago

I still think it's fair to keep it here for the time being until someone writes out a design document/PR for the proposed feature.

robholland commented 8 years ago

Simplest functionality would be to specify commands that are run inside the container after build/pull. This would be useful for asset compilation for example, which needs to be run with the correct environment.

robholland commented 8 years ago

How about:

$ deis hooks:post:list
=== app Post Hooks
$ deis hooks:post:add 'bundle exec rake assets:precompile'
=== app Post Hooks
bundle exec rake assets:precompile
$ deis hooks:post:remove 'bundle exec rake assets:precompile'
=== app Post Hooks

The registered commands are run inside the docker container after build and before deployment to k8s.

bacongobbler commented 8 years ago

I'm concerned about the added time to run the one-off command in the same API call as when we build the app. We're already seeing a large number of issues come in that's usually ELB-related with the builder timing out.

If you're willing to take a crack at a PR as well as some end-to-end tests, I don't see an issue with the proposal as long as it works.

bacongobbler commented 7 years ago

Does anyone have the time to work on this or shall we remove from the milestone since the cut-off for v2.13 is April 3rd?

mboersma commented 7 years ago

It seems unlikely we can tackle this in time for v2.13. I'll kick it into the future.

Cryptophobia commented 6 years ago

This issue was moved to teamhephy/dockerbuilder#4