CircleCI - фильтрация регулярных выражений в строке - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь отфильтровать, чтобы убедиться, что в ветке есть имя билета jira.Имя билета может быть где угодно в имени филиала.

      - uploadToJira:
          requires:
            - testDebug
            - testRelease
          filters:
            branches:
              only: /.*(jira|JIRA)-\d+.*/

Это должно соответствовать именам, таким как feature-JIRA-18889-test или bug-JIRA-2344 или jira-1233, но, похоже, это не так (хотя это регулярное выражениеработает на Java).Что я делаю не так?

Обновление: регулярное выражение /^pull.*/ работает, что говорит мне, что оно совпадает с именем запроса на извлечение для ветви (что и используется circleci при проверке кода).Это похоже на ошибку в окружности, так как pull/383 не оставляет вам достаточно информации для сопоставления по имени ветви;они все будут одинаковыми.

1 Ответ

1 голос
/ 01 мая 2019

Это не соответствует из-за PR, пришедшего из разветвленного хранилища.Сопоставление ветвей работает только в том случае, если это PR из не разветвленного репозитория.

@ предложение выше, предложенное @ halfer, чтобы не фильтровать и заставить сам скрипт определить, должен ли он работать, - это то, с чем мы в итоге поехали.

Вот как это выглядит:

#!/bin/bash

TICKET_NUMBER_REGEX='(ourproject|OURPROJECT)-[0-9]+'

# if CIRCLE_PR_NUMBER is NOT set (meaning it is not a PR 
# from a forked repository), then CIRCLE_BRANCH will 
# contain the real branch name
if [ -z "${CIRCLE_PR_NUMBER}" ]; then
    REAL_BRANCH_NAME="${CIRCLE_BRANCH}"

# if CIRCLE_PR_NUMBER is set, then we need to use it 
# to fetch the real branch name
else
    REAL_BRANCH_NAME=$(curl -s https://api.github.com/repos/"${CIRCLE_PROJECT_USERNAME}"/"${CIRCLE_PROJECT_REPONAME}"/pulls/"${CIRCLE_PR_NUMBER}"?access_token="${GITHUB_TOKEN}" | jq -r '.head.ref')
fi

TICKET_NUMBER="$(echo "${REAL_BRANCH_NAME}" | grep -Eo "${TICKET_NUMBER_REGEX}")"

# if the ticket number regex does not match, then it's not 
# a feature branch, and we shouldn't upload to JIRA.
if [ -z "${TICKET_NUMBER}" ]; then
    echo 'Not uploading JIRA APKS for non-feature branch.'

# if it is a feature branch, then use the script to upload the
# build to the correct ticket.
else
    ./scripts/jiraBuildUpload.py -s -t "$(echo "${REAL_BRANCH_NAME}" | grep -Eo "${TICKET_NUMBER_REGEX}")"
fi
...