diff --git a/.env.template b/.env.template index f1b520ea..11ae64c0 100644 --- a/.env.template +++ b/.env.template @@ -4,12 +4,10 @@ # CONTAINER_REGISTRY=mintsystem/ ODOO_REVISION=16.0.20250106 # ODOO_REVISION_CONTAINER_PULL=false -# GIT_SSH_PUBLIC_KEY: ssh-ed25519 BBBBC3NzaC1lZDI1NTE5BBBBIDR9Ibi0mATjCyx1EYg594oFkY0rghtgo+pnFHOvAcym -# GIT_SSH_PRIVATE_KEY="-----BEGIN OPENSSH PRIVATE KEY----- -# QyNTUxOQAAACCuoR1PvK081rwrC5hlSXM7Q24cPQOpSlymLefnPiihxQAAAJjEbzDGxG8w -# AAAEDx6kjL/1dmz7WZctryva7EphDT1rHyyfjxFiEPVnmrXq6hHU+8rTzWvCsLmGVJcztD -# bhw9A6lKXKYt5+c+KKHFAAAAEmJvdEBtaW50LXN5c3RlbS5jaAECAw== -# -----END OPENSSH PRIVATE KEY-----" +# GIT_SSH_PUBLIC_KEY=ssh-ed25519 BBBBC3NzaC1lZDI1NTE5BBBBIDR9Ibi0mATjCyx1EYg594oFkY0rghtgo+pnFHOvAcym Mint-System-Project-MCC@github.com +# GIT_SSH_PRIVATE_KEY=LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLQpiM0JsYm5OemFDMXJaWGt0ZGpFQUFBQUFCRzV2Ym1VQUFBQUVibTl1WlFBQUFBQUFBQUFCQUFBQU13QUFBQXR6YzJndFpXClF5TlRVeE9RQUFBQ0EwZlNHNHRKZ0U0d3NzZFJHSU9mZUtCWkdOSzRJYllLUHFaeFJ6cndITXBnQUFBS2k1WkJhRnVXUVcKaFFBQUFBdHpjMmd0WldReU5UVXhPUUFBQUNBMGZTRzR0SmdFNHdzc2RSR0lPZmVLQlpTks0SWJZS1BxWnhSenJ3SE1wZwowQkFnTT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== +# GITHUB_USERNAME=bot-mintsys +# GITHUB_PERSONAL_ACCESS_TOKEN= # ADDONS_GIT_REPOS="git@github.com:Mint-System/Odoo-Apps-Server-Tools.git#16.0,git@github.com:OCA/server-tools.git#16.0" # ODOO_ADDONS_PATH=thirdparty/odoo-apps-partner-contact,../odoo-cd/untracked-odoo-apps # ODOO_ADDONS_PATH=/mnt/addons/,/mnt/oca/,/mnt/enterprise,/mnt/themes/ @@ -19,8 +17,8 @@ ODOO_REVISION=16.0.20250106 # ODOO_PARAM="--without-demo=all" # SERVER_WIDE_MODULES=session_db,module_change_auto_install,mail_environment # SESSION_DB_URI=postgres://odoo:odoo@db/odoo -LOG_LEVEL=debug +# LOG_LEVEL=debug # LIST_DB=False -# ADMIN_PASSWD=oqua9AiHeibac2pie9ei +# ADMIN_PASSWD= # DBFILTER=^%d$ # MODULE_AUTO_INSTALL_DISABLED=odoo_test_xmlrunner \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 475a74ec..29ac4317 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. The format ### Added * Commands to update git submodules in batch `-status`, `-commit-all`, `-push`. +* Support `GITHUB_USERNAME` and `GITHUB_PERSONAL_ACCESS_TOKEN` in image. ### Updated diff --git a/docker-compose.yml.template b/docker-compose.yml.template index 0924501c..b79c9533 100644 --- a/docker-compose.yml.template +++ b/docker-compose.yml.template @@ -28,6 +28,8 @@ services: ODOO_MAIL_PASSWORD: ${ODOO_MAIL_PASSWORD} GIT_SSH_PUBLIC_KEY: ${GIT_SSH_PUBLIC_KEY} GIT_SSH_PRIVATE_KEY: ${GIT_SSH_PRIVATE_KEY} + GITHUB_USERNAME: ${GITHUB_USERNAME} + GITHUB_PERSONAL_ACCESS_TOKEN: ${GITHUB_PERSONAL_ACCESS_TOKEN} ADDONS_GIT_REPOS: ${ADDONS_GIT_REPOS} ODOO_ADDONS_PATH: ${ODOO_ADDONS_PATH} ODOO_DATABASE: "${ODOO_DATABASE}" diff --git a/image/README.md b/image/README.md index 08383d7d..b1b59e1f 100644 --- a/image/README.md +++ b/image/README.md @@ -54,6 +54,8 @@ services: ODOO_MAIL_PASSWORD: ***** GIT_SSH_PUBLIC_KEY: ssh-ed25519 BBBBC3NzaC1lZDI1NTE5BBBBIDR9Ibi0mATjCyx1EYg594oFkY0rghtgo+pnFHOvAcym Mint-System-Project-MCC@github.com GIT_SSH_PRIVATE_KEY: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLQpiM0JsYm5OemFDMXJaWGt0ZGpFQUFBQUFCRzV2Ym1VQUFBQUVibTl1WlFBQUFBQUFBQUFCQUFBQU13QUFBQXR6YzJndFpXClF5TlRVeE9RQUFBQ0EwZlNHNHRKZ0U0d3NzZFJHSU9mZUtCWkdOSzRJYllLUHFaeFJ6cndITXBnQUFBS2k1WkJhRnVXUVcKaFFBQUFBdHpjMmd0WldReU5UVXhPUUFBQUNBMGZTRzR0SmdFNHdzc2RSR0lPZmVLQlpTks0SWJZS1BxWnhSenJ3SE1wZwowQkFnTT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== + GITHUB_USERNAME: bot-mintsys + GITHUB_PERSONAL_ACCESS_TOKEN: ***** ADDONS_GIT_REPOS: "git@github.com:Mint-System/Odoo-Apps-Server-Tools.git#16.0,git@github.com:OCA/server-tools.git#16.0" ODOO_ADDONS_PATH: /mnt/addons/,/mnt/oca/,/mnt/enterprise,/mnt/themes/ ODOO_DATABASE: "16.0" @@ -194,6 +196,8 @@ The image can clone git repositories. * `GIT_SSH_PUBLIC_KEY` Public key for SSH connection. * `GIT_SSH_PRIVATE_KEY` Base64 encoded private key for SSH connection. +* `GITHUB_USERNAME` Username for git clone command with https. +* `GITHUB_PERSONAL_ACCESS_TOKEN` Token for git clone command with https. * `ADDONS_GIT_REPOS` Comma seperated list of git clone urls appended with `#` and branch name. ### Addons Path diff --git a/image/bin/git-clone-addons b/image/bin/git-clone-addons index e76d5d1b..a156f832 100755 --- a/image/bin/git-clone-addons +++ b/image/bin/git-clone-addons @@ -20,30 +20,36 @@ if [ -n "$ADDONS_GIT_REPOS" ]; then for ADDON_GIT_REPO in $ADDONS_GIT_REPOS; do # Supported urls: - # SSH: git@github.com:OCA/server-tools.git#16.0 - # HTTP: https://github.com/OCA/server-tools.git#16.0 + # 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_PATH="/var/lib/odoo/git/$GIT_HOSTNAME/$GIT_PATH" + GIT_LOCAL_PATH="/var/lib/odoo/git/${GIT_HOSTNAME}/$GIT_PATH" - if [ ! -d "$GIT_PATH/.git" ]; then + if [ ! -d "$GIT_LOCAL_PATH/.git" ]; then # Clone git repo and submodules - mkdir -p "$GIT_PATH" + mkdir -p "$GIT_LOCAL_PATH" ssh-keyscan -t rsa,dsa "$GIT_HOSTNAME" > ~/.ssh/known_hosts 2>/dev/null - entrypoint-log "Clone $GIT_URL branch $GIT_BRANCH." - git clone "$GIT_URL" --depth 1 --single-branch --branch "$GIT_BRANCH" "$GIT_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_PATH" switch "$GIT_BRANCH" - git -C "$GIT_PATH" pull + git -C "$GIT_LOCAL_PATH" switch "$GIT_BRANCH" + git -C "$GIT_LOCAL_PATH" pull fi - if [ -f "$GIT_PATH/.gitmodules" ]; then - entrypoint-log "Init and update git submodules in $GIT_PATH." - git -C "$GIT_PATH" submodule update --init --recursive --depth 1 + 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 diff --git a/image/bin/parse-url b/image/bin/parse-url index 4e8505d4..c649bf1f 100755 --- a/image/bin/parse-url +++ b/image/bin/parse-url @@ -10,7 +10,7 @@ Help() { echo echo "$SCRIPT" echo - echo "Description: Filter URL for segments." + echo "Description: Parse and output segements." echo "Syntax: $SCRIPT [url|proto|user|pass|hostname|subdomain|port|path]" echo "Example: $SCRIPT https://www.example.com subdomain,hostname" echo " $SCRIPT git@github.com:OCA/server-tools.git user,hostname,path" diff --git a/oca/oca-partner-contact b/oca/oca-partner-contact new file mode 160000 index 00000000..272c5fe0 --- /dev/null +++ b/oca/oca-partner-contact @@ -0,0 +1 @@ +Subproject commit 272c5fe0f2e9ebc2c698fcc82cdff08dcef65f72 diff --git a/task b/task index 396696b8..67d1528e 100755 --- a/task +++ b/task @@ -590,6 +590,8 @@ function template-docker-compose() { export ODOO_MAIL_PASSWORD export GIT_SSH_PUBLIC_KEY export GIT_SSH_PRIVATE_KEY + export GITHUB_USERNAME + export GITHUB_PERSONAL_ACCESS_TOKEN export ADDONS_GIT_REPOS export ODOO_ADDONS_PATH export ODOO_DATABASE