feat(test): git clone addons
This commit is contained in:
3 files changed
+43
-26
No files matched your search
@@ -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,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."
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user