feat(test): git clone addons

This commit is contained in:
Janik von Rotz committed 2025-04-16 17:36:32 +02:00
1 parent d0a790e964
commit 32859622ac
3 files changed
+43 -26

No files matched your search

+16 -5
View File
@@ -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
+1 -1
View File
@@ -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."
+26 -20
View File
@@ -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"