Как сделать так, чтобы конвейер Gitlab копировал в каталог в зависимости от имени ветки - PullRequest
1 голос
/ 05 февраля 2020

Это конвейерное задание Gitlab создает документацию Gitbook и копирует ее в какое-то место:

build_gitbook:
  variables:
    DOC_DIR: '/var/www/doc'
  script:
    - gitbook build help _book
    - 'rm -rf $DOC_DIR/help'
    - 'mkdir -p $DOC_DIR/help'
    - 'cp -r _book/* $DOC_DIR/help'
  artifacts:
    paths:
      - _book
    expire_in: 10 mins

Как изменить это задание, чтобы документация копировалась в / var / www/doc, когда ветвь является главной , но копируется в / var / www/dev-doc во всех других ветвях?

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Если вы можете добавлять к своим CI заданиям и не ограничены в количестве заданий, вы можете использовать синтаксис only / кроме для изменения .gitlab-ci.yml:

⋮
build_gitbook_master:
    variables:
        DOC_DIR: '/var/www/doc'
    only:
        - master
    script:
        ⋮
        <Your Scripts>
        ⋮
    artifacts:
        ⋮

build_gitbook_others:
    variables:
        DOC_DIR: '/var/www/dev-doc'
    except:
        - master
    script:
        ⋮
        <Your Scripts>
        ⋮
    artifacts:
        ⋮
⋮

Также вы можете проверить правила GitLab как альтернативный способ.

0 голосов
/ 06 февраля 2020

Это можно сделать так. Основной сценарий находится в части шаблона.

# The template part that contains the build script it self.
.build_gitbook: &gitbook_build_script
  script:
    - gitbook build common_operations_infos _book
    - 'rm -rf $DOC_DIR/help'
    - 'mkdir -p $DOC_DIR/help'
    - 'cp -r _book/* $DOC_DIR/help'
  artifacts:
    paths:
      - _book
    expire_in: 10 mins

# Builds gitbook on the master branch
build_gitbook_master:
  <<: *gitbook_build_script
  variables:
    DOC_DIR: '/var/www/doc'
  only:
    - master

# Builds gitbook on other branch
build_gitbook_others:
  <<: *gitbook_build_script
  variables:
    DOC_DIR: '/var/www/dev-doc'
  except:
    - master

Это все еще не идеальное решение, поскольку для этого требуется две работы. Если они запускаются в ручном режиме ( когда: manual ), тогда разработчик должен выбрать правильное задание в зависимости от отрасли.

...