Files
Odoo-Build/image/bin/git-clone-addons
T

62 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
if [ -n "$ADDONS_GIT_REPOS" ]; then
# Setup git ssh key
mkdir -p ~/.ssh
chmod 700 ~/.ssh
if [ -n "$GIT_SSH_PRIVATE_KEY" ]; then
entrypoint-log "Setup SSH key from env vars."
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 || (entrypoint-log "Dumping ~/.ssh/id_ed25519 content:" && cat ~/.ssh/id_ed25519)
fi
# Clone git repo addons into /var/lib/odoo/git
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
# 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
GIT_URL=$(echo "$ADDON_GIT_REPO" | cut -d# -f1)
GIT_BRANCH=$(echo "$ADDON_GIT_REPO" | cut -d# -f2)
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"
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"
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"
else
entrypoint-log "Update $GIT_URL branch $GIT_BRANCH."
git -C "$GIT_LOCAL_PATH" switch "$GIT_BRANCH"
git -C "$GIT_LOCAL_PATH" pull
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
fi
done
# Remove git ssh key
if [ -n "$GIT_SSH_PRIVATE_KEY" ]; then
ssh-add -d ~/.ssh/id_ed25519
rm ~/.ssh/id_ed25519
fi
fi