Runs unittests for each dub packages against latest dmd compiler.
There are two components, a server and at least one worker. The server checks github and code.dlang.org for releases and new packages. Based on that it creates jobs.
Each worker polls the server for a job. Once a job is returned it starts a docker skoppe/dubster-digger container to build DMD (if not already cached). It then uses the fresh dmd and starts a docker skoppe/dubster-dub container and starts building the package. After the build is complete the raw stdout/stderr is analysed for known error/success patterns, then all is pushed back to the server which will pipe it straight into mongo.
The next steps are
First of all, do a docker pull skoppe/dubster-dub and docker pull skoppe/dubster-digger .
Create a data container. Dubster will fire off additional containers and needs a way to share data between them.
docker create -v /gen --name dubsterdata skoppe/dubster /bin/true
(Note to self: /gen/dub-cache must explicitly be created. Find nice solution.)
Then start the container:
docker run -d --volumes-from dubsterdata --name dubsterworker -e "DOCKER_HOST=http://172.17.0.1:2375" skoppe/dubster --worker --serverHost=https://ghozadab.skoppe.nl --memory=2147483648
Note:
The worker needs a docker host that listens on a tcp port for http requests. /var/run/docker.sock is currently not supported. Try to start the docker daemon with -H tcp://172.17.0.1:2375.
(TODO: This is really hackish. Improve)
Note: don't just copy and paste these commands in your shell, adjust them according to your needs.
docker create -v /mongodata --name mongodata mongo /bin/bash -c "echo Started mongo data container"
docker run --volumes-from mongodata -p 27017 --name mongoserver -d mongo
Place a file default with client_max_body_size 20m; as content somewhere (e.g. /root/nginx.conf/default)
Note: adjust /root/letscerts to your liking
docker run -d -p 80:80 -p 443:443 --name nginx-proxy -v /root/letscerts:/etc/nginx/certs:ro -v /usr/share/nginx/html -v /var/run/docker.sock:/tmp/docker.sock:ro -v /root/nginx.conf:/etc/nginx/vhost.d jwilder/nginx-proxy
docker run -d -v /root/letscerts:/etc/nginx/certs:rw --volumes-from nginx-proxy -v /var/run/docker.sock:/var/run/docker.sock:ro jrcs/letsencrypt-nginx-proxy-companion
Upon starting it will first setup keys etc. It might take 5 min before it will correctly route and all that.
Note: Use your own host and email :)
docker run -d --name dubsterserver -e "VIRTUAL_HOST=some.public.host" -e "LETSENCRYPT_HOST=some.public.host" -e "[email protected]" --link mongoserver:mongo -e "MONGO_DB_NAME=dubby" skoppe/dubster --server
Wercker CI will build and push a new image to docker hub on each git push. (TODO: isolate docker hub push only to master branch)
If you want to fork and have your own, you need to setup wercker (or other) and adjust the container names appropriately.
Content type
Image
Digest
Size
240.5 MB
Last updated
almost 10 years ago
docker pull skoppe/dubster-build