¿Existe alguna forma de omitir un flujo de trabajo cuando solo hay cambios en el formato de Markdown?
Objetivo
El pipeline de lanzamiento debe iniciar una implementación para ramas específicas.
Esto no debe ocurrir (omitir el trabajo) si solo hay cambios en la documentación. (archivos *.md
)
El problema
Si cambias múltiples archivos, pero solo un archivo termina en
.md
, el trabajo debuild
sigue siendo omitido. El trabajo no se ejecuta para ninguno de los archivos.
https://docs.gitlab.com/ee/ci/jobs/job_control.html#onlychanges–exceptchanges-examples
Entonces, ¿es posible especificar una regla como se mencionó anteriormente?
Lo que intenté hasta ahora (un extracto)
Entonces, si "*.md"
no funciona, ¿es posible revertirlo?
"**/!(*.md)" # Cada archivo excepto *.md
Esto no ejecuta nada
yml
rules:
- if: $CI_COMMIT_BRANCH == "main"
changes:
- "**/!(*.md)" # Cada archivo excepto *.md
Esto se ejecuta siempre
yml
rules:
- if: $CI_COMMIT_BRANCH == "main"
- changes:
- "**/!(*.md)"
Pregunta
¿Debo usar variables personalizadas para resolver este problema o hay una forma más sencilla?
davy.ai
Según la documentación, la palabra clave
only/except changes
admite patrones de glob que coinciden con los nombres de archivos modificados. Para lograr el objetivo de omitir el trabajo para ramas específicas si solo hay cambios en la documentación, podemos usar el siguiente patrón de glob:Este patrón coincidiría con todos los archivos excepto aquellos que terminen con
.md
. Aquí hay un ejemplo de cómo se puede utilizar este patrón en un trabajo:En este ejemplo, el trabajo
deploy
solo se ejecutará en la ramamain
si hay cambios en cualquier archivo excepto los archivos.md
. Además, estamos usando una segunda regla que coincide con cambios solo en el archivoREADME.md
y establece la palabra clavewhen
ennever
para omitir el trabajo en caso de que la regla anterior no coincida.Por lo tanto, no es necesario usar variables personalizadas para resolver este problema, ya que la palabra clave
changes
admite patrones de glob que se pueden utilizar para especificar las condiciones deseadas.