github.com/crhym3/drone-exec

Agent for executing Drone builds in Docker containers


License
Apache-2.0
Install
go get github.com/crhym3/drone-exec

Documentation

Drone build agent that executes builds in Docker containers.

Building

Use the following commands to build:

export GO15VENDOREXPERIMENT=1

go build
go test ./...

Running

You can run the program locally for testing purposes. The build details are provided to the program via a JSON payload as seen below:

./drone-exec --debug --pull --cache --clone --build <<EOF
{
    "system": {
        "link": "http://localhost:8000"
    },
    "workspace": {},
    "repo": {
        "owner": "garyburd",
        "name": "redigo",
        "full_name": "garyburd/redigo",
        "link_url": "https://github.com/garyburd/redigo",
        "clone_url": "git://github.com/garyburd/redigo.git"
    },
    "build": {
        "number": 1,
        "ref": "refs/heads/master",
        "commit": "d8dbe4d94f15fe89232e0402c6e8a0ddf21af3ab",
        "branch": "master"
    },
    "job": {
        "environment": {}
    },
    "config": "{ build: { image: 'golang:1.4.2', commands: ['cd redis', 'go build', 'go test -v']}, compose: { redis: { image: 'redis:2.8' } } }"
}
EOF

Note that the above program expects access to a Docker daemon. It will provision all the necessary build containers, execute your build, and then cleanup and remove the build environment.

Docker

Use the following commands to build the Docker image:

# compile the binary for the correct architecture
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 GO15VENDOREXPERIMENT=1 go build

# build the docker image, adding the above binary
docker build --rm=true -t drone/drone-exec .

Vendoring

Using the vexp utility to vendor dependencies:

go get https://github.com/kr/vexp
./vexp