Giter Site home page Giter Site logo

rafecolton / docker-builder Goto Github PK

View Code? Open in Web Editor NEW
80.0 80.0 11.0 11.46 MB

Docker builder builds Docker images from a friendly config file.

License: MIT License

Makefile 5.10% Ruby 0.06% Shell 1.82% Go 90.43% Dockerfile 2.59%
build-tool cd ci ci-cd docker docker-builder go

docker-builder's People

Contributors

alexschlessinger avatar jszwedko avatar meatballhat avatar radkin avatar rafecolton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-builder's Issues

panic when parsing `git:` tag from non git directory

If we try to run builder from somewhere else, bad things happen:

  • if that somewhere else is another git repo, we get the wrong git info (branch name / rev)
  • if that somewhere is not a get repo, we panic on line 93 of parser/tag/tag.go

What should we do instead? Since we're shelling out to git, we should probably use the Bobfile's directory as top instead of $PWD

Easy Travis and other CI webhook integration.

It would be great if I could run the HTTP server and specify a Bobfile for a path. Then I could give that path to Travis webhooks and have it hit the build server after successful CI.

Something like http://localhost:5000/docker-build/project/travis, perhaps?

Add /health endpoint

I want to put docker-builder behind an AWS EC2 Elastic Load Balancer, but it requires a health check to make sure the instance is in service. Let's add a route at /health that always returns 200.

Accept top-level ".bobconfig" for repo globals

Since the user has limited control over the data sent with a Travis/GitHub webhook, certain options will have to be specified statically in the repo.

The suggested implementation for this is a .bobconfig file at the top level of the repo. Example options to be included in the .bobconfig are the default Bobfile and container group to be built (ala #96)

Re-add hipchat/campfire notifications

There are a couple of things to consider:

  • Do the tokens get provided on the cl / in the env for the entire server (probably the MVP)? If so, what if we want to use different accounts for different builds?
  • Should the hipchat info be provided in the Bobfile? If so, how do we deal with private information (i.e. api tokens) in the Bobfile of a public repo? Something like travis secure env vars is possible, but not ideal given that there is no centralized docker-builder service.
  • If we add this functionality, we probably don't want the notifications going off when we build locally (or at least an option to turn them off).
    • Should they be off or on by default?

Make sync build wait for `docker push`

It would be nice if this waited until after the push completed in case you want to block until you are able to pull the container for testing or deployment.

HTTP endpoint for viewing logs

Make sure log level can be set externally if used as a library.

Also, container output seems a bit verbose - should it only be printed when log level is set to "debug" and not "info"?

Project is no longer 'go get'-able

A go get of github.com/modcloth/docker-builder tries to use master rather than the travis-auth branch. I've worked around this by just using the binary release for the interim. I'm not sure if the correct course is to just update the README to direct users to the releases.

Rename

Maybe "docker-builder" - otherwise this will never get discovered. Plus I'm still not sold on the name.

Providing GitHub API token if building with webhook?

If no API token is provided to the build server itself, and the request comes through on a webhook as opposed to a request to /docker-build, it wouldn't be possible to clone down a private repo. Do we care? If so, proposed solutions?

Builds aren't isolated

Builds on the same build server aren't isolated from each other. This could definitely be a problem if we build a bunk version of a container upon which another container depends. Addressing this will be quite involved and may involve a re-architect of the whole build server system.

Welcoming suggestions on the design for this.

Empty response from server

Some requests get an error when posted via curl:

curl -XPOST -H Content-Type: application/json -u USERNAME:PASSWORD --connect-timeout 10 --silent --show-error https://bob.core-os.net/docker-build -d '
{
  "account": "USERNAME",
  "repo": "PROJECT",
  "ref": "27e5c49b64c846dc5d814945a16dd49384e022bb",
  "api_token": "APITOKEN",
  "sync": true
}
'
curl: (52) Empty reply from server

Will dig into this.

Specify Bobfile path or a [[container]] name to build in REST Interface

In my setting, I have many different services under the same git repo. I need to build like 5-6 different images and i'd like to not have to build all of them everytime I push to github or perhaps even when I manually queue a build via the REST interface.

It would be very helpful adding a [[container]] name or a bobfile path when doing something like the following:

curl -s -XPOST http://localhost:5000/jobs -d '{"account":"modcloth","repo":"docker-builder","ref":"master","bobfile":"services/backend-service-1/Bobfile"}'

or maybe:

curl -s -XPOST http://localhost:5000/jobs -d '{"account":"modcloth","repo":"docker-builder","ref":"master","container_name":"backend-service-1"}'

cc @rafecolton

Server stops pushing after a while

I believe this to be caused by an issue within queued-command-runner. Will be addressed with a current pull request that, among other things, removes the queued-command-runner from use. Will link to the issue shortly.

Make public Dockerfile

Right now it isn't possible to just do a docker build . since the quay.io registry is private. It would be nice to have a Dockerfile.public or something similar to push up to docker.io (modcloth/docker-buiilder) or allow users to easily build a container.

Add `BuildFromFile()` Function

Add something like bob.BuildFromFile() so it is no longer necessary to explicitly call Parse() before calling Build()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.