es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Generar Archivo en la Canalización de GitLab y Verificar si Hay Diferencias con el Archivo Confirmado.

¿Cómo puedo generar un archivo en mi canalización de Integración Continua (CI) y verificar si hay diferencias con un archivo existente previamente comprometido?

Mi canalización de CI se ejecuta en solicitudes de fusión y tiene algunos trabajos que ejecutan varios scripts.

En mi entorno de desarrollo, tengo un script que uso para generar un SDK de GraphQL y lo ejecuto en mi línea de comandos y comprometo antes de hacer una solicitud de fusión.

yarn workspace $WORKSPACE run graphql:gen

Sin embargo, a veces me olvido de hacer esto antes de enviar el código y puede ser un poco molesto esperar a que la canalización falle y luego hacer los cambios localmente y volver a enviar el código.

Entonces, mi idea es crear un trabajo que ejecute el generador de SDK de GraphQL en mi canalización, lo que generará un nuevo SDK y producirá un error si el archivo generado es diferente al archivo comprometido en la solicitud de fusión. Hasta ahora, tengo el script funcionando, pero eso es todo.

js-run-graphql-gen:
interruptible: true # Esto permite que se cancelen las ejecuciones anteriores de este trabajo.
extends: [.js-project-xxxxx.com]
stage: build
rules:
– if: “$DEPLOY_xxxx == ‘true'”
# Permitir que Frontend se omita explícitamente.
– if: “$SKIP_FRONTEND == ‘true'”
when: never
# Crear una canalización si hay cambios.
– changes:
– xxx/**/*
script:
– yarn workspace $WORKSPACE run graphql:gen

¿Alguien puede señalarme en la dirección correcta?

¡Gracias por su ayuda!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes usar el comando git diff para comparar el archivo generado con el archivo comprometido en tu pipeline de CI. Puedes agregar lo siguiente a la sección script en tu trabajo:


    - git diff --name-only HEAD~1 HEAD
    - git diff --name-only HEAD~1 HEAD | grep "xxx/**/*"
    - if [ $? -eq 0 ]; then
    git diff --name-only HEAD~1 HEAD | xargs git diff HEAD~1
    fi

    Esto comparará el archivo comprometido con el archivo generado y, si hay diferencias, mostrará las diferencias.

Comments are closed.