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!
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ónscript
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.