Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker builds #16

Merged
merged 2 commits into from
Apr 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
deliverable/*
*.7z
*.so
*.whl
*.pyc
sink_service/build/
Expand Down
2 changes: 0 additions & 2 deletions container/build_defaults.env
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,3 @@ DOCKER_PLATFORM="x86"
#DOCKER_BUILD_ARGS="--build-arg WM_MESSAGING_PKG=wirepas_messaging-1.1.0* \
# --build-arg WM_TRANSPORT_PKG=wirepas_gateway-1.1.0*"

DOCKER_BUILD_ARGS="--build-arg WIREPAS_BASE_IMAGE="wirepas-base"\
--build-arg WIREPAS_BASE_TAG="1.0""
File renamed without changes.
4 changes: 3 additions & 1 deletion container/Dockerfile-rpi → container/dev/Dockerfile-rpi
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ FROM wirepas/base:1.0-raspbian as wm-lxgw
RUN [ "cross-build-start" ]

USER root
RUN apt-get update && apt-get install --no-install-recommends python3-gi-cairo
RUN apt-get update \
&& apt-get install -y --no-install-recommends python3-gi-cairo \
&& rm -rf /var/lib/apt/lists/*


ARG WM_MESSAGING_PKG
Expand Down
29 changes: 15 additions & 14 deletions container/docker-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ _get_build_history()
{
rm build-*.txt || true
LAST_HASH=$(git log -n 1 --oneline --format=%H)
date > build-${LAST_HASH}.txt
git log -n "${DOCKER_BUILD_GIT_HISTORY_LENGTH}" --oneline >> build-${LAST_HASH}.txt
date > build-"${LAST_HASH}".txt
git log -n "${DOCKER_BUILD_GIT_HISTORY_LENGTH}" --oneline >> build-"${LAST_HASH}".txt
}


_read_pypkg_version()
{
PYTHON_PKG_VERSION=""
PYTHON_PKG_VERSION=$(cat setup.py|\
PYTHON_PKG_VERSION=$(< setup.py \
awk '/version=/{print $NF}'|\
awk '{split($0,a,"="); print a[2]}'|\
tr -d ','|\
Expand All @@ -39,14 +39,15 @@ _defaults()
{
PATH_PROJECT_DEFAULTS_PATH=${PATH_PROJECT_DEFAULTS_PATH:-"./container/build_defaults.env"}
echo "Reading ${PATH_PROJECT_DEFAULTS_PATH}"
source ${PATH_PROJECT_DEFAULTS_PATH}
# shellcheck disable=SC1090
source "${PATH_PROJECT_DEFAULTS_PATH}"

# default defaults if not defined in build file
DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:-"latest"}
DOCKER_BUILD_CACHE=${DOCKER_BUILD_CACHE:-""}
DOCKER_PLATFORM=${DOCKER_PLATFORM:-"x86"}
DOCKER_BUILD_TARGET=${DOCKER_BUILD_TARGET:-""}
DOCKER_FILE=${DOCKER_FILE:-"./container/Dockerfile"}
DOCKER_FILE=${DOCKER_FILE:-"./container/dev/Dockerfile"}
DOCKER_REPO=${DOCKER_REPO:-""}
DOCKER_PUSH=${DOCKER_PUSH:-"false"}
DOCKER_SKIP_BUILD=${DOCKER_SKIP_BUILD:-"false"}
Expand Down Expand Up @@ -140,8 +141,8 @@ _parse()
--arm)
DOCKER_PLATFORM="arm"
DOCKER_BUILD_ARGS="--build-arg WIREPAS_BASE=wirepas-base-rpi:1.0"
DOCKER_FILE="container/Dockerfile-rpi"
if [ ! -z ${DOCKER_IMAGE_ARM_NAME} ]
DOCKER_FILE="container/dev/Dockerfile-rpi"
if [ ! -z "${DOCKER_IMAGE_ARM_NAME}" ]
then
DOCKER_IMAGE_NAME=${DOCKER_IMAGE_ARM_NAME}
fi
Expand Down Expand Up @@ -203,11 +204,11 @@ _build()
_get_build_history || true
echo "building ${DOCKER_FILE} ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} [${DOCKER_BUILD_CACHE}] ${DOCKER_BUILD_ARGS}"
docker build \
--compress ${DOCKER_BUILD_CACHE} \
-t ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} . \
-f ${DOCKER_FILE} \
${DOCKER_BUILD_TARGET} \
${DOCKER_BUILD_ARGS}
--compress "${DOCKER_BUILD_CACHE}" \
-t "${DOCKER_IMAGE_NAME}":"${DOCKER_IMAGE_TAG}" . \
-f "${DOCKER_FILE}" \
"${DOCKER_BUILD_TARGET}" \
"${DOCKER_BUILD_ARGS}"
fi
}

Expand All @@ -216,7 +217,7 @@ _repo()
if [[ ! -z "${DOCKER_REPO}" ]]
then
echo "tagging ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} --> ${DOCKER_REPO}"
docker tag ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} ${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}
docker tag "${DOCKER_IMAGE_NAME}":"${DOCKER_IMAGE_TAG}" "${DOCKER_REPO}"/"${DOCKER_IMAGE_NAME}":"${DOCKER_IMAGE_TAG}"
fi
}

Expand All @@ -225,7 +226,7 @@ _push()
if [[ "${DOCKER_PUSH}" == "true" ]] && [[ ! -z "${DOCKER_REPO}" ]]
then
echo "pushing ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} --> ${DOCKER_REPO}"
docker push ${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}
docker push "${DOCKER_REPO}"/"${DOCKER_IMAGE_NAME}":"${DOCKER_IMAGE_TAG}"
fi
}

Expand Down
82 changes: 82 additions & 0 deletions container/rpi/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
FROM wirepas/base:1.0-raspbian as builder
RUN [ "cross-build-start" ]
USER root
ARG GIT_TAG=${GIT_TAG:-"master"}

# Update the sources list
RUN apt-get update \
&& apt-get install -y --no-install-recommends git \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app_build
ENV SINK_SERVICE="/app_build/gateway/sink_service/"
ENV TRANSPORT_SERVICE="/app_build/gateway/python_transport/"

RUN git clone --branch "${GIT_TAG}" https://github.com/wirepas/gateway.git gateway
RUN git clone --branch "${GIT_TAG}" https://github.com/wirepas/c-mesh-api.git gateway/sink_service/c-mesh-api

RUN cd "${SINK_SERVICE}" \
&& make clean \
&& make

RUN cd "${TRANSPORT_SERVICE}" \
&& py3clean . || true \
&& python3 setup.py clean --all \
&& python3 setup.py sdist bdist_wheel

RUN [ "cross-build-end" ]

# builds x86 gateway services
FROM wirepas/base:1.0-raspbian as wm-lxgw
RUN [ "cross-build-start" ]
USER root

ENV SERVICE_HOME="${HOME}"/gateway
ENV SINK_SERVICE="${SERVICE_HOME}"/sink_service
ENV TRANSPORT_SERVICE="${SERVICE_HOME}"/transport_service
ARG WM_TRANSPORT_PKG
ENV WM_TRANSPORT_PKG=${WM_TRANSPORT_PKG:-"${TRANSPORT_SERVICE}/wirepas_gateway-*.tar.gz"}

COPY --from=builder /app_build/gateway/python_transport/requirements.txt "${TRANSPORT_SERVICE}"/
COPY --from=builder /app_build/gateway/python_transport/dist/* "${TRANSPORT_SERVICE}"/
COPY --from=builder /app_build/gateway/python_transport/wirepas_gateway/wirepas_certs/extwirepas.pem /etc/extwirepas.pem
COPY --from=builder /app_build/gateway/sink_service/build/sinkService /usr/local/bin/sinkService
COPY --from=builder /app_build/gateway/sink_service/com.wirepas.sink.conf /etc/dbus-1/system.d/

RUN pip3 install --upgrade pip
RUN pip3 install --no-cache-dir -r "${TRANSPORT_SERVICE}"/requirements.txt
RUN pip3 install --no-cache-dir ${WM_TRANSPORT_PKG}

RUN rm -rf "${HOME}"/.cache \
&& chown "${USER}":"${USER}" -R "${HOME}"

# Environment
ARG WM_SERVICES_HOST
ARG WM_SERVICES_MQTT_PORT
ARG WM_SERVICES_MQTT_USER
ARG WM_SERVICES_MQTT_PASSWORD
ARG WM_SERVICES_CERTIFICATE_CHAIN

ARG WM_SINK_UART_PORT
ARG WM_SINK_UART_BITRATE
ARG WM_SINK_ID

ENV WM_SERVICES_HOST=${WM_SERVICES_HOST:-"localhost"}
ENV WM_SERVICES_MQTT_PORT=${WM_SERVICES_MQTT_PORT:-"1883"}
ENV WM_SERVICES_MQTT_USER=${WM_SERVICES_MQTT_USER:-"mqttuser"}
ENV WM_SERVICES_MQTT_PASSWORD=${WM_SERVICES_MQTT_PASSWORD:-"12sdftat3089ajoiausd+91as12"}
ENV WM_SERVICES_CERTIFICATE_CHAIN=${WM_SERVICES_CERTIFICATE_CHAIN:-""}
ENV WM_SERVICES_GATEWAY_ID=${WM_SERVICES_GATEWAY_ID:-""}

ENV WM_SINK_UART_PORT=${WM_SINK_UART_PORT:-"/dev/ttyACM0"}
ENV WM_SINK_UART_BITRATE={WM_SINK_UART_BITRATE:-"125000"}
ENV WM_SINK_ID=${WM_SINK_ID:-"0"}

ENV EXEC_TRANSPORT "wm-gw"
ENV EXEC_SINK /usr/local/bin/sinkService

COPY --from=builder /app_build/gateway/container/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]

CMD ["sink"]
RUN [ "cross-build-end" ]
75 changes: 75 additions & 0 deletions container/x86/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
FROM wirepas/base:1.0-ubuntu as builder

ARG GIT_TAG=${GIT_TAG:-"master"}

# Update the sources list
RUN apt-get update \
&& apt-get install -y --no-install-recommends git \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app_build
ENV SINK_SERVICE="/app_build/gateway/sink_service/"
ENV TRANSPORT_SERVICE="/app_build/gateway/python_transport/"

RUN git clone --branch "${GIT_TAG}" https://github.com/wirepas/gateway.git gateway
RUN git clone --branch "${GIT_TAG}" https://github.com/wirepas/c-mesh-api.git gateway/sink_service/c-mesh-api

RUN cd "${SINK_SERVICE}" \
&& make clean \
&& make

RUN cd "${TRANSPORT_SERVICE}" \
&& ./utils/generate_wheel.sh

# builds x86 gateway services
FROM wirepas/base:1.0-ubuntu as wm-lxgw
USER root

ENV SERVICE_HOME="${HOME}"/gateway
ENV SINK_SERVICE="${SERVICE_HOME}"/sink_service
ENV TRANSPORT_SERVICE="${SERVICE_HOME}"/transport_service
ARG WM_TRANSPORT_PKG
ENV WM_TRANSPORT_PKG=${WM_TRANSPORT_PKG:-"${TRANSPORT_SERVICE}/wirepas_gateway-*.tar.gz"}

COPY --from=builder /app_build/gateway/python_transport/requirements.txt "${TRANSPORT_SERVICE}"/
COPY --from=builder /app_build/gateway/python_transport/dist/* "${TRANSPORT_SERVICE}"/
COPY --from=builder /app_build/gateway/python_transport/wirepas_gateway/wirepas_certs/extwirepas.pem /etc/extwirepas.pem
COPY --from=builder /app_build/gateway/sink_service/build/sinkService /usr/local/bin/sinkService
COPY --from=builder /app_build/gateway/sink_service/com.wirepas.sink.conf /etc/dbus-1/system.d/

RUN pip3 install --upgrade pip
RUN pip3 install --no-cache-dir -r "${TRANSPORT_SERVICE}"/requirements.txt
RUN pip3 install --no-cache-dir ${WM_TRANSPORT_PKG}

RUN rm -rf "${HOME}"/.cache \
&& chown "${USER}":"${USER}" -R "${HOME}"

# Environment
ARG WM_SERVICES_HOST
ARG WM_SERVICES_MQTT_PORT
ARG WM_SERVICES_MQTT_USER
ARG WM_SERVICES_MQTT_PASSWORD
ARG WM_SERVICES_CERTIFICATE_CHAIN

ARG WM_SINK_UART_PORT
ARG WM_SINK_UART_BITRATE
ARG WM_SINK_ID

ENV WM_SERVICES_HOST=${WM_SERVICES_HOST:-"localhost"}
ENV WM_SERVICES_MQTT_PORT=${WM_SERVICES_MQTT_PORT:-"1883"}
ENV WM_SERVICES_MQTT_USER=${WM_SERVICES_MQTT_USER:-"mqttuser"}
ENV WM_SERVICES_MQTT_PASSWORD=${WM_SERVICES_MQTT_PASSWORD:-"12sdftat3089ajoiausd+91as12"}
ENV WM_SERVICES_CERTIFICATE_CHAIN=${WM_SERVICES_CERTIFICATE_CHAIN:-""}
ENV WM_SERVICES_GATEWAY_ID=${WM_SERVICES_GATEWAY_ID:-""}

ENV WM_SINK_UART_PORT=${WM_SINK_UART_PORT:-"/dev/ttyACM0"}
ENV WM_SINK_UART_BITRATE={WM_SINK_UART_BITRATE:-"125000"}
ENV WM_SINK_ID=${WM_SINK_ID:-"0"}

ENV EXEC_TRANSPORT "wm-gw"
ENV EXEC_SINK /usr/local/bin/sinkService

COPY --from=builder /app_build/gateway/container/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]

CMD ["sink"]