Как запустить конвейер только по запросу на ветку master - PullRequest
3 голосов
/ 06 марта 2019

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

pipelines:
  pull-requests:
    '**': #this runs as default for any branch not elsewhere defined
      - step:
          script
            - ...
    feature/*: #any branch with a feature prefix
      - step:
          script:
            - ...

Как фильтровать по целевой ветви?Есть некоторые тесты, которые нужно выполнять только при слиянии с мастером.

1 Ответ

4 голосов
/ 06 марта 2019

К сожалению, на самом деле, механизм конвейера запросов на получение запросов работает на основе исходной ветви, а не на целевой ветви.

Это объясняется на проблеме с их трекером, добавляющим функцию pull-request одним изчлен команды:

Шаблон ветвления при запросах на получение определяет ветвь источника.Это сделано для того, чтобы вы могли запустить другой конвейер в зависимости от исправления.Например, у вас может быть другой набор тестов для ветвей функций и ветвей исправлений.Обратите внимание, что речь идет только о тестах, которые выполняются против PR во время разработки.

Источник: Комментарий Джеффа Крейна

На самом деле есть еще одна проблема, открытая для этой точной функции .

Но ответ команды:

Я определенно понимаю, почемуэто было бы полезно, особенно при слиянии с основной / основной ветвью.

Однако, учитывая наши текущие приоритеты, мы вряд ли это поддержим в краткосрочной перспективе.В то же время я открою этот тикет, чтобы измерить интерес других пользователей к тому же.

Источник : Комментарий Анейты Янг

Тем не менее, вы могли бы как-то иметь требуемое поведение с таким взломом:

pipelines:
  pull-requests:
    '**': #this runs as default for any branch not elsewhere defined
      - step:
          script
            - if [ "${BITBUCKET_PR_DESTINATION_BRANCH}" != "master" ]; then printf 'not a target branch we want to check'; exit; fi
            - printf 'running useful tests'

Или, если вы уже выполняете некоторые тесты для всех запросов на извлечениеКак я понимаю:

pipelines:
  pull-requests:
    '**': #this runs as default for any branch not elsewhere defined
      - step:
          script
            - printf 'these are the all PR tests'
            - if [ "${BITBUCKET_PR_DESTINATION_BRANCH}" = "master" ]; then printf 'those are the extra checks on master'; fi

Или еще раз, он может быть выведен в сценарий самостоятельно:

bitbucket-pipelines.yaml

pipelines:
  pull-requests:
    '**': #this runs as default for any branch not elsewhere defined
      - step:
          script
            - ./bin/tests "${BITBUCKET_PR_DESTINATION_BRANCH}"

корзина / тесты

#!/usr/bin/env bash

printf 'these are the all PR tests'

if [ "${1}" = "master" ]
then 
    printf 'those are the extra checks on master'
fi

См. Также : Переменные на странице документации трубопроводов: https://confluence.atlassian.com/bitbucket/variables-in-pipelines-794502608.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...