From 5d0fe470923162b33d6b5e11b2d2aef983c50e38 Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Thu, 3 Dec 2020 13:18:58 -0800 Subject: [PATCH] Backport gitlab-ci, Dockerfile, and entrypoint from 13.0 --- .gitlab-ci.yml | 19 ++++++++++++- Dockerfile | 3 +- Dockerfile-GitLab | 3 +- entrypoint.sh | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 3 deletions(-) create mode 100755 entrypoint.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a85a9629..6103f1ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ services: stages: - build + - release - trigger variables: @@ -15,7 +16,9 @@ variables: before_script: - RELEASE=$(echo $CI_COMMIT_REF_NAME | sed "s{.*\/\(.*\)\/.*{\1{g") + - RELEASE_DATE="$(date '+%Y-%m-%d')" - IMAGE_TAG=$(echo $CI_COMMIT_REF_SLUG | sed "s/^\([[:digit:]][[:digit:]]\)-\([[:digit:]]\)/\1\.\2/g") + - IMAGE_TAG_DATE="${IMAGE_TAG}-${RELEASE_DATE}" - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com merge_request: @@ -23,7 +26,7 @@ merge_request: GIT_STRATEGY: none stage: build only: - - /(^new\/)|(^mig\/)|(^imp\/)|(^fix\/)/ + - /(^add\/)|(^new\/)|(^mig\/)|(^imp\/)|(^fix\/)/i script: - docker pull registry.gitlab.com/hibou-io/hibou-odoo/flow - docker tag registry.gitlab.com/hibou-io/hibou-odoo/flow flow @@ -40,6 +43,20 @@ build: - docker build --pull -t $CONTAINER_IMAGE:$IMAGE_TAG -f Dockerfile-GitLab . - docker push $CONTAINER_IMAGE:$IMAGE_TAG +release: + stage: release + variables: + GIT_STRATEGY: none + script: + - apk add python3 + - docker pull registry.gitlab.com/hibou-io/hibou-odoo/flow + - docker tag registry.gitlab.com/hibou-io/hibou-odoo/flow flow + - docker run -v "${PWD}/.local:/dest" flow self-install /dest + - cd .local/flow + - ./entrypoint.sh docker-release $CONTAINER_IMAGE:$IMAGE_TAG $CONTAINER_IMAGE:$IMAGE_TAG_DATE + only: + - /^\d+\.\d+$/ + publish: stage: build script: diff --git a/Dockerfile b/Dockerfile index 0da33d43..fcc7345e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ FROM hibou/hibou-odoo:11.0 -USER 104 +COPY --from=hibou/flow /flow /flow +COPY --chown=104 entrypoint.sh /entrypoint.sh COPY --chown=104 . /opt/odoo/hibou-suite RUN rm /etc/odoo/odoo.conf \ && cp /opt/odoo/hibou-suite/debian/odoo.conf /etc/odoo/odoo.conf \ diff --git a/Dockerfile-GitLab b/Dockerfile-GitLab index 71144c8c..f63ca08d 100644 --- a/Dockerfile-GitLab +++ b/Dockerfile-GitLab @@ -1,6 +1,7 @@ FROM registry.gitlab.com/hibou-io/hibou-odoo/odoo:RELEASE -USER 104 +COPY --from=registry.gitlab.com/hibou-io/hibou-odoo/flow /flow /flow +COPY --chown=104 entrypoint.sh /entrypoint.sh COPY --chown=104 . /opt/odoo/hibou-suite RUN rm /etc/odoo/odoo.conf \ && cp /opt/odoo/hibou-suite/debian/odoo.conf /etc/odoo/odoo.conf \ diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 00000000..e965d855 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +set -e + +# set the postgres database host, port, user and password according to the environment +# and pass them as arguments to the odoo process if not present in the config file +: ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} +: ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} +: ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} +: ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} + +DB_ARGS=() +function check_config() { + param="$1" + value="$2" + if grep -q -E "^\s*\b${param}\b\s*=" "$ODOO_RC" ; then + value=$(grep -E "^\s*\b${param}\b\s*=" "$ODOO_RC" |cut -d " " -f3|sed 's/["\n\r]//g') + fi; + DB_ARGS+=("--${param}") + DB_ARGS+=("${value}") +} +check_config "db_host" "$HOST" +check_config "db_port" "$PORT" +check_config "db_user" "$USER" +check_config "db_password" "$PASSWORD" + +case "$1" in + flow) + shift + wait-for-psql.py ${DB_ARGS[@]} --timeout=60 + : ${DB_NAME:='odoo'} + : ${DATA_DIR:='/var/lib/odoo'} + check_config "db_name" "$DB_NAME" + check_config "data_dir" "$DATA_DIR" + cd /flow + FLOW_ARGS=() + CONTINUE="1" + while [[ "$#" && $CONTINUE ]]; do + # We want the -- shifted, but not in the FLOW_ARGS + if [[ "$1" == "--" ]]; then + CONTINUE="" + shift + fi + if [[ "$1" && $CONTINUE ]]; then + FLOW_ARGS+=("$1") + shift + else + # if we shift too many times we exit... + CONTINUE="" + fi + done + /flow/entrypoint.sh ${FLOW_ARGS[@]} ${DB_ARGS[@]} + exec /entrypoint.sh "$@" + ;; + -- | odoo) + shift + if [[ "$1" == "scaffold" ]] ; then + exec odoo "$@" + else + wait-for-psql.py ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${DB_ARGS[@]}" + fi + ;; + -*) + wait-for-psql.py ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${DB_ARGS[@]}" + ;; + *) + exec "$@" +esac + +exit 1 \ No newline at end of file