запрос на слияние нескольких форм из одной исходной ветки в gitlab - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно создать запрос на слияние от release-01 до develop и staging.

. Для этого я сделал .gitlab-ci.yml с моими заданиями:

Я не все поставил

image: node:13.10.1

default:
  before_script:
    - apt-get update -qq && apt-get install && apt-get -y install yarn
    - yarn config set cache-folder .yarn
    - yarn install --frozen-lockfile
  cache:
    paths:
      - node_modules/

stages:
  - build
  - lint
  - test
  - develop
  - createMRDS
  - staging
  - createMRRD
  - createMRRS
  - createMRSM
  - production

# create auto mr release-* -> staging && develop
CreateMrRS:
  stage: createMRRS
  only:
    - /^release-.*$/
  script:
    - TARGET_BRANCH=staging sh ./.gitlab/autoMergeRequest.sh

CreateMrRD:
  stage: createMRRD
  only:
    - /^release-.*$/
  script:
    - TARGET_BRANCH=develop sh ./.gitlab/autoMergeRequest.sh

и один скрипт для этого autoMergeRequest.sh:

#!/usr/bin/env bash
# Extract the host where the server is running, and add the URL to the APIs
HOST="${CI_API_V4_URL}/projects/"
NAME="?️ auto_mr ? api ? ${CI_COMMIT_REF_NAME} > ${TARGET_BRANCH}"
# work in $ version
ASSIGNEE="[3, 2]"

# The description of our new MR, we want to remove the branch after the MR has
# been closed
BODY="{
    \"id\": ${CI_PROJECT_ID},
    \"source_branch\": \"${CI_COMMIT_REF_NAME}\",
    \"target_branch\": \"${TARGET_BRANCH}\",
    \"remove_source_branch\": true,
    \"title\": \"${NAME}\",
    \"assignee_ids\": ${ASSIGNEE},
    \"labels\":\"auto-mr, ${TARGET_BRANCH}\"
}";

# Require a list of all the merge request and take a look if there is already
# one with the same source branch
LISTMR=$(curl --silent "${HOST}${CI_PROJECT_ID}/merge_requests?state=opened" --header "PRIVATE-TOKEN:${GITLAB_PRIVATE_TOKEN}");
COUNTBRANCHES=$(echo "${LISTMR}" | grep -o "\"source_branch\":\"${CI_COMMIT_REF_NAME}\"" | wc -l);

# No MR found, let's create a new one
if [ "${COUNTBRANCHES}" -eq "0" ]; then
    curl -X POST "${HOST}${CI_PROJECT_ID}/merge_requests" \
        --header "PRIVATE-TOKEN:${GITLAB_PRIVATE_TOKEN}" \
        --header "Content-Type: application/json" \
        --data "${BODY}";

    echo "Opened a new merge request: ${NAME}";
    exit;
fi

echo "No new merge request opened";

Этот скрипт отлично работает (я использую его для другого запроса на слияние ) но для двух заданий createMRRS и createMRRD он создает мне только одного г-на, без ошибок на другом.

Единственный журнал, который у меня есть, это только (для г-на, который не случилось) :

$ TARGET_BRANCH=develop sh ./.gitlab/autoMergeRequest.sh
No new merge request opened
...