NEW Addition to gitlab-ci for creating merge reqeusts

This commit is contained in:
Jared Kipe
2019-08-06 09:29:22 -07:00
parent 247ce359ed
commit e3e6e2de57
2 changed files with 68 additions and 0 deletions

58
.gitlab-ci-automerge.sh Executable file
View File

@@ -0,0 +1,58 @@
#!/bin/sh
set -e
set -x
echo "Processing for merge requests."
HOST="${HOST}api/v4/projects/"
TARGET_BRANCH=$RELEASE
BODY="{
\"id\": ${CI_PROJECT_ID},
\"source_branch\": \"${CI_COMMIT_REF_NAME}\",
\"target_branch\": \"${TARGET_BRANCH}\",
\"remove_source_branch\": true,
\"title\": \"WIP RELEASE: ${CI_COMMIT_REF_NAME}\",
\"assignee_id\":\"${GITLAB_USER_ID}\"
}";
LISTMR=`curl --silent "${HOST}${CI_PROJECT_ID}/merge_requests?state=opened" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}"`;
MATCHES=`echo ${LISTMR} | jq ".[] | {target_branch: .target_branch | match(\"${TARGET_BRANCH}\"), source_branch: .source_branch | match(\"${CI_COMMIT_REF_NAME}\")}"`;
# No MR found, let's create a new one
if [ -z "${MATCHES}" ]; then
curl -X POST "${HOST}${CI_PROJECT_ID}/merge_requests" \
--header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" \
--header "Content-Type: application/json" \
--data "${BODY}";
echo "Opened a new merge request: WIP RELEASE: ${CI_COMMIT_REF_NAME} and assigned to you";
fi
# Test
TARGET_BRANCH="${RELEASE}-test"
BODY="{
\"id\": ${CI_PROJECT_ID},
\"source_branch\": \"${CI_COMMIT_REF_NAME}\",
\"target_branch\": \"${TARGET_BRANCH}\",
\"remove_source_branch\": false,
\"title\": \"WIP TEST: ${CI_COMMIT_REF_NAME}\",
\"assignee_id\":\"${GITLAB_USER_ID}\"
}";
LISTMR=`curl --silent "${HOST}${CI_PROJECT_ID}/merge_requests?state=opened" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}"`;
MATCHES=`echo ${LISTMR} | jq ".[] | {target_branch: .target_branch | match(\"${TARGET_BRANCH}\"), source_branch: .source_branch | match(\"${CI_COMMIT_REF_NAME}\")}"`;
# No MR found, let's create a new one
if [ -z "${MATCHES}" ]; then
curl -X POST "${HOST}${CI_PROJECT_ID}/merge_requests" \
--header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" \
--header "Content-Type: application/json" \
--data "${BODY}";
echo "Opened a new merge request: WIP TEST: ${CI_COMMIT_REF_NAME} and assigned to you";
fi

View File

@@ -21,6 +21,16 @@ before_script:
- git submodule sync --recursive
- git submodule update --init --recursive
merge_request:
before_script:
- apk add curl jq
stage: build
only:
- /(^new\/)|(^mig\/)|(^imp\/)|(^fix\/)/
script:
- ls -lah
- RELEASE=$(echo $CI_COMMIT_REF_NAME | sed "s{.*\/\(.*\)\/.*{\1{g") HOST=$(echo $CI_PROJECT_URL | sed 's{\(^https://[^/]*/\).*{\1{g') CI_PROJECT_ID=${CI_PROJECT_ID} CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} GITLAB_USER_ID=${GITLAB_USER_ID} PRIVATE_TOKEN=${PRIVATE_TOKEN} ./.gitlab-ci-automerge.sh
build:
stage: build
script: