diff --git a/images/odoo/bin/git-clone-addons b/images/odoo/bin/git-clone-addons index 1d2c097b..7256ea21 100755 --- a/images/odoo/bin/git-clone-addons +++ b/images/odoo/bin/git-clone-addons @@ -1,6 +1,8 @@ #!/bin/bash if [ -n "$ADDONS_GIT_REPOS" ]; then + LOCAL_PATH="${LOCAL_PATH:="/var/lib/odoo/git"}" + GIT_CLONE_DEPTH="${GIT_CLONE_DEPTH:="999"}" # Setup git ssh key mkdir -p ~/.ssh @@ -17,7 +19,7 @@ if [ -n "$ADDONS_GIT_REPOS" ]; then # Make every git directory a safe directory git config --global --add safe.directory "*" - # Clone git repo addons into /var/lib/odoo/git + # Clone git repo addons into local path entrypoint-log "Cloning git repos: $ADDONS_GIT_REPOS" ADDONS_GIT_REPOS=$(echo "$ADDONS_GIT_REPOS" | tr "," "\n") for ADDON_GIT_REPO in $ADDONS_GIT_REPOS; do @@ -25,35 +27,44 @@ if [ -n "$ADDONS_GIT_REPOS" ]; then # Supported urls: # ADDON_GIT_REPO=git@github.com:OCA/server-tools.git#16.0 # ADDON_GIT_REPO=https://github.com/OCA/server-tools.git#16.0 + # ADDON_GIT_REPO=https://github.com/OCA/server-tools.git#18.0#8c5ea468176e8b960a0ae0a52128fc65e985e8a7 GIT_URL=$(echo "$ADDON_GIT_REPO" | cut -d# -f1) GIT_BRANCH=$(echo "$ADDON_GIT_REPO" | cut -d# -f2) + GIT_COMMIT=$(echo "$ADDON_GIT_REPO" | cut -d# -f3) GIT_HOSTNAME=$(parse-url "$GIT_URL" hostname) GIT_PROTO=$(parse-url "$GIT_URL" proto) GIT_PATH=$(parse-url "$GIT_URL" path | sed 's/.git//g') - GIT_LOCAL_PATH="/var/lib/odoo/git/${GIT_HOSTNAME}/$GIT_PATH" + GIT_LOCAL_PATH="$LOCAL_PATH/${GIT_HOSTNAME}/$GIT_PATH" ssh-keyscan -t rsa,dsa "$GIT_HOSTNAME" > ~/.ssh/known_hosts 2>/dev/null if [ ! -d "$GIT_LOCAL_PATH/.git" ]; then + # Clone git repo and submodules mkdir -p "$GIT_LOCAL_PATH" + # Add GitHub personal access token if [ "${GIT_PROTO}${GIT_HOSTNAME}" = "https://github.com" ] && [ -n "$GITHUB_USERNAME" ]; then GIT_URL="${GIT_PROTO}${GITHUB_USERNAME}:${GITHUB_PERSONAL_ACCESS_TOKEN}@${GIT_HOSTNAME}/${GIT_PATH}.git" fi entrypoint-log "Clone ${GIT_PROTO}${GIT_HOSTNAME} branch $GIT_BRANCH." - git clone "$GIT_URL" --depth 1 --single-branch --branch "$GIT_BRANCH" "$GIT_LOCAL_PATH" + git clone --depth "$GIT_CLONE_DEPTH" --single-branch --branch "$GIT_BRANCH" "$GIT_URL" "$GIT_LOCAL_PATH" else - entrypoint-log "Update $GIT_URL branch $GIT_BRANCH." + entrypoint-log "Pull $GIT_BRANCH branch in $GIT_LOCAL_PATH." git -C "$GIT_LOCAL_PATH" switch "$GIT_BRANCH" git -C "$GIT_LOCAL_PATH" pull fi + if [ -n "$GIT_COMMIT" ];then + entrypoint-log "Checkout $GIT_COMMIT commit in $GIT_LOCAL_PATH." + git -C "$GIT_LOCAL_PATH" checkout "$GIT_COMMIT" + fi + if [ -f "$GIT_LOCAL_PATH/.gitmodules" ]; then entrypoint-log "Init and update git submodules in $GIT_LOCAL_PATH." - git -C "$GIT_LOCAL_PATH" submodule update --init --recursive --depth 1 + git -C "$GIT_LOCAL_PATH" submodule update --init --recursive --depth "$GIT_CLONE_DEPTH" fi done diff --git a/images/odoo/bin/odoo-update b/images/odoo/bin/odoo-update index db4511b4..0c8f50c7 100755 --- a/images/odoo/bin/odoo-update +++ b/images/odoo/bin/odoo-update @@ -1,7 +1,7 @@ #!/bin/bash if [ -n "$ODOO_DATABASE" ]; then - : "${CLICK_ODOO_UPDATE:=False}" + CLICK_ODOO_UPDATE="${CLICK_ODOO_UPDATE:=False}" if [ "$CLICK_ODOO_UPDATE" = True ] && [ -n "$ODOO_ADDONS_PATH" ]; then entrypoint-log "Run click-odoo-update." diff --git a/task b/task index bb54c940..abe9d132 100755 --- a/task +++ b/task @@ -750,14 +750,18 @@ function test-image() { CONTAINER_TAG="odoo-upgrade" fi - echo "Test container image ${CONTAINER_REGISTRY}${CONTAINER_TAG}" - if [[ "$CONTAINER_TAG" =~ ^odoo: ]]; then - echo -e "\033[38;5;214mTEST\033[0m: Start Odoo container." - BROWSER_OPEN=false - - start db,odoo - run odoo init-db + echo -e "\033[38;5;214mTEST\033[0m: Run git clone addons" + prepare-ssh-keys + export GIT_SSH_PRIVATE_KEY + export GIT_SSH_PUBLIC_KEY + export LOCAL_PATH="./tmp" + SERVER_TOOLS_GIT_REF=$(curl -s "https://api.github.com/repos/OCA/server-tools/branches/$ODOO_VERSION" | grep '"sha":' | head -n 1 | awk -F '"' '{print $4}') + export ADDONS_GIT_REPOS="https://github.com/OCA/server-tools.git#${ODOO_VERSION}#${SERVER_TOOLS_GIT_REF}" + mkdir -p "$LOCAL_PATH" + export PATH=./images/odoo/bin/:$PATH + ./images/odoo/bin/git-clone-addons + rm -rf "$LOCAL_PATH/github.com" fi if [[ "$CONTAINER_TAG" =~ ^odoo-upgrade: ]]; then @@ -1112,6 +1116,18 @@ function stop() { $COMPOSE_COMMAND stop "$1" } +function prepare-ssh-keys() { + if [ -z "$GIT_SSH_PRIVATE_KEY" ]; then + echo "PREPARE: Generate SSH private key." + mkdir -p tmp + 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 | base64 -w0) + GIT_SSH_PUBLIC_KEY=$(cat tmp/ed25519.pub) + fi +} + function test-project() { if [ "$1" = "clean" ]; then echo -e "\033[38;5;214mTEST\033[0m: Cleanup test environment." @@ -1125,16 +1141,6 @@ function test-project() { info set -e - if [ -z "$GIT_SSH_PRIVATE_KEY" ]; then - echo "PREPARE: Generate SSH private key." - mkdir -p tmp - 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 | base64 -w0) - GIT_SSH_PUBLIC_KEY=$(cat tmp/ed25519.pub) - fi - echo -e "\033[38;5;214mTEST\033[0m: Clone module repo with https" (git clone -b "$ODOO_VERSION" https://github.com/OCA/partner-contact.git oca/partner-contact) || true @@ -1143,10 +1149,10 @@ function test-project() { start db,mail echo -e "\033[38;5;214mTEST\033[0m: Clone Odoo addons." + prepare-ssh-keys export GIT_SSH_PRIVATE_KEY export GIT_SSH_PUBLIC_KEY - SERVER_ENV_GIT_REF=$(curl -s "https://api.github.com/repos/OCA/server-env/branches/$ODOO_VERSION" | grep '"sha":' | head -n 1 | awk -F '"' '{print $4}') - export ADDONS_GIT_REPOS="https://github.com/OCA/server-env.git#${SERVER_ENV_GIT_REF},https://github.com/OCA/server-tools.git#${ODOO_VERSION},https://github.com/Mint-System/Odoo-Apps-Server-Tools.git#${ODOO_VERSION},https://github.com/Mint-System/Odoo-Apps-Connector.git#${ODOO_VERSION}" + export ADDONS_GIT_REPOS="https://github.com/OCA/server-env.git#${ODOO_VERSION},https://github.com/OCA/server-tools.git#${ODOO_VERSION},https://github.com/Mint-System/Odoo-Apps-Server-Tools.git#${ODOO_VERSION},https://github.com/Mint-System/Odoo-Apps-Connector.git#${ODOO_VERSION}" run odoo git-clone-addons echo -e "\033[38;5;214mTEST\033[0m: Init Odoo database." @@ -2338,7 +2344,7 @@ function show-revision() { ODOO_REVISION="$1" fi - echo "Odoo revision: $ODOO_REVISION" + echo "Odoo Revision: $ODOO_REVISION" source "revisions/$ODOO_REVISION" echo "Odoo Ref: $ODOO_REF"