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 😕
- Nota: Si intentas usar
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