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. 1

    Abre la configuración del repositorio

    En tu repositorio de GitHub, ve a Settings → Secrets and variables → Actions.

  2. 2

    Añade el token como secret

    En la pestaña "Secrets", pulsa "New repository secret". Llámalo INFINI_TOKEN y pega el token de tu organización como valor.

  3. 3

    Añade el ID del automatismo como variable

    En la pestaña "Variables", pulsa "New repository variable". Llámala INFINI_AUTOMATION_ID y pega el ID del automatismo como valor.

El token siempre debe ser un secret, nunca una variable ni escrito en el YAML: los secrets se ocultan en los logs, las variables no.

2. Crea el workflow

  1. 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. 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. 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. 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.

.github/workflows/infinianalytics.yml
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. 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. 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. 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.

PasoCondiciónCuándo se ejecuta
START—Siempre, al principio del job.
EVENT—Cuando el job llega a él. Úsalo como punto de control entre pasos.
ENDif: success()Solo cuando todos los pasos anteriores han ido bien.
ERRORif: 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.
No hace falta generar un ID de ejecución: la action usa el ID del run más el número de intento, así que todos los pasos del mismo run se agrupan en una ejecución, y un re-run cuenta como una nueva.

Parámetros de entrada

NombreObligatorioDescripción
tokenSíToken de la organización. Pásalo siempre desde un secret.
automation_idSíID del automatismo al que pertenecen los eventos.
eventSíSTART, EVENT, WARNING, ERROR o END.
execution_idNoAgrupa los eventos de una ejecución. Por defecto "<run_id>-<run_attempt>".
descriptionNoTexto libre que se muestra junto al evento.
error_idNoIdentificador del error. Solo con ERROR.
error_descriptionNoDetalle del error. Solo con ERROR.
fail_on_errorNoSi es "true", el paso falla cuando no se puede contactar con InfiniAnalytics. Por defecto "false".
timeout_secondsNoTiempo 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 }}.

NombreDescripción
success"true" si el evento se registró (HTTP 201), "false" si no.
http_statusCódigo HTTP devuelto por la API (000 si la petición no se pudo enviar).
execution_idEl ID de ejecución que se envió realmente.
response_bodyRespuesta JSON tal cual la devuelve la API.

Consejos

La action nunca rompe tu pipeline: si no puede contactar con InfiniAnalytics solo deja un aviso en el run. Pon fail_on_error: 'true' si prefieres que el job falle en ese caso.
Los jobs de una matrix comparten el mismo ID de run, así que todos caerían en una sola ejecución. Para seguir cada uno por separado, añade esta línea debajo de "with:" en todos los pasos de InfiniAnalytics del job:
yaml
          execution_id: ${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }}
Si tu job usa 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.