cloudpassage/don-bot

View on GitHub
Dockerfile

Summary

Maintainability
Test Coverage
# Get the halocelery component
FROM docker.io/halotools/python-sdk:ubuntu-18.04_sdk-latest_py-3.6 as downloader
MAINTAINER toolbox@cloudpassage.com

ARG HALOCELERY_BRANCH=v0.9.2

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y \
        git

WORKDIR /app/

RUN echo "Target branch for this build: $HALOCELERY_BRANCH"

RUN git clone -b $HALOCELERY_BRANCH https://github.com/cloudpassage/halocelery

RUN cd halocelery && \
    git archive \
        --verbose \
        --format=tar.gz \
        -o /app/halocelery.tar.gz \
        $HALOCELERY_BRANCH

#####################################
# Unit and integration tests run in a separate step.

FROM docker.io/halotools/python-sdk:ubuntu-18.04_sdk-latest_py-3.6
MAINTAINER toolbox@cloudpassage.com

ENV SLACK_ICON_URL='http://www.cloudpassage.com/wp-content/uploads/2016/12/don-operator.png'
ENV HALO_API_HOSTNAME='api.cloudpassage.com'
ENV HALO_API_PORT='443'

# These arguments allow integration testing with the Halo API
ARG HALO_API_KEY
ARG HALO_API_SECRET_KEY
ARG RUN_INTEGRATION_TESTS
ARG CC_TEST_REPORTER_ID

ARG DEBIAN_FRONTEND=noninteractive

# Up to root to add additional packages
USER root

RUN apt-get update && \
    apt-get install -y \
        curl \
        expect \
        git

# Drop in the app code
COPY . /app/

# Setup for manual library installation
RUN mkdir /src/
WORKDIR /src/

COPY --from=downloader /app/halocelery.tar.gz /src/halocelery/halocelery.tar.gz

RUN cd halocelery && \
    tar -zxvf ./halocelery.tar.gz && \
    cd /src/ && \
    mv ./halocelery /app/app/


WORKDIR /app/app

RUN pip3 install -r requirements-test.txt

# Now take ownership and drop to non-root user
RUN chown -R ${APP_USER}:$APP_GROUP /app

USER ${APP_USER}

RUN echo $RUN_INTEGRATION_TESTS

# If RUN_INTEGRATION_TESTS is set, run integration tests.
RUN if [ "$RUN_INTEGRATION_TESTS" = "True" ] ; \
    then echo "Run all tests" && \
        curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter; \
        chmod +x ./cc-test-reporter; \
        ./cc-test-reporter before-build; \
        py.test \
            --cov-report term-missing \
            --cov-report xml \
            --cov=donlib \
            --cov=cortexlib \
            /app/app/test/;  \
        ./cc-test-reporter after-build; \
    else echo Not running integration tests!. && \
        py.test /app/app/test/unit ; \
    fi


#####################################
# Building the final container image

FROM docker.io/halotools/python-sdk:ubuntu-18.04_sdk-latest_py-3.6
MAINTAINER toolbox@cloudpassage.com

ENV SLACK_ICON_URL='http://www.cloudpassage.com/wp-content/uploads/2016/12/don-operator.png'
ENV HALO_API_HOSTNAME='api.cloudpassage.com'
ENV HALO_API_PORT='443'

ARG DEBIAN_FRONTEND=noninteractive

# Up to root to add additional packages
USER root

RUN apt-get update && \
    apt-get install -y \
        expect

# Drop in the app code
COPY app/ /app/

# Setup for manual library installation
RUN mkdir /src/
WORKDIR /src/


COPY --from=downloader /app/halocelery.tar.gz /src/halocelery/halocelery.tar.gz

RUN cd halocelery && \
    tar -zxvf ./halocelery.tar.gz && \
    cd /src/ && \
    mv ./halocelery /app


WORKDIR /app

RUN pip3 install -r requirements.txt

# Now take ownership and drop to non-root user
RUN chown -R ${APP_USER}:$APP_GROUP /app

USER ${APP_USER}

WORKDIR /app

CMD ["unbuffer", "python3", "/app/runner.py"]