erpnext/scripts/ci/jenkins-push-image.sh
epistemophiliac 4126cbf737 Load ERPNext image internally on Coolify deploy via Skopeo.
Add image-preload init service on Forgejo Docker network, default PULL_POLICY never, and preload host docker after Jenkins push.
2026-06-16 20:58:32 -04:00

54 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# shellcheck source=/dev/null
source .ci-bin/ci-env.sh
REGISTRY_IMAGE="${REGISTRY_IMAGE:-git.aexoradao.com/epistemophiliac/erpnext}"
REGISTRY_HOST="${REGISTRY_HOST:-git.aexoradao.com}"
FORGEJO_HOST="${FORGEJO_HOST:-forgejo-vydgeq365afzmxe4s1d75fwv}"
FORGEJO_NETWORK="${FORGEJO_NETWORK:-vydgeq365afzmxe4s1d75fwv}"
GIT_SHA="$(git rev-parse --short HEAD)"
IMAGE_TAG="${IMAGE_TAG:-main-${GIT_SHA}}"
if [ -z "${REGISTRY_USER:-}" ] || [ -z "${REGISTRY_PASSWORD:-}" ]; then
echo "ERROR: set REGISTRY_USER and REGISTRY_PASSWORD (Jenkins forgejo-erpnext credentials)"
exit 1
fi
push_with_skopeo() {
local ref="$1"
echo "Skopeo push ${ref} -> http://${FORGEJO_HOST}:3000 (internal, bypasses Cloudflare/Traefik)"
$DOCKER run --rm \
--network "${FORGEJO_NETWORK}" \
-v /var/run/docker.sock:/var/run/docker.sock \
quay.io/skopeo/stable:v1.17.0 \
copy "docker-daemon:${ref}" \
"docker://${FORGEJO_HOST}:3000/epistemophiliac/erpnext:${ref##*:}" \
--dest-creds "${REGISTRY_USER}:${REGISTRY_PASSWORD}" \
--dest-tls-verify=false \
--retry-times 3
}
push_with_skopeo "${REGISTRY_IMAGE}:${IMAGE_TAG}"
push_with_skopeo "${REGISTRY_IMAGE}:main"
preload_host_docker() {
local tag="${1##*:}"
echo "Preloading Coolify host docker: ${REGISTRY_IMAGE}:${tag}"
$DOCKER run --rm \
--network "${FORGEJO_NETWORK}" \
-v /var/run/docker.sock:/var/run/docker.sock \
quay.io/skopeo/stable:v1.17.0 \
copy \
"docker://${FORGEJO_HOST}:3000/epistemophiliac/erpnext:${tag}" \
"docker-daemon:${REGISTRY_IMAGE}:${tag}" \
--src-creds "${REGISTRY_USER}:${REGISTRY_PASSWORD}" \
--src-tls-verify=false \
--retry-times 3
}
preload_host_docker "${REGISTRY_IMAGE}:${IMAGE_TAG}"
preload_host_docker "${REGISTRY_IMAGE}:main"
echo "Pushed via internal Forgejo and preloaded on host docker"