GitHub Actions para pruebas Go con vendor
Clase 8 de 30 • Curso de Ciberseguridad para Desarrollo Web
Contenido del curso
Funciona en mi local
Introducción a DevSecOps
Seguridad en la arquitectura
- 11

Arquitectura AWS para métricas de Git
02:24 min - 12

Configuración de AWS CLI para Terraform
09:34 min - 13

Terraform IAM: roles y policies automáticos
17:44 min - 14

Modificando main.tf para enlazar módulos IAM en Terraform
06:02 min - 15

Bucket S3 para Lambdas con Terraform
16:44 min - 16

Configuración de Postgres RDS con VPC y seguridad
14:10 min - 17

Configurando VPC para AWS Lambda con Terraform
12:29 min - 18

Cómo configurar API Gateway para Lambdas
05:42 min
Evitando vulnerabilidades en el código
- 19

Configuración completa de Auth0 para tokens
07:14 min - 20

Authorizer Lambda con Auth0 y JWT
16:56 min - 21

Conecta Go a Postgres usando AWS Secrets
13:35 min - 22

Conexión segura de Lambdas a Secrets con VPC
11:27 min - 23

Validación de webhooks desde GitHub con user-agent
12:08 min - 24

Cómo validar integridad de webhooks con HMAC
14:32 min
Controles de seguridad sobre datos
Monitoring y alertas
CORS y cierre
Configurar GitHub Actions para correr pruebas automáticas en Go es más simple de lo que parece. Aquí verás, paso a paso, cómo preparar dependencias con vendor, crear una prueba dummy con testify/require y escribir un workflow en YAML que se ejecute en cada push. Sin atajos, solo lo esencial para que funcione bien.
¿Cómo preparar dependencias de Go con vendor y go mod?
Antes de automatizar, es clave tener las dependencias limpias. Cuando cambias de rama o dejas de usar una librería, el módulo puede aparecer en rojo por inconsistencias. La corrección es directa: sincronizar y compilar.
- Ejecuta "go mod vendor" para actualizar dependencias en el vendor.
- Luego corre "go mod build" para validar la compilación.
- Verás desaparecer el warning y todo quedará sincronizado.
- El directorio vendor no se versiona: se agrega a .gitignore.
Comandos útiles:
go mod vendor go mod build
Conceptos clave que aplicas:
- vendor: carpeta con dependencias locales usadas por el proyecto.
- .gitignore: evita subir vendor al repositorio.
- módulos de Go: gestionan librerías y sus versiones.
¿Cómo crear una prueba dummy en Go con testify/require?
Para validar el pipeline, basta una prueba sencilla. Se crea un archivo de prueba estándar y se usa el submódulo require de testify para aserciones claras.
- Crea el archivo de prueba "main test" con
package main. - Agrega la dependencia con "go get" de testify y el submódulo require.
- Importa require y sincroniza con "go mod vendor".
- Usa
require.Newpara crear el contexto de aserciones. - Define una variable
resulty valida su valor esperado. - Corre localmente con "go test" para comprobar que pasa.
Puntos a tener en cuenta:
- Las pruebas en Go deben iniciar con "Test" para que el testing las detecte.
go testcorre desde la terminal como lo haría GitHub Actions.
¿Cómo escribir un workflow de GitHub Actions en YAML para correr go test?
La automatización replica lo que ya haces a mano. Se crea la carpeta oculta .github/workflows, se define un archivo YAML y se especifican eventos, jobs y steps.
¿Qué dispara el workflow y dónde corre?
- Evento: on: push para ejecutarlo en cada push.
- Ramas: branches: "*" para todas las ramas.
- Sistema operativo: Ubuntu 22.04 con
runs-on.
¿Qué pasos ejecuta el pipeline?
- checkout code: usa actions/checkout para traer el código.
- setup go: usa actions/setup-go y fija la versión 1.18.
- install dependencies: corre "go mod vendor" en el working directory del proyecto (carpeta "GitHub tracker").
- check unit test: ejecuta "go test ./..." sobre todos los folders.
- continue on error: desactivado; si las pruebas fallan, no continúa.
Ejemplo de estructura en YAML basada en los pasos descritos:
name: test workflow on: push: branches: - "*" jobs: code validation: runs-on: ubuntu-22.04 steps: - name: checkout code uses: actions/checkout@v4 - name: setup go uses: actions/setup-go@v4 with: go-version: "1.18" - name: install dependencies working-directory: "GitHub tracker" run: go mod vendor - name: check unit test working-directory: "GitHub tracker" run: go test ./... continue-on-error: false
Buenas prácticas que se aplican en el archivo YAML:
- Mantener la identación correcta para evitar errores de sintaxis.
- Ubicar steps justo debajo de runs-on dentro del job.
- Nombrar cada paso con name para facilitar el seguimiento.
¿Quieres que sigamos afinando el pipeline o agregamos más pruebas con require? Cuéntame en los comentarios qué parte te gustaría profundizar.