The docker-builder container runs ash/sh, not bash — arrays with () are not supported. Use a simple for-in loop instead. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
47 lines
1.6 KiB
YAML
47 lines
1.6 KiB
YAML
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
|
|
printf '%s\n' "${{ secrets.PRIVATE_SSH_KEY }}" > ~/.ssh/deploy_key
|
|
chmod 600 ~/.ssh/deploy_key
|
|
|
|
- name: Sync images to server
|
|
run: |
|
|
for IMAGE in \
|
|
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
|
|
do
|
|
echo "::group::Syncing $IMAGE"
|
|
docker pull "$IMAGE"
|
|
docker save "$IMAGE" | ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=accept-new -p 22 root@${{ secrets.APP_HOST }} "docker load"
|
|
echo "::endgroup::"
|
|
done
|