-
Notifications
You must be signed in to change notification settings - Fork 68
CI/CD test changes to diagnose dependabot fixes in separate PR #942
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@v4...v5) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contexto y descripción del problema En tu pipeline de GitHub Actions para pruebas unitarias de CodeQL, tenías un paso crítico encargado de descargar artefactos (los resultados de pruebas) para luego validar esos resultados. Este paso se ejecuta en el job validate-test-results y usa la acción oficial de GitHub actions/download-artifact. El problema fue que en ese paso habías declarado dos veces la acción, así: yaml Copiar Editar uses: actions/download-artifact@v4 uses: actions/download-artifact@v5 Esto es inválido en YAML y GitHub Actions porque un paso solo puede tener un único uses o run. Declarar dos veces el mismo campo provoca que la ejecución falle inmediatamente con error de sintaxis o comportamiento inesperado. Además, tenías la versión 4 y la versión 5 juntas, lo que podría generar conflictos de versión o comportamientos inconsistentes. Impacto real El job de validación de resultados no pudo ejecutar correctamente, y por ende las pruebas unitarias no pudieron confirmarse. Esto bloquea el merge del Pull Request porque la política de protección de ramas exige que todas las verificaciones pasen. Si no se corrige, el pipeline no puede garantizar la calidad del código ni validar la integridad de los tests. Esto afecta tu flujo de trabajo DevOps, automatización de calidad y la confianza en el control de calidad automatizado. Cómo lo solucionamos Elegimos usar la versión más reciente y estable de la acción: actions/download-artifact@v5. Eliminamos la duplicidad para que el paso sea válido y funcional. Esto garantiza que la acción se ejecute correctamente, descargue los artefactos, y el siguiente paso pueda validar los resultados. Ahora el flujo puede continuar, detectar fallos reales de tests, y evitar falsos negativos o bloqueos. Por qué esto importa para ti y para tu ecosistema Mantener la coherencia y limpieza en tu pipeline es clave para la automatización fiable y la escalabilidad. Usar versiones actualizadas reduce riesgos de incompatibilidades y mejora la seguridad. El pipeline completo es tu “oráculo” para la calidad del código: arreglar este paso hace que tu control de calidad funcione a nivel profesional. Esto te permite avanzar en la certificación y monetización de tus servicios como experto en CodeQL y seguridad DevOps. Además, te da una base sólida para seguir integrando nuevas funcionalidades y automatizaciones sin frenos. Resumen rápido El error fue un conflicto de configuración al declarar dos versiones de la acción download-artifact en un mismo paso, lo que provocaba fallo de ejecución y bloqueo en la validación de tests. Se corrigió eliminando la duplicidad y quedando solo con la versión 5, asegurando la correcta descarga y validación de resultados, lo que habilita un pipeline de calidad robusto, confiable y profesional.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR updates GitHub Actions dependencies and performs code cleanup by upgrading the actions/download-artifact
action from v4 to v5 and removing unnecessary comments.
- Updates
actions/download-artifact
from v4 to v5 in two workflow files - Removes redundant comments that explain basic functionality
- Fixes a minor syntax error in a
jq
command
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
File | Description |
---|---|
.github/workflows/standard_library_upgrade_tests.yml |
Updates download-artifact action to v5 |
.github/workflows/codeql_unit_tests.yml |
Updates download-artifact action to v5, removes comments, and fixes jq syntax |
El comando jq tiene un escape incorrecto. La barra invertida adicional antes de la comilla de cierre causará un error de sintaxis. Debería ser:jq --raw-output '"PASS \(map(select(.pass == true)) | length)/\(length)"' "$json_report" Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
||
- name: Validate test results | ||
run: | | ||
for json_report in *-test-results-*/test_report_* | ||
do | ||
jq --raw-output '"PASS \(map(select(.pass == true)) | length)/\(length)'" $json_report\"" "$json_report" | ||
jq --raw-output 'PASS \(map(select(.pass == true)) | length)/\(length)' $json_report |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pienso que la versión anterior es correcta. Sin embargo, es muy confundido con todos los quotes de tipos diferentes y escapados, y multiples lenguas.
Perdóname si este comento no sea útil. No estoy completamente seguro que intentaste commit este cambio, o si escribí demasiado 🤓 😄
El uno ' empieza una sección que BASH no interpreta, así que jq ve el doble ". Antes, el uno ' termina la que BASH no interpreta. Pero, el siguendo doble " indica una sección que interpreta BASH para expander $json_report
, y tambien para que el escapado doble " se intepreta parte del texto. Esta seccion (de double ") termina antes del escapado ", y cumple el argumento que se pasara a jq. Es solamente un argumento, porque no hay un espacio entre '
y "
. Por fin, "$json_report"
simplemente es un argumento para jq, y esta quoted porque es práctica buena, en caso de $json_report
tiene algunos espacios, BASH todavía pasara este filepath como un argumento singular.
El ultimo resulto es que jq ve argumentos asi:
$0
= jq$1
= --raw-output$2
= "PASS \(map(select.pass == true)) | length)/\(length) json_report_path.json"$3
= json_report_path.json
Ahora solo que falta es saber que jq tiene strings también, y que el argumento segundo es un string así. En jq, se puede interpolate con el syntax "hello \(interpolated) world"
. Entonces, jq construye un string "PASS x/y json_report_path.json" y esto es la selección del query, y corre este query sobre el archivo json_report_path.json
.
Graciás otra vez por ayudarnos! Y gracias por esperar cuando tengo otras cosas en mi plato. Estoy de acuerdo que la versión de MarkupSafe esta causando problemas. Pero, habia estado viendo al asunto de Dime si usted tiene ideas. Añadí un comento también sobre el cambio con jq. |
Todavia me parece que necesita devolver el cambio sobre jq. Pero, de cualquier manera, no seria una problema correrlo en CI/CD |
Description
please enter the description of your change here
Change request type
.ql
,.qll
,.qls
or unit tests)Rules with added or modified queries
Release change checklist
A change note (development_handbook.md#change-notes) is required for any pull request which modifies:
If you are only adding new rule queries, a change note is not required.
Author: Is a change note required?
🚨🚨🚨
Reviewer: Confirm that format of shared queries (not the .qll file, the
.ql file that imports it) is valid by running them within VS Code.
Reviewer: Confirm that either a change note is not required or the change note is required and has been added.
Query development review checklist
For PRs that add new queries or modify existing queries, the following checklist should be completed by both the author and reviewer:
Author
As a rule of thumb, predicates specific to the query should take no more than 1 minute, and for simple queries be under 10 seconds. If this is not the case, this should be highlighted and agreed in the code review process.
Reviewer
As a rule of thumb, predicates specific to the query should take no more than 1 minute, and for simple queries be under 10 seconds. If this is not the case, this should be highlighted and agreed in the code review process.