name: Deploy GKACHELE App on: push: branches: - feature/docker-setup # Activa el workflow al hacer push a esta rama para pruebas iniciales workflow_dispatch: # Permite ejecutar el workflow manualmente desde la interfaz de Gitea jobs: deploy: runs-on: [linux, arm64] # Usaremos tu Raspberry Pi como runner auto-alojado steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Docker BuildX uses: docker/setup-buildx-action@v2 - name: Login to Docker Hub (o tu registro Gitea) uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} # Tu usuario de Docker Hub o Gitea password: ${{ secrets.DOCKER_PASSWORD }} # Tu token/contraseña de Docker Hub o Gitea # Si usas el registro de Gitea, necesitarías ajustar 'registry' en esta acción - name: Build and Push Docker image uses: docker/build-push-action@v4 with: context: ./demo # Ruta al Dockerfile de tu aplicación Flask push: true tags: ${{ secrets.DOCKER_USERNAME }}/gkachele-app:latest # Formato: tu_usuario_docker/nombre_imagen:tag # Si usas el registro de Gitea, el tag sería algo como: ${{ secrets.GITEA_REGISTRY_URL }}/owner/gkachele-app:latest - name: Deploy to Raspberry Pi via SSH uses: appleboy/ssh-action@master with: host: ${{ secrets.SSH_HOST }} # IP o hostname de tu Raspberry Pi port: ${{ secrets.SSH_PORT }} # Puerto SSH, que es 2222 username: ${{ secrets.SSH_USERNAME }} # Usuario SSH en tu Raspberry Pi (e.g., 'pi') key: ${{ secrets.SSH_PRIVATE_KEY }} # Clave SSH privada (sin passphrase) para autenticación sin contraseña script: | echo "Iniciando despliegue de la app GKACHELE™ en Raspberry Pi..." # Autenticarse en el registro Docker (necesario para 'docker pull' si la imagen es privada o de Docker Hub) # Asegúrate de que el user/pass sea el mismo que el del 'Login to Docker Hub' step docker login -u "${{ secrets.DOCKER_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}" # Descargar la última imagen docker pull ${{ secrets.DOCKER_USERNAME }}/gkachele-app:latest # Reemplaza con tu usuario/repositorio # Detener y eliminar el contenedor existente (si hay uno con el mismo nombre) docker stop gkachele-instance || true docker rm gkachele-instance || true # Iniciar un nuevo contenedor # Nota: Esto es una ejecución manual. Posteriormente, lo haremos con 'docker-compose up -d' # una vez que tengamos el docker-compose.yml específico para la Pi. docker run -d -p 5001:5001 --name gkachele-instance ${{ secrets.DOCKER_USERNAME }}/gkachele-app:latest echo "Despliegue de GKACHELE™ en Raspberry Pi completado."