mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
GitLab Automerge script
This commit is contained in:
58
.gitlab-ci-automerge.sh
Executable file
58
.gitlab-ci-automerge.sh
Executable 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
|
||||||
|
|
||||||
|
|
||||||
@@ -18,6 +18,16 @@ before_script:
|
|||||||
- IMAGE_TAG=$(echo $CI_COMMIT_REF_SLUG | sed "s/^\([[:digit:]][[:digit:]]\)-\([[:digit:]]\)/\1\.\2/g")
|
- IMAGE_TAG=$(echo $CI_COMMIT_REF_SLUG | sed "s/^\([[:digit:]][[:digit:]]\)-\([[:digit:]]\)/\1\.\2/g")
|
||||||
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
|
||||||
|
|
||||||
|
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:
|
build:
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
|
|||||||
Reference in New Issue
Block a user