.gitlab-ci.yml для включения нескольких функций оболочки из нескольких файлов yml - PullRequest
1 голос
/ 29 сентября 2019

У меня есть моно-репозиторий Gitlab с некоторым внутренним кодом Java и внешним интерфейсом Node.js.Чтобы создать CI, я работаю над общим подходом к созданию обоих приложений.

В хранилище приложений, назовем его «A», у меня также есть исходный код .gitlab-ci.ymlфайл, как показано ниже,

A
├── .gitlab-ci.yml
├── backendapi
└── ui

.gitlab-ci.yml file,

---
include: 
  - project: 'root/B'
    ref: master
    file: 'top-level.yml'

  - project: 'root/B'
    ref: master
    file: 'maven.yml'

  - project: 'root/B'
    ref: master
    file: 'node.yml'

У меня есть другой репозиторий под названием «B», где у меня есть все моиФункциональные возможности CI в трех разных файлах.

B
├── maven.yml
├── node.yml
└── top-level.yml
  1. top-level.yml Файл, в котором находится мой этап сборки,
---
stages:
  - build

variables:
  GIT_SSL_NO_VERIFY: "1"

.build_script: &build_script
  stage: build
  tags:
    - default
    - docker

java_build:
  <<: *build_script
  image: 
    name: maven:latest
  script:
    - backend_build

node_build:
  <<: *build_script
  image: 
    name: node:slim
  script:
    - frontend_build
maven.yml , который имеет функцию построения mvn,
.maven_build: &maven_build |-
  function backend_build {
    cd backendapi
    mvn clean package -DskipTests
  }

before_script:
  - *maven_build
node.yml , с функцией узла в нем,
.node_build: &node_build |-
  function frontend_build {
    cd ui
    npm install
    npm build
  }

before_script:
  - *node_build 

Когда файл .gitlab-ci.yml в хранилище "A"выполняется, он вызывает файлы top-level.yml , maven.yml и node.yml из репозитория" B ", что хорошо.

Проблема здесь в том, что при запуске java_build он не может найти функцию backend_build из maven.yml вместо неепохоже, что он загружает только функцию frontend_build из файла node.yml или перезаписывает функцию backend_build из maven.yml . node_build работает должным образом, потому что он может найти функцию frontend_build .

the Skipping Git submodules setup
Authenticating with credentials from /root/.docker/config.json
Authenticating with credentials from /root/.docker/config.json
Authenticating with credentials from /root/.docker/config.json
$ function frontend_build { # collapsed multi-line command
$ backend_build
/bin/bash: line 90: backend_build: command not found

Я знаю, что могу скопировать все функции в один большойyml файл в репозитории «B» и включите в .gitlab-ci.yml в репозиторий «A», но здесь я пытаюсь понять, возможно ли даже попробовать вышеуказанный подход.

Заранее спасибо!

...