From e40931620d711ba76ea52fcba044225f4171a6ff Mon Sep 17 00:00:00 2001 From: Janik von Rotz Date: Fri, 24 Jan 2025 08:54:12 +0100 Subject: [PATCH] fix: docker image build --- docker-compose.yml.template | 6 +++--- image/README.md | 20 +++++++------------- image/entrypoint.sh | 4 ---- image/odoo.conf.template | 2 +- image/scripts/auto-envsubst | 5 +++++ image/scripts/git-clone-addons | 5 +++-- task | 17 +++++++++-------- 7 files changed, 28 insertions(+), 31 deletions(-) diff --git a/docker-compose.yml.template b/docker-compose.yml.template index 1c3530ca..77df13b7 100644 --- a/docker-compose.yml.template +++ b/docker-compose.yml.template @@ -30,8 +30,8 @@ services: GIT_SSH_PRIVATE_KEY: ${GIT_SSH_PRIVATE_KEY} ADDONS_GIT_REPOS: ${ADDONS_GIT_REPOS} ODOO_ADDONS_PATH: ${ODOO_ADDONS_PATH} - ODOO_DATABASE: ${ODOO_DATABASE} - ODOO_INIT: ${ODOO_INIT} + ODOO_DATABASE: "${ODOO_DATABASE}" + ODOO_INIT: "${ODOO_INIT}" ODOO_INIT_LANG: ${ODOO_INIT_LANG} ODOO_INIT_ADDONS: ${ODOO_INIT_ADDONS} ENVIRONMENT: ${ENVIRONMENT} @@ -48,7 +48,7 @@ services: LIMIT_TIME_CPU: ${LIMIT_TIME_CPU} LIMIT_TIME_REAL: ${LIMIT_TIME_REAL} MODULE_AUTO_INSTALL_DISABLED: ${MODULE_AUTO_INSTALL_DISABLED} - CLICK_ODOO_UPDATE: ${CLICK_ODOO_UPDATE} + CLICK_ODOO_UPDATE: "${CLICK_ODOO_UPDATE}" ports: - "127.0.0.1:${ODOO_PORT}:${ODOO_PORT}" volumes: diff --git a/image/README.md b/image/README.md index 1ac83960..0d58788b 100644 --- a/image/README.md +++ b/image/README.md @@ -47,28 +47,22 @@ services: ODOO_MAIL_SMTP_FROM_FILTER: test@mint-system.ch ODOO_MAIL_IMAP_HOST: mail.infomaniak.com ODOO_MAIL_IMAP_PORT: 993 - ODOO_MAIL_IMAP_SSL: True + ODOO_MAIL_IMAP_SSL: "True" ODOO_MAIL_USERNAME: test@mint-system.ch ODOO_MAIL_PASSWORD: ***** GIT_SSH_PUBLIC_KEY: ssh-ed25519 BBBBC3NzaC1lZDI1NTE5BBBBIDR9Ibi0mATjCyx1EYg594oFkY0rghtgo+pnFHOvAcym Mint-System-Project-MCC@github.com - GIT_SSH_PRIVATE_KEY: | - -----BEGIN OPENSSH PRIVATE KEY----- - b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW - QyNTUxOQAAACA0fSG4tJgE4wssdRGIOfeKBZGNK4IbYKPqZxRzrwHMpgAAAKi5ZBaFuWQW - hQAAAAtzc2gtZWQyNTUxOQAAACA0fSG4tJgE4wssdRGIOfeKBZGNK4IbYKPqZxRzrwHMpg - 0BAgM= - -----END OPENSSH PRIVATE KEY----- + GIT_SSH_PRIVATE_KEY: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLQpiM0JsYm5OemFDMXJaWGt0ZGpFQUFBQUFCRzV2Ym1VQUFBQUVibTl1WlFBQUFBQUFBQUFCQUFBQU13QUFBQXR6YzJndFpXClF5TlRVeE9RQUFBQ0EwZlNHNHRKZ0U0d3NzZFJHSU9mZUtCWkdOSzRJYllLUHFaeFJ6cndITXBnQUFBS2k1WkJhRnVXUVcKaFFBQUFBdHpjMmd0WldReU5UVXhPUUFBQUNBMGZTRzR0SmdFNHdzc2RSR0lPZmVLQlpTks0SWJZS1BxWnhSenJ3SE1wZwowQkFnTT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== ADDONS_GIT_REPOS: "git@github.com:Mint-System/Odoo-Apps-Server-Tools.git#16.0,git@github.com:OCA/server-tools.git#16.0" ODOO_ADDONS_PATH: /mnt/addons/,/mnt/oca/,/mnt/enterprise,/mnt/themes/ - ODOO_DATABASE: 16.0 - ODOO_INIT: True + ODOO_DATABASE: "16.0" + ODOO_INIT: "True" ODOO_INIT_LANG: de_CH ODOO_INIT_ADDONS: server_environment_ir_config_parameter ENVIRONMENT: production PYTHON_INSTALL: prometheus-client SERVER_WIDE_MODULES: session_db,module_change_auto_install SESSION_DB_URI: postgres://odoo:odoo@db/16.0 - PROXY_MODE: True + PROXY_MODE: "True" LOG_LEVEL: debug LIST_DB: False ADMIN_PASSWD: ***** @@ -78,7 +72,7 @@ services: LIMIT_TIME_CPU: 300 LIMIT_TIME_REAL: 600 MODULE_AUTO_INSTALL_DISABLED: odoo_test_xmlrunner - CLICK_ODOO_UPDATE: True + CLICK_ODOO_UPDATE: "True" ports: - "127.0.0.1:8069:8069" volumes: @@ -137,7 +131,7 @@ Load mail server configuration from environment vars. The entrypoint script can clone git repositories. * `GIT_SSH_PUBLIC_KEY` Public key for SSH connection. -* `GIT_SSH_PRIVATE_KEY` Private key for SSH connection. +* `GIT_SSH_PRIVATE_KEY` Base64 encoded private key for SSH connection. * `ADDONS_GIT_REPOS` Comma seperated list of git clone urls appended with `#` and branch name. ### Addons Path diff --git a/image/entrypoint.sh b/image/entrypoint.sh index 35821a4d..e111bb0f 100755 --- a/image/entrypoint.sh +++ b/image/entrypoint.sh @@ -20,10 +20,6 @@ source git-clone-addons source set-addons-path -GIT_SSH_PRIVATE_KEY=$(echo -e "$GIT_SSH_PRIVATE_KEY" | base64 -w0) -export GIT_SSH_PRIVATE_KEY -export GIT_SSH_PUBLIC_KEY - export ENVIRONMENT=${ENVIRONMENT:="development"} export SERVER_WIDE_MODULES=${SERVER_WIDE_MODULES:="web"} export PROXY_MODE=${PROXY_MODE:=False} diff --git a/image/odoo.conf.template b/image/odoo.conf.template index 8abfaea0..8e92f403 100644 --- a/image/odoo.conf.template +++ b/image/odoo.conf.template @@ -1,6 +1,6 @@ [options] data_dir = /var/lib/odoo -addons_path = $ODOO_ADDONS_PATH,$ADDONS_PATH +addons_path = $ADDONS_PATH environment = $ENVIRONMENT running_env = $ENVIRONMENT server_wide_modules = $SERVER_WIDE_MODULES diff --git a/image/scripts/auto-envsubst b/image/scripts/auto-envsubst index de3f94e5..8da07e94 100755 --- a/image/scripts/auto-envsubst +++ b/image/scripts/auto-envsubst @@ -4,6 +4,11 @@ TEMPLATE_FILE="${ODOO_ENVSUBST_TEMPLATE_FILE:-/etc/odoo/odoo.conf.template}" OUTPUT_FILE="${ODOO_ENVSUBST_OUTPUT_FILE:-/etc/odoo/odoo.conf}" FILTER="${ODOO_ENVSUBST_FILTER:-}" +if [ -n "$ODOO_ADDONS_PATH" ]; then + entrypoint-log "Addons path: $ODOO_ADDONS_PATH" + ADDONS_PATH=$(echo "${ODOO_ADDONS_PATH},${ADDONS_PATH}") +fi + DEFINED_ENVS=$(printf '${%s} ' $(awk "END { for (name in ENVIRON) { print ( name ~ /${FILTER}/ ) ? name : \"\" } }" < /dev/null )) if [[ -f "$TEMPLATE_FILE" ]]; then diff --git a/image/scripts/git-clone-addons b/image/scripts/git-clone-addons index 83aab5f8..ff98e6fd 100755 --- a/image/scripts/git-clone-addons +++ b/image/scripts/git-clone-addons @@ -7,10 +7,11 @@ if [ -n "$ADDONS_GIT_REPOS" ]; then entrypoint-log "Setup SSH key from env vars." mkdir -p ~/.ssh chmod 700 ~/.ssh - echo "$GIT_SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 + DECODED_GIT_SSH_PRIVATE_KEY=$(echo -e "$GIT_SSH_PRIVATE_KEY" | base64 -d) + echo "$DECODED_GIT_SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 eval "$(ssh-agent -s)" - ssh-add ~/.ssh/id_ed25519 || true + ssh-add ~/.ssh/id_ed25519 || (entrypoint-log "Dumping ~/.ssh/id_ed25519 content:" && cat ~/.ssh/id_ed25519) fi # Clone git repo addons into /var/lib/odoo/git diff --git a/task b/task index a90b1d64..63a5a008 100755 --- a/task +++ b/task @@ -159,7 +159,8 @@ ODOO_LANGUAGE=${ODOO_LANGUAGE:="de_CH"} ODOO_PORT=${ODOO_PORT:="8069"} POSTGRES_PORT=${POSTGRES_PORT:="5432"} LOG_LEVEL=${LOG_LEVEL:="info"} -CONTAINER_REGISTRY=${CONTAINER_REGISTRY:="docker.io/mintsystem/"} +CONTAINER_REGISTRY=${CONTAINER_REGISTRY:="docker.io/library/mintsystem/"} +DOCKER_REGISTRY=${DOCKER_REGISTRY:="mintsystem/"} CONTAINER_TAG=${CONTAINER_TAG:="odoo:${ODOO_REVISION}"} CONTAINER_CONFIG="$HOME/.docker/$CONTAINER_REGISTRY" BROWSER_OPEN=${BROWSER_OPEN:=true} @@ -639,7 +640,8 @@ function build() { --file "$MANIFEST_FILE" \ --build-arg ODOO_VERSION="$GIT_BRANCH" \ --build-arg ODOO_DATE="$ODOO_DATE" \ - --tag "${CONTAINER_REGISTRY}${CONTAINER_TAG}" + --tag "${CONTAINER_REGISTRY}${CONTAINER_TAG}" \ + --load fi } @@ -662,10 +664,10 @@ function publish() { echo "Tag container image ${CONTAINER_REGISTRY}${CONTAINER_TAG} with ${CONTAINER_REGISTRY}${LATEST_TAG}" $CONTAINER_ENGINE tag "${CONTAINER_REGISTRY}${CONTAINER_TAG}" "${CONTAINER_REGISTRY}${LATEST_TAG}" - echo "Push container image ${CONTAINER_REGISTRY}${CONTAINER_TAG}" if [ "$CONTAINER_ENGINE" == "docker" ]; then - docker --config "$CONTAINER_CONFIG" push "${CONTAINER_REGISTRY}${CONTAINER_TAG}" - docker --config "$CONTAINER_CONFIG" push "${CONTAINER_REGISTRY}${LATEST_TAG}" + echo "Push container image to ${DOCKER_REGISTRY}${CONTAINER_TAG}" + docker --config "$CONTAINER_CONFIG" push "${DOCKER_REGISTRY}${CONTAINER_TAG}" + docker --config "$CONTAINER_CONFIG" push "${DOCKER_REGISTRY}${LATEST_TAG}" fi } @@ -933,8 +935,7 @@ function test-container() { if [ ! -f "tmp/ed25519" ]; then ssh-keygen -t ed25519 -C admin@example.com -f tmp/ed25519 -N "" fi - GIT_SSH_PRIVATE_KEY=$(cat tmp/ed25519) - export GIT_SSH_PRIVATE_KEY + GIT_SSH_PRIVATE_KEY=$(cat tmp/ed25519 | base64 -w0) GIT_SSH_PUBLIC_KEY=$(cat tmp/ed25519.pub) fi @@ -942,7 +943,7 @@ function test-container() { git submodule update --init oca/partner-contact echo "Start container environment." - export CONTAINER_REGISTRY=docker.io/library/mintsystem/ + export GIT_SSH_PRIVATE_KEY export GIT_SSH_PUBLIC_KEY export ADDONS_GIT_REPOS="https://github.com/OCA/server-env.git#${GIT_BRANCH},https://github.com/OCA/server-tools.git#${GIT_BRANCH},https://github.com/Mint-System/Odoo-Apps-Server-Tools.git#${GIT_BRANCH},https://github.com/Mint-System/Odoo-Apps-Connector.git#${GIT_BRANCH}" export ODOO_ADDONS_PATH="/mnt/enterprise,/mnt/oca"