yml tutorial only job example create gitlab gitlab-ci gitlab-ci-runner

tutorial - gitlab ci yml java



¿Cómo ejecutar un trabajo gitlab-ci.yml solo en una rama etiquetada? (4)

Este comportamiento aún no es compatible con gitlab-ci, aunque hay un problema abierto para agregarlo.

Mientras tanto, también he escuchado informes anecdóticos que

only: - master only: - tags

hará el trabajo (así como los informes anecdóticos de que no lo hará).

¿Cómo ejecuto un trabajo .gitlab-ci.yml solo en una rama Master etiquetada?

job: script: - echo "Do something" only: - master - tags

El código anterior se ejecutará si existe alguna condición: una rama maestra o una confirmación etiquetada.

Mi objetivo es tener esta ejecución para un despliegue de producción, pero requeriría que esté en la rama Master y que esté etiquetado (con una versión). De lo contrario, tendré otro trabajo que empujará a la clasificación si falta una etiqueta.


Este comportamiento será introducido en la versión 12 .

El problema abierto se actualizó recientemente:

Jason Lenny @jlenny cambió el título de {-Update .gitlab-ci.yml para admitir la lógica de conjunción para las condiciones de construcción-} a la lógica de conjunción para las condiciones de construcción MVC · hace 2 días

Jason Lenny @jlenny cambió el hito a 12.0 · hace 2 días

(dedos cruzados)

Una solución es usar la palabra clave except para excluir todas las sucursales, junto con only para ejecutar en etiquetas, de esta manera usted ejecuta su canalización solo en la etiqueta en la rama principal:

only: - tags except: - branches

Estoy usando la versión 11.3.4


Gracias a otros como Matt Alioto, que publicó sobre el tema abierto (que está etiquetado como Product Vision 2019 así que espero que lo eliminen este año).

Específico a la pregunta de Carlson Cole , esto funcionaría:

job_for_master_no_tags: stage: deploy script: - echo "Release to Staging" only: - master job_for_master_tags_only: stage: deploy script: - echo "Release to Production" only: - tags except: - /^(?!master).+@/ # Ruby RegEx for anything not starting with ''master''

  • Para ver cómo funciona este RegEx, visite https://rubular.com/r/1en2eblDzRP5Ha
  • He probado esto en GitLab versión 11.7.0 y funciona
    • Nota: Si intentas usar - /^(?!master).+/ (sin la @ ) no funciona, aprendiste que de la manera más difícil 😕

Lo hice funcionar y este es mi fragmento de código de trabajo, todos los demás no funcionaron para mí

only: - tags # please mention the ''s'' compared to Sergio Tomasello''s solution except: - branches

Yo uso 11.4.3