Merge pull request #78 from sxvan/feat/download-odoo-enterprise-ssh

feat(enterprise): support ssh transport for enterprise download
This commit is contained in:
Janik von Rotz authored and GitHub committed 2026-09-02 09:21:30 +02:00
commit e729c2b4f7
2 files changed
+49 -10

No files matched your search

+2 -1
View File
@@ -252,7 +252,7 @@ Run the `download-odoo-enterprise` script to download the [Odoo Enterprise modul
docker compose exec odoo download-odoo-enterprise
```
This script requires `GITHUB_USERNAME` and `GITHUB_PAT`. The image has a pre-defined `ODOO_ENTERPRISE_REF` and `ODOO_ENTERPRISE_PATH`.
This script downloads an archive with `GITHUB_USERNAME` and `GITHUB_PAT`. With a git url in `ODOO_ENTERPRISE_URL` it checks out a shallow git repo with `GIT_SSH_PRIVATE_KEY` instead. The image has a pre-defined `ODOO_ENTERPRISE_REF` and `ODOO_ENTERPRISE_PATH`.
### Init database
@@ -406,6 +406,7 @@ The image can clone git repositories.
- `FORGEJO_PAT`: Forgejo access token for https git clone and archive download.
- `ADDONS_GIT_REPOS`: Comma or line-break seperated list of git clone urls appended with `#` and branch name.
- `ODOO_ENTERPRISE_REF`: Commit ref of Odoo Enterprise repo. Default is based on the image revision date.
- `ODOO_ENTERPRISE_URL`: Url of the Odoo Enterprise repo. Default is `https://github.com/odoo/enterprise`. Use a git url like `git@github.com:odoo/enterprise` to download with SSH.
You can use https and git urls for `ADDONS_GIT_REPOS`:
+47 -9
View File
@@ -1,14 +1,14 @@
#!/usr/bin/env bash
set -e
if [[ -z "$GITHUB_PAT" ]] || [[ -z "$GITHUB_USERNAME" ]]; then
log-entrypoint 'Error: GitHub personal access token or username is not set.'
exit 1
fi
odoo_enterprise_path="${ODOO_ENTERPRISE_PATH:="/var/lib/odoo/enterprise"}"
odoo_enterprise_url="${ODOO_ENTERPRISE_URL:="https://github.com/odoo/enterprise"}"
ref_file="$odoo_enterprise_path/.last_ref"
git_proto=$(parse-url "$odoo_enterprise_url" proto)
git_hostname=$(parse-url "$odoo_enterprise_url" hostname)
git_path=$(parse-url "$odoo_enterprise_url" path | sed 's/.git//g')
mkdir -p "$odoo_enterprise_path"
last_ref=""
if [[ -f "$ref_file" ]]; then
@@ -17,10 +17,48 @@ fi
if [[ -z "$last_ref" ]] || [[ "$last_ref" != "$ODOO_ENTERPRISE_REF" ]]; then
log-entrypoint "Downloading Odoo Enterprise $ODOO_ENTERPRISE_REF to ${odoo_enterprise_path}..."
curl -L -o "$odoo_enterprise_path/archive.tar.gz" \
"https://${GITHUB_USERNAME}:${GITHUB_PAT}@github.com/odoo/enterprise/archive/$ODOO_ENTERPRISE_REF.tar.gz"
tar -xzf "$odoo_enterprise_path/archive.tar.gz" --strip-components=1 -C "$odoo_enterprise_path"
rm "$odoo_enterprise_path/archive.tar.gz"
if [[ "$git_proto" = "https://" ]]; then
if [[ -z "$GITHUB_PAT" ]] || [[ -z "$GITHUB_USERNAME" ]]; then
log-entrypoint 'Error: GitHub personal access token or username is not set.'
exit 1
fi
curl -fL -o "$odoo_enterprise_path/archive.tar.gz" \
"${git_proto}${GITHUB_USERNAME}:${GITHUB_PAT}@${git_hostname}/${git_path}/archive/$ODOO_ENTERPRISE_REF.tar.gz"
tar -xzf "$odoo_enterprise_path/archive.tar.gz" --strip-components=1 -C "$odoo_enterprise_path"
rm "$odoo_enterprise_path/archive.tar.gz"
elif [[ "$git_proto" = "ssh://" ]]; then
mkdir -p "$HOME/.ssh"
chmod 700 "$HOME/.ssh"
add-ssh-key
ssh-keyscan -t rsa,ed25519 "$git_hostname" >> "$HOME/.ssh/known_hosts" 2>/dev/null
if [[ ! -d "$odoo_enterprise_path/.git" ]]; then
find "$odoo_enterprise_path" -mindepth 1 -maxdepth 1 ! -name '.last_ref' -exec rm -rf {} +
log-entrypoint "Init ${odoo_enterprise_url} in $odoo_enterprise_path."
git -C "$odoo_enterprise_path" init -q
git -C "$odoo_enterprise_path" remote add origin "$odoo_enterprise_url"
fi
log-entrypoint "Fetch $ODOO_ENTERPRISE_REF commit in $odoo_enterprise_path."
git -C "$odoo_enterprise_path" fetch --depth 1 origin "$ODOO_ENTERPRISE_REF"
log-entrypoint "Checkout $ODOO_ENTERPRISE_REF commit in $odoo_enterprise_path."
git -C "$odoo_enterprise_path" checkout -q -f "$ODOO_ENTERPRISE_REF"
remove-ssh-key
else
log-entrypoint "Error: unsupported protocol '${git_proto}' in ODOO_ENTERPRISE_URL."
exit 1
fi
echo "$ODOO_ENTERPRISE_REF" > "$ref_file"
else
log-entrypoint "Odoo Enterprise $ODOO_ENTERPRISE_REF already downloaded. Skipping download."