This project exists as an example for continuous integration of Elixir on CircleCI.
It also works as a bit of a boilerplate project.
- Builds your project as a docker container, and automatically pushes it to dockerhub if tests pass
- Runs Dialyzer on your project
- Caches build environment and container layers for quick build times.
Getting this going in your project:
- Copy the scripts/ci folder, circle.yml & Dockerfile to your project.
- Update the Erlang and Elixir versions to the latest in the Dockerfile
- Set CIRCLE_PROJECT_REPONAME in the Dockerfile to your project's name
- Make changes to the Docker File as appropriate for your project
- Specify the deps and apps you care about for dialyzer in your mix file. (see our example)
- Add credentials for the Docker.com repo to your CircleCI account (optional for deployment)
- Add the repo to CircleCI so that the webhook is installed
###Deploying to Docker Hub
This example also deploys the built image to Docker Hub after successfully building and testing. See the `deployment` section of [circle.yml](circle.yml) for details on how this is done. Note that three environment variables need to be set on CircleCI for the deployment to work:
* DOCKER_EMAIL - The email address associated with the user with push access to the Docker Hub repository
* DOCKER_USER - Docker Hub username
* DOCKER_PASS - Docker Hub password (these are all stored encrypted on CircleCI, and you can create a deployment user with limited permission on Docker Hub if you like)
Also note that the Docker Hub repository name and Docker registry endpoint are hard-coded into [circle.yml](circle.yml) and [.dockercfg.template](.dockercfg.template) respectively and would need to be changed to deploy to a different repository or registry.
* [CircleCI Home](https://circleci.com)
* [The CircleCI Docker docs](https://circleci.com/docs/docker)
* [The Docker userguide](http://docs.docker.com/userguide/)
* [Docker Hub](https://hub.docker.com/)
### To Do:
- Add publishing to hex.docs: https://hex.pm/docs/tasks#hex_docs
- Add publishing to hex: https://hex.pm/docs/tasks#hex_publish