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