Integraciones
GitHub Actions
Registra cada ejecución de GitHub Actions en InfiniAnalytics con la action oficial: un START al principio y un END o ERROR al final según cómo haya terminado el job. Sin código, solo copiar y pegar.
Requisitos
- ●Un repositorio de GitHub donde puedas editar workflows y la configuración
- ●El token de tu organización (InfiniAnalytics → Organización → Tokens)
- ●El ID del automatismo que recibirá los eventos (ábrelo desde Procesos y copia su ID)
1. Guarda tus credenciales en GitHub
El workflow lee el token y el ID del automatismo de la configuración del repositorio, así nunca aparecen en tu código.
- 1
Abre la configuración del repositorio
En tu repositorio de GitHub, ve a Settings → Secrets and variables → Actions.
- 2
Añade el token como secret
En la pestaña "Secrets", pulsa "New repository secret". Llámalo
INFINI_TOKENy pega el token de tu organización como valor. - 3
Añade el ID del automatismo como variable
En la pestaña "Variables", pulsa "New repository variable". Llámala
INFINI_AUTOMATION_IDy pega el ID del automatismo como valor.
2. Crea el workflow
- 1
Crea el archivo del workflow
En tu repositorio, crea este archivo (el nombre puede ser cualquiera, la carpeta no):
.github/workflows/infinianalytics.yml - 2
Pega el workflow de abajo
Copia el bloque completo de abajo en el archivo. Ya incluye los pasos START, EVENT, END y ERROR.
- 3
Sustituye los pasos de ejemplo por los tuyos
Cambia los pasos "Build" y "Test" que hay entre los dos comentarios marcadores por tus pasos reales. Deja START como primer paso y END/ERROR como los dos últimos. El paso EVENT es opcional: muévelo, duplícalo o bórralo.
- 4
Haz commit y ejecútalo
Haz commit del archivo. Se ejecuta en cada push a main, o a mano desde la pestaña Actions → "My pipeline" → "Run workflow". La ejecución aparece en InfiniAnalytics en unos segundos.
name: 'My pipeline'
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
pipeline:
runs-on: ubuntu-latest
steps:
# Tell InfiniAnalytics the execution has started
- name: InfiniAnalytics - START
uses: InfiniWorkspace/infinianalytics-github-action@main
with:
token: ${{ secrets.INFINI_TOKEN }}
automation_id: ${{ vars.INFINI_AUTOMATION_ID }}
event: START
description: 'Pipeline started on ${{ github.ref_name }}'
# ── Your own steps go here ──────────────────────────────
- uses: actions/checkout@v4
- name: Build
run: echo "Replace with your build command"
# Optional: checkpoint in the middle of the run
- name: InfiniAnalytics - EVENT
uses: InfiniWorkspace/infinianalytics-github-action@main
with:
token: ${{ secrets.INFINI_TOKEN }}
automation_id: ${{ vars.INFINI_AUTOMATION_ID }}
event: EVENT
description: 'Build finished'
- name: Test
run: echo "Replace with your test command"
# ────────────────────────────────────────────────────────
# Every previous step succeeded
- name: InfiniAnalytics - END
if: success()
uses: InfiniWorkspace/infinianalytics-github-action@main
with:
token: ${{ secrets.INFINI_TOKEN }}
automation_id: ${{ vars.INFINI_AUTOMATION_ID }}
event: END
description: 'Pipeline finished successfully'
# A previous step failed or the run was cancelled
- name: InfiniAnalytics - ERROR
if: failure() || cancelled()
uses: InfiniWorkspace/infinianalytics-github-action@main
with:
token: ${{ secrets.INFINI_TOKEN }}
automation_id: ${{ vars.INFINI_AUTOMATION_ID }}
event: ERROR
error_id: ${{ job.status == 'cancelled' && 'PIPELINE_CANCELLED' || 'PIPELINE_FAILED' }}
error_description: 'Job ${{ github.job }} ended with status ${{ job.status }}. Logs: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
¿Ya tienes un workflow?
No necesitas un workflow nuevo: añade estos bloques al job que quieras seguir, después de guardar las credenciales del paso 1.
- 1
Pega START como primer paso
Justo debajo de
steps:en tu job, antes de cualquier otro paso:yaml# Tell InfiniAnalytics the execution has started - name: InfiniAnalytics - START uses: InfiniWorkspace/infinianalytics-github-action@main with: token: ${{ secrets.INFINI_TOKEN }} automation_id: ${{ vars.INFINI_AUTOMATION_ID }} event: START description: 'Pipeline started on ${{ github.ref_name }}' - 2
Opcional: pega EVENT entre tus pasos
Donde quieras un punto de control, por ejemplo después del build. Cambia la descripción para indicar qué acaba de pasar.
yaml# Optional: checkpoint in the middle of the run - name: InfiniAnalytics - EVENT uses: InfiniWorkspace/infinianalytics-github-action@main with: token: ${{ secrets.INFINI_TOKEN }} automation_id: ${{ vars.INFINI_AUTOMATION_ID }} event: EVENT description: 'Build finished' - 3
Pega END y ERROR como los dos últimos pasos
Al final del todo del job. Solo se ejecuta uno de los dos: END si todo ha ido bien, ERROR si algo ha fallado o se ha cancelado la ejecución.
yaml# Every previous step succeeded - name: InfiniAnalytics - END if: success() uses: InfiniWorkspace/infinianalytics-github-action@main with: token: ${{ secrets.INFINI_TOKEN }} automation_id: ${{ vars.INFINI_AUTOMATION_ID }} event: END description: 'Pipeline finished successfully' # A previous step failed or the run was cancelled - name: InfiniAnalytics - ERROR if: failure() || cancelled() uses: InfiniWorkspace/infinianalytics-github-action@main with: token: ${{ secrets.INFINI_TOKEN }} automation_id: ${{ vars.INFINI_AUTOMATION_ID }} event: ERROR error_id: ${{ job.status == 'cancelled' && 'PIPELINE_CANCELLED' || 'PIPELINE_FAILED' }} error_description: 'Job ${{ github.job }} ended with status ${{ job.status }}. Logs: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
Cómo funciona
El patrón funciona como un try/except: el job sigue saliendo en rojo cuando un paso falla, pero antes el fallo queda registrado en InfiniAnalytics.
| Paso | Condición | Cuándo se ejecuta |
|---|---|---|
START | — | Siempre, al principio del job. |
EVENT | — | Cuando el job llega a él. Úsalo como punto de control entre pasos. |
END | if: success() | Solo cuando todos los pasos anteriores han ido bien. |
ERROR | if: failure() || cancelled() | Solo cuando un paso anterior ha fallado o se ha cancelado la ejecución. El ID de error distingue los dos casos y la descripción enlaza a los logs. |
Parámetros de entrada
| Nombre | Obligatorio | Descripción |
|---|---|---|
token | Sí | Token de la organización. Pásalo siempre desde un secret. |
automation_id | Sí | ID del automatismo al que pertenecen los eventos. |
event | Sí | START, EVENT, WARNING, ERROR o END. |
execution_id | No | Agrupa los eventos de una ejecución. Por defecto "<run_id>-<run_attempt>". |
description | No | Texto libre que se muestra junto al evento. |
error_id | No | Identificador del error. Solo con ERROR. |
error_description | No | Detalle del error. Solo con ERROR. |
fail_on_error | No | Si es "true", el paso falla cuando no se puede contactar con InfiniAnalytics. Por defecto "false". |
timeout_seconds | No | Tiempo máximo de la petición HTTP en segundos. Por defecto 10. |
Salidas
Dale al paso un id y lee sus salidas en pasos posteriores, por ejemplo ${{ steps.<id>.outputs.success }}.
| Nombre | Descripción |
|---|---|
success | "true" si el evento se registró (HTTP 201), "false" si no. |
http_status | Código HTTP devuelto por la API (000 si la petición no se pudo enviar). |
execution_id | El ID de ejecución que se envió realmente. |
response_body | Respuesta JSON tal cual la devuelve la API. |
Consejos
fail_on_error: 'true' si prefieres que el job falle en ese caso. execution_id: ${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }}environment: puedes guardar INFINI_TOKEN e INFINI_AUTOMATION_ID en ese entorno, por ejemplo para registrar las ejecuciones de test y de producción en automatismos distintos.