ci: use catthehacker/ubuntu:act-22.04 image with preinstalled tools

- Runner now uses act-compatible Ubuntu image
- SSH and curl preinstalled, no need to install packages
- Simplified workflow steps
- All heavy work done via SSH on K3s server
This commit is contained in:
Andrés Eduardo García Márquez 2026-01-09 07:55:13 -05:00
parent e2fdea8f9e
commit 1f4bec9136
1 changed files with 4 additions and 16 deletions

View File

@ -8,11 +8,9 @@ on:
env: env:
K3S_HOST: "100.67.198.92" K3S_HOST: "100.67.198.92"
K3S_USER: "andres" K3S_USER: "andres"
NAMESPACE: "academia"
DOMAIN: "academia.ingeniumcodex.com" DOMAIN: "academia.ingeniumcodex.com"
jobs: jobs:
# Job: Build, Test y Deploy via SSH (no necesita checkout local)
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -23,7 +21,7 @@ jobs:
chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ env.K3S_HOST }} >> ~/.ssh/known_hosts 2>/dev/null ssh-keyscan -H ${{ env.K3S_HOST }} >> ~/.ssh/known_hosts 2>/dev/null
- name: Build, Test & Deploy on K3s - name: Deploy to K3s
run: | run: |
ssh ${{ env.K3S_USER }}@${{ env.K3S_HOST }} 'bash -s' << 'ENDSSH' ssh ${{ env.K3S_USER }}@${{ env.K3S_HOST }} 'bash -s' << 'ENDSSH'
set -e set -e
@ -60,43 +58,33 @@ jobs:
echo "=== Deploy complete ===" echo "=== Deploy complete ==="
ENDSSH ENDSSH
# Smoke Tests
smoke-tests: smoke-tests:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: deploy needs: deploy
steps: steps:
- name: Wait for services - name: Wait and Verify
run: sleep 15
- name: Verify Production
run: | run: |
sleep 15
echo "Checking health..." echo "Checking health..."
curl -sf https://${{ env.DOMAIN }}/health | grep -q '"status":"Healthy"' curl -sf https://${{ env.DOMAIN }}/health | grep -q '"status":"Healthy"'
echo "Checking frontend..." echo "Checking frontend..."
curl -sf https://${{ env.DOMAIN }}/ | grep -q 'Sistema de Estudiantes' curl -sf https://${{ env.DOMAIN }}/ | grep -q 'Sistema de Estudiantes'
echo "Checking GraphQL..." echo "Checking GraphQL..."
curl -sf -X POST https://${{ env.DOMAIN }}/graphql \ curl -sf -X POST https://${{ env.DOMAIN }}/graphql \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"query":"{ subjects { id } }"}' | grep -q '"subjects"' -d '{"query":"{ subjects { id } }"}' | grep -q '"subjects"'
echo "All checks passed!" echo "All checks passed!"
# Rollback on failure
rollback: rollback:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: smoke-tests needs: smoke-tests
if: failure() if: failure()
steps: steps:
- name: Setup SSH - name: Setup SSH and Rollback
run: | run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
echo "${{ secrets.K3S_SSH_KEY }}" > ~/.ssh/id_rsa echo "${{ secrets.K3S_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ env.K3S_HOST }} >> ~/.ssh/known_hosts 2>/dev/null ssh-keyscan -H ${{ env.K3S_HOST }} >> ~/.ssh/known_hosts 2>/dev/null
- name: Rollback
run: |
ssh ${{ env.K3S_USER }}@${{ env.K3S_HOST }} \ ssh ${{ env.K3S_USER }}@${{ env.K3S_HOST }} \
'sudo kubectl rollout undo deployment/student-api deployment/student-frontend -n academia' 'sudo kubectl rollout undo deployment/student-api deployment/student-frontend -n academia'