Как настроить динамический файл gitlab-ci - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь настроить динамический файл gitlab-ci, который включает необходимый файл gitlab-ci на основе переменной проекта.

К сожалению, я не могу заставить это работать, я прочитал документацию и искал форум, но, к сожалению, я не могу найти какие-либо решения.

Как мне получить динамический файл gitlab-ci?

По сути, я хотел сделать что-то вроде приведенного ниже фрагмента, но заметил, что не могу использовать переменные в методе файла (возвращает «Неверная конфигурация: файл не существует».).

include:
  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci-$GITLABFILE.yml'
    only:
      - $GITLABFILE
include:
  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci.yml'
    only:
      - $GITLABFILE == null

Поскольку я не мог использовать переменную в методе file, я попробовал приведенную ниже конфигурацию, но, к сожалению, она всегда загружает последний файл и игнорирует единственное ключевое слово.

include:
  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci.yml'
    except:
      variables:
        - $GITLABFILE

  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci-legacy.yml'
    only:
      variables:
        - $GITLABFILE == 'legacy'

  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci-legacy-nobuild.yml'
    only:
      variables:
        - $GITLABFILE == 'legacy-nobuild'

Я ожидаю один файл gitlab-ci, который может извлекать другие файлы gitlab-ci на основе переменной.

Надеюсь, кто-нибудь может мне помочь или указать мне правильное направление.

1 Ответ

1 голос
/ 02 июля 2019

Почему бы вам не поместить условную логику в эти отдельные файлы gitlab-ci, а затем просто включить их все.

Примерно так - в вашем основном файле:

variables:
  GITLABFILE: legacy

include:
  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci.yml'

  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci-legacy.yml'

  - project: 'tools/gitlab-ci'
    file: '/gitlab-ci-legacy-nobuild.yml'

И затем в каждом подфайле - например, в gitlab-ci-legacy.yml:

job:
  script:
    - echo Do something
  only:
    variables:
      - $GITLABFILE == "legacy"

Подробнее: https://docs.gitlab.com/ee/ci/yaml/#onlyvariablesexceptvariables

...