# Mixer CI Container
[![](https://images.microbadger.com/badges/image/clearlinux/mixer-ci.svg)](https://microbadger.com/images/clearlinux/mixer-ci "Get your own image badge on microbadger.com")
[![](https://images.microbadger.com/badges/version/clearlinux/mixer-ci.svg)](https://microbadger.com/images/clearlinux/mixer-ci "Get your own version badge on microbadger.com")

This repo provides a Clear Linux* container for running the Mixer CI on Travis.
This container has all of the packages and tools installed to build Mixer from
source and run its test suite.

# Build
## Building Locally 
```
docker build -t clearlinux/mixer-ci .
```
> #### Note:
> If you are behind a firewall, you may need to pass proxy settings to the
> build environment:
>
> `--build-arg https_proxy="$https_proxy"`
>
> `--build-arg http_proxy="$http_proxy"`
>
> `--build-arg no_proxy="$no_proxy"`
>
> flags to docker build; note these only impact the Build Environment and
> will not become part of the image being built.

## Pulling from Dockerhub
```
docker pull clearlinux/mixer-ci
```

# Use
## Create a derivative Dockerfile
This image creates a container with a user named `clr`, with the `GOPATH` in
`/home/clr/go`.

Create a `Dockerfile` based on this `mixer-ci` image. In this `Dockerfile`, copy
the source code into the `mixer-tools` **package root** within the `GOPATH`,
then execute the build and test steps. An example `Dockerfile` is as follows:
```
FROM clearlinux/mixer-ci:latest
COPY --chown=clr:clr . /home/clr/go/src/github.com/clearlinux/mixer-tools/
WORKDIR /home/clr/go/src/github.com/clearlinux/mixer-tools
ENTRYPOINT ["/bin/sh", "-c", "make && sudo -E make install && make lint && make check"]
```

> #### Note:
> You can inspect [Mixer's Dockerfile](https://github.com/clearlinux/mixer-tools/blob/master/Dockerfile)
> to see how this is used in production.

## Configure Travis to build and run the Dockerfile
In your Travis config (`.travis.yml`), build and run your above `Dockerfile`. An
example `.travis.yml` file is as follows:
```
language: go
sudo: required

go:
    - 1.9

go_import_path: github.com/clearlinux/mixer-tools

services:
    - docker

before_install:
    - docker build -t testdock .

script:
    - docker run testdock
```
> #### Note:
> You can inspect [Mixer's Travis config](https://github.com/clearlinux/mixer-tools/blob/master/.travis.yml)
> to see how this is used in production. For more information on Travis
> configuration, see the [Travis documentation](https://docs.travis-ci.com/user/customizing-the-build).

