From b53840b77bd7b00386c3ff9604fc1137bf6dc8c7 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Sat, 25 Apr 2026 00:28:39 +0200 Subject: [PATCH] ci: add manual workflow to sync Docker images to remote server Pulls all :latest images from the Gitea registry and pipes them via `docker save | ssh docker load` to the APP_HOST server. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitea/workflows/sync-images.yml | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .gitea/workflows/sync-images.yml diff --git a/.gitea/workflows/sync-images.yml b/.gitea/workflows/sync-images.yml new file mode 100644 index 0000000..ba57c7e --- /dev/null +++ b/.gitea/workflows/sync-images.yml @@ -0,0 +1,51 @@ +name: Sync Images to Server + +on: + workflow_dispatch: + +jobs: + sync: + runs-on: ubuntu-latest + container: + image: gitea.siegeln.net/cameleer/cameleer-docker-builder:1 + credentials: + username: cameleer + password: ${{ secrets.REGISTRY_TOKEN }} + steps: + - name: Install SSH client + run: | + if command -v apk >/dev/null 2>&1; then + apk add --no-cache openssh-client + elif command -v apt-get >/dev/null 2>&1; then + apt-get update && apt-get install -y openssh-client + fi + + - name: Login to Gitea registry + run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login gitea.siegeln.net -u cameleer --password-stdin + + - name: Set up SSH key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.PRIVATE_SSH_KEY }}" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + ssh-keyscan -p 22 "${{ secrets.APP_HOST }}" >> ~/.ssh/known_hosts 2>/dev/null + + - name: Sync images to server + run: | + SSH_CMD="ssh -i ~/.ssh/deploy_key -p 22 root@${{ secrets.APP_HOST }}" + + IMAGES=( + gitea.siegeln.net/cameleer/cameleer-saas:latest + gitea.siegeln.net/cameleer/cameleer-logto:latest + gitea.siegeln.net/cameleer/cameleer-traefik:latest + gitea.siegeln.net/cameleer/cameleer-postgres:latest + gitea.siegeln.net/cameleer/cameleer-clickhouse:latest + gitea.siegeln.net/cameleer/cameleer-runtime-base:latest + ) + + for IMAGE in "${IMAGES[@]}"; do + echo "::group::Syncing $IMAGE" + docker pull "$IMAGE" + docker save "$IMAGE" | $SSH_CMD "docker load" + echo "::endgroup::" + done