Me gustaría configurar mi project_dev CI solo para 3 ramas y tipos específicos de etiquetas como: dev_1.0, dev_1.1, dev_1.2 .

¿Cómo puedo lograrlo?

Esto es lo que tengo ahora:

project_dev:
  stage: dev
  script:
    - export
    - bundle exec pod repo update
    - bundle exec pod install
    - bundle exec fastlane crashlytics_project_dev
  after_script:
    - rm -rf ~/Library/Developer/Xcode/Archives || true
  when: manual
  only:
    - develop
    - release
    - master
    - //here I need to add condition to fire that stage additionally only for specific tags. How can I setup regexp here?
  tags:
    - iOS

Cuando lo escribo como:

  only:
    - branches
    - /^dev_[0-9.]*$/

También ejecuta el CI para etiquetas como: dev1.2 pero no debería. ¿Por qué? ¿Existe alguna expresión regular para las etiquetas?

32
Bartłomiej Semańczyk 16 oct. 2018 a las 11:02

2 respuestas

La mejor respuesta

Suena como una pregunta de expresión regular. Acabo de crear un proyecto en gitlab. com para la expresión regular.

Archivo: .gitlab-ci.yml

project_dev:
  # Irrelevant keys is skipped
  script:
    - echo "Hello World"
  only:
    - develop
    - release
    - master
    - /^dev_[0-9]+(?:.[0-9]+)+$/ # regular expression

Me enviaron todas las etiquetas que mencionaste para probar esta expresión regular.

Tags

Como puede ver, coincidirá con etiquetas como dev_1.0, dev_1.1, pero el trabajo project_dev no se activará con la etiqueta dev1.2. Puede comprobar el resultado en pipeline páginas

Pipelines

19
Gasol 17 oct. 2018 a las 16:17

Gitlab.com? Puede probar una combinación de except y only. Algo como

only: 
- tags 
- branches 
except:
- /^(?!(branch1|branch2|branch3|dev_[0-9.]*$)$).*$/

La idea es permitir que solo las ramas y etiquetas activen un trabajo, con la excepción de todo lo diferente de la rama [1-3] y dev_ ramas / etiquetas.

7
Hiruma 16 oct. 2018 a las 16:04