конвейер запуска gitlab только для определенных веток - PullRequest
0 голосов
/ 28 октября 2019

Я настроил конвейер gitlab ci / cd для своего проекта. Поэтому я использовал базовый шаблон, который состоит из 2 этапов: сборка и упаковка. Этап сборки создает проект и создает файл jar, а этап создания пакета создает изображение и сохраняет его в реестре контейнера. И файл .gitlab-ci.yml был создан. Ниже приведен файл

image: docker:latest
services:
  - docker:dind

stages:
  - build
  - package

build:
  image: gradle:5.6.1-jdk11
  stage: build
  script:
    - gradle clean build -x test
  artifacts:
    paths:
      - build/libs/*.jar

package:
  stage: package
  script:
    - docker build -t registry.gitlab.com/my-project/sample .
    - docker login -u $CI_DOCKER_USERNAME -p $CI_DOCKER_PASSWORD registry.gitlab.com
    - docker push rregistry.gitlab.com/my-project/sample

Когда мы хотим добавить новую функциональность, мы, очевидно, создаем новую ветвь, и поскольку этот файл существует и в новой ветке, сборка запускается. Но я не хочу запускать сборку для всех веток. Я хочу вызвать только развитие и мастер. В любом случае мы можем сделать это на уровне проекта вместо добавления only на каждом этапе

1 Ответ

1 голос
/ 29 октября 2019

Единственный способ ограничения при создании рабочих мест - использовать only/except в файле .gitlab-ci.yml.

Чтобы не писать столько текста, вы можете использовать extends итакже иногда ямл якоря. Более подробная информация здесь:

https://docs.gitlab.com/ee/ci/yaml/#extends

и здесь:

https://docs.gitlab.com/ee/ci/yaml/#anchors

Пример использования extends:

image: docker:latest
services:
  - docker:dind

.only-master-and-develop:
  only:
   - master
   - development

stages:
  - build
  - package

build:
  extends: .only-master-and-develop
  image: gradle:5.6.1-jdk11
  stage: build
  script:
    - gradle clean build -x test
  artifacts:
    paths:
      - build/libs/*.jar

package:
  extends: .only-master-and-develop
  stage: package
  script:
    - docker build -t registry.gitlab.com/my-project/sample .
    - docker login -u $CI_DOCKER_USERNAME -p $CI_DOCKER_PASSWORD registry.gitlab.com
    - docker push rregistry.gitlab.com/my-project/sample

(Я не проверял этот файл, пожалуйста, дайте мне знать, если с ним что-то не так.)

...