Skip to content

Commit

Permalink
Added production parameter recognition feature (#468)
Browse files Browse the repository at this point in the history
  • Loading branch information
Murat Ursavas committed Jan 31, 2023
1 parent 4b0e204 commit 48a457c
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 19 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/compile-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ jobs:
push: true
labels: ${{ steps.meta.outputs.labels }}
tags: ${{ steps.meta.outputs.tags }}
cache-from: type=registry,ref=nebraltd/hm-diag:buildcache
cache-to: type=registry,ref=nebraltd/hm-diag:buildcache,mode=max

- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
39 changes: 20 additions & 19 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ FROM balenalib/raspberry-pi-debian-python:bullseye-build-20221215 as builder
ENV PYTHON_DEPENDENCIES_DIR=/opt/python-dependencies

RUN mkdir /tmp/build
COPY ./ /tmp/build
COPY quectel/ /tmp/build/quectel
WORKDIR /tmp/build

RUN \
install_packages \
build-essential \
libdbus-glib-1-dev

RUN pip3 install --no-cache-dir --target="$PYTHON_DEPENDENCIES_DIR" .
libdbus-glib-1-dev && \
mkdir -p "$PYTHON_DEPENDENCIES_DIR" && \
pip3 install --no-cache-dir --target="$PYTHON_DEPENDENCIES_DIR" .

# firehose build, the tar is obtained from quectel.
# there is no install target in Makefile, doing manual copy
Expand Down Expand Up @@ -48,16 +48,6 @@ WORKDIR /opt/

# Import gpg key
COPY keys/manufacturing-key.gpg ./
RUN gpg --import manufacturing-key.gpg
RUN rm manufacturing-key.gpg

# @TODO: Re-enable health-check once Balena supports it fully.
# HEALTHCHECK \
# --interval=120s \
# --timeout=5s \
# --start-period=15s \
# --retries=10 \
# CMD wget -q -O - http://0.0.0.0:5000/initFile.txt || exit 1

# Copy packages from builder
COPY --from=builder "$PYTHON_DEPENDENCIES_DIR" "$PYTHON_DEPENDENCIES_DIR"
Expand All @@ -69,15 +59,26 @@ COPY --from=builder /usr/sbin/QFirehose /usr/sbin/QFirehose
COPY --from=builder /tmp/build/quectel /quectel

# copy db migration files
COPY --from=builder /tmp/build/migrations /opt/migrations/migrations
COPY --from=builder /tmp/build/alembic.ini /opt/migrations/alembic.ini
COPY migrations/ /opt/migrations/migrations
COPY alembic.ini /opt/migrations/alembic.ini

# copy start admin session script
COPY --from=builder /tmp/build/start_admin_session /usr/sbin/start_admin_session
RUN chmod 700 /usr/sbin/start_admin_session
COPY start_admin_session /usr/sbin/start_admin_session

# Getting RUN layers together
RUN gpg --import manufacturing-key.gpg && \
rm manufacturing-key.gpg && \
chmod 700 /usr/sbin/start_admin_session && \
mkdir -p /opt/nebra

# Add python dependencies to PYTHONPATH
ENV PYTHONPATH="${PYTHON_DEPENDENCIES_DIR}:${PYTHONPATH}"
ENV PATH="${PYTHON_DEPENDENCIES_DIR}/bin:${PATH}"

ENTRYPOINT ["gunicorn", "--bind", "0.0.0.0:5000", "--timeout", "300", "hw_diag.wsgi:wsgi_app"]
# Copy environment variables startup script
COPY setenv.sh /opt/nebra/setenv.sh

# Copy container startup script
COPY start_diagnostics.sh /opt/start_diagnostics.sh

ENTRYPOINT ["/opt/start_diagnostics.sh"]
48 changes: 48 additions & 0 deletions setenv.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

base_path="/var/nebra/envvars"

# Create necessary folder if it doesn't exist
if [ ! -d $base_path ]; then
mkdir -p $base_path
fi

create_file_if_not_exists() {
local name="$1"
local contents="$2"
local fullpath="${base_path}/${name}"

if [ ! -f "${fullpath}" ]; then
echo "${name} parameter file doesn't exist. Setting it as ${contents} now.";
echo "${contents}" > "${fullpath}"
fi
}

export_param_if_not_exists() {
local name="$1"
local fullpath="${base_path}/${name}"

if [ -f "${fullpath}" ]; then
contents=$(<"${fullpath}");
export "${name}"="${contents}"
echo "${name} is set as ${contents}.";
else
echo "Error: Cannot set ${name} variable.";
fi
}

#FREQ
if [ -z ${FREQ+x} ]; then
export_param_if_not_exists FREQ
else
echo "FREQ variable is already set as ${FREQ}.";
create_file_if_not_exists FREQ "${FREQ}"
fi

#VARIANT
if [ -z ${VARIANT+x} ]; then
export_param_if_not_exists VARIANT
else
echo "VARIANT variable is already set as ${VARIANT}.";
create_file_if_not_exists VARIANT "${VARIANT}"
fi
6 changes: 6 additions & 0 deletions start_diagnostics.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! /bin/bash

# shellcheck source=/dev/null
source /opt/nebra/setenv.sh

gunicorn --bind 0.0.0.0:5000 --timeout 300 hw_diag.wsgi:wsgi_app

0 comments on commit 48a457c

Please sign in to comment.