From 952552302a4c519f1df59cf68a11833c7c569a43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20Monta=C3=B1es=20Ojados?= Date: Sat, 17 Jan 2026 02:15:39 +0100 Subject: [PATCH] ci: add Linux and Windows build workflow for Gitea Actions --- .gitea/workflows/build-linux.yml | 36 +++++++++++++++++++++++++++ .gitea/workflows/build-windows.yml | 40 ++++++++++++++++++++++++++++++ readme.md | 22 ++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 .gitea/workflows/build-linux.yml create mode 100644 .gitea/workflows/build-windows.yml diff --git a/.gitea/workflows/build-linux.yml b/.gitea/workflows/build-linux.yml new file mode 100644 index 0000000..ce058fc --- /dev/null +++ b/.gitea/workflows/build-linux.yml @@ -0,0 +1,36 @@ +name: Build Linux +on: [push] + +jobs: + build-linux: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '1.21' + + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + libportaudio2 \ + portaudio19-dev \ + libopus-dev \ + libpulse-dev \ + pkg-config \ + gcc + + - name: Build TUI + run: | + export CGO_ENABLED=1 + go build -o dist/tui_linux ./cmd/tui + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: tui-linux-binary + path: dist/tui_linux diff --git a/.gitea/workflows/build-windows.yml b/.gitea/workflows/build-windows.yml new file mode 100644 index 0000000..fa95f13 --- /dev/null +++ b/.gitea/workflows/build-windows.yml @@ -0,0 +1,40 @@ +name: Build Windows +on: [push] + +jobs: + build-windows: + runs-on: windows-latest + defaults: + run: + shell: msys2 {0} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '1.21' # Adjust to your version + + - name: Setup MSYS2 + uses: msys2/setup-msys2@v2 + with: + msystem: MINGW64 + update: true + install: >- + mingw-w64-x86_64-gcc + mingw-w64-x86_64-opus + mingw-w64-x86_64-portaudio + pkg-config + + - name: Build TUI + run: | + # Ensure Go can find the C libraries via pkg-config + export CGO_ENABLED=1 + go build -o dist/tui_windows.exe ./cmd/tui + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: tui-windows-binary + path: dist/tui_windows.exe diff --git a/readme.md b/readme.md index 8119452..53c153d 100644 --- a/readme.md +++ b/readme.md @@ -73,3 +73,25 @@ This project uses Go **build tags** to support multiple platforms from the same ### Pro Tip: VS Code Remote - WSL For the best experience when working on Linux features from Windows, use the **WSL extension**. Open VS Code inside your WSL environment (`code .` from the WSL terminal). This allows `gopls` to run directly in Linux, where all system headers and libraries are natively available. + +## 🤖 Gitea Actions (CI/CD) + +El archivo `.gitea/workflows/build-windows.yml` automatiza la compilación en cada push. + +### Cómo usar tu propio Windows como Runner + +Si tu Gitea no tiene runners públicos, puedes convertir tu propia máquina Windows en uno: + +1. **Descarga `act_runner`**: Descarga el binario oficial de [Gitea Actions Runner](https://gitea.com/gitea/act_runner/releases). +2. **Registro**: + - Ve a tu instancia de Gitea -> Administración del Sitio -> Actions -> Runners. + - Copia el **Registration Token**. + - Ejecuta: `./act_runner register` + - Introduce la URL de tu Gitea y el token. + - En **labels**, asegúrate de poner `windows-latest:host`. +3. **Ejecución**: + - Lanza el runner: `./act_runner daemon`. + - Ahora, cualquier push lanzará la build en tu PC de forma automática. + +> [!TIP] +> El workflow usa **MSYS2** automáticamente para instalar `opus` y `portaudio` en el entorno temporal de la build, así que no necesitas configurar nada extra en el sistema del runner.