# CI: при пуше в main заходим на сервер по ssh, делаем git pull и перезапускаем API счётчика # (счётчик лежит в /var/lib/vizitka-site вне репозитория и при этом не сбрасывается). # Всё остальное уже настроено на сервере (nginx раздаёт /opt/vizitka-site/web, см. deploy/setup-server.sh). # Нужен один секрет: DEPLOY_SSH_KEY (приватный ключ с доступом к серверу). name: deploy on: push: branches: [main] workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: Подключение к серверу и git pull env: DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} run: | command -v ssh >/dev/null || { apt-get update -qq && apt-get install -y -qq openssh-client; } umask 077 install -d "$HOME/.ssh" printf '%s\n' "$DEPLOY_SSH_KEY" > "$HOME/.ssh/id_deploy" # отпечаток ключа сервера закреплён: подмена сервера не пройдёт echo "192.168.10.112 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFLwAGOvgF5ZSBiZ9YRe78gT9HN1MeESQIaM6Aou/Ud" > "$HOME/.ssh/known_hosts" ssh -i "$HOME/.ssh/id_deploy" -o IdentitiesOnly=yes -o BatchMode=yes -o StrictHostKeyChecking=yes \ root@192.168.10.112 'cd /opt/vizitka-site && git pull --ff-only && { systemctl restart vizitka-api || echo "сервис vizitka-api пока не настроен (deploy/setup-server.sh)"; } && git log -1 --oneline'