Add CI deployment to app LXC
Some checks failed
CI / check (push) Successful in 18s
CI / deploy (push) Failing after 34s

This commit is contained in:
kacper 2026-04-15 06:28:30 -04:00
parent 3d33a78f1f
commit 9049d367ea
6 changed files with 531 additions and 2 deletions

View file

@ -52,3 +52,72 @@ jobs:
export PATH="$HOME/.local/bin:$HOME/.bun/bin:$PATH"
cd robot-u-site
./scripts/check_frontend_quality.sh
deploy:
runs-on: docker
needs:
- check
if: ${{ github.event_name == 'push' }}
steps:
- name: Install deploy tooling
run: |
set -euo pipefail
if ! command -v rsync >/dev/null 2>&1; then
apt-get update
apt-get install -y rsync openssh-client
fi
- name: Install SSH keys
run: |
set -euo pipefail
mkdir -p ~/.ssh
printf '%s\n' "${{ secrets.CI_REPO_SSH_KEY }}" > ~/.ssh/robot_u_site_clone
printf '%s\n' "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/robot_u_site_deploy
chmod 600 ~/.ssh/robot_u_site_clone ~/.ssh/robot_u_site_deploy
ssh-keyscan aksal.cloud >> ~/.ssh/known_hosts
ssh-keyscan 192.168.1.220 >> ~/.ssh/known_hosts
cat > ~/.ssh/config <<'EOF'
Host aksal.cloud
IdentityFile ~/.ssh/robot_u_site_clone
IdentitiesOnly yes
Host robot-u-app
HostName 192.168.1.220
User root
IdentityFile ~/.ssh/robot_u_site_deploy
IdentitiesOnly yes
EOF
- name: Clone repository over SSH
run: |
set -euo pipefail
git clone --depth 1 git@aksal.cloud:Robot-U/robot-u-site.git robot-u-site
- name: Sync application files
run: |
set -euo pipefail
rsync -az --delete \
--exclude='.git/' \
--exclude='.venv/' \
--exclude='__pycache__/' \
--exclude='.pytest_cache/' \
--exclude='.ruff_cache/' \
--exclude='.env' \
--exclude='.env.*' \
--exclude='frontend/node_modules/' \
--exclude='frontend/dist/' \
--exclude='frontend/.vite/' \
--exclude='examples/quadrature-encoder-course/' \
robot-u-site/ robot-u-app:/opt/robot-u-site/
- name: Rebuild and restart app
run: |
set -euo pipefail
ssh robot-u-app '
set -euo pipefail
cd /opt/robot-u-site
./scripts/check_deploy_config.py
docker compose up --build -d
curl -fsS http://127.0.0.1:8800/health
'