Мне нужно создать запрос на слияние от 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