Ir al contenido

GitHub Actions Pipeline

Automatiza la validacion y conciliacion de casos de prueba en cada Pull Request y despliegue a la rama principal.

  1. En Pull Requests: Ejecuta testform validate y testform plan. El resultado del plan se publica automaticamente como comentario en el PR para revision por pares.
  2. Al Fusionar en Main: Ejecuta testform apply -auto-approve para sincronizar los cambios aprobados en las plataformas de prueba remotas.

Archivo de Workflow (.github/workflows/testform.yml)

Sección titulada «Archivo de Workflow (.github/workflows/testform.yml)»
name: Testform CI/CD
on:
pull_request:
paths:
- 'tests/**'
- 'main.yml'
push:
branches:
- main
paths:
- 'tests/**'
- 'main.yml'
jobs:
testform:
name: Testform Plan & Apply
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout del Repositorio
uses: actions/checkout@v4
- name: Configurar Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Instalar Dependencias
run: npm ci
- name: Validar Sintaxis y Politicas
run: npx testform validate
- name: Generar Plan de Ejecucion (Pull Request)
if: github.event_name == 'pull_request'
id: plan
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
npx testform plan -no-color > plan.txt
echo "PLAN<<EOF" >> $GITHUB_ENV
cat plan.txt >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Comentar Plan en Pull Request
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const planOutput = process.env.PLAN;
const body = `#### Resultado de Testform Plan \n\`\`\`text\n${planOutput}\n\`\`\``;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: body
});
- name: Aplicar Cambios Aprobados (Push a Main)
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx testform apply -auto-approve