Merge branch 'imp/11.0/gitlab_automerge' into '11.0'

imp/11.0/gitlab_automerge into 11.0

See merge request hibou-io/hibou-odoo/suite!66
This commit is contained in:
Jared Kipe
2019-09-03 20:32:44 +00:00
2 changed files with 11 additions and 65 deletions

View File

@@ -1,58 +0,0 @@
#!/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

@@ -17,21 +17,23 @@ before_script:
- RELEASE=$(echo $CI_COMMIT_REF_NAME | sed "s{.*\/\(.*\)\/.*{\1{g") - RELEASE=$(echo $CI_COMMIT_REF_NAME | sed "s{.*\/\(.*\)\/.*{\1{g")
- 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
- apk add git
- git submodule sync --recursive
- git submodule update --init --recursive
merge_request: merge_request:
before_script: variables:
- apk add curl jq GIT_STRATEGY: none
stage: build stage: build
only: only:
- /(^new\/)|(^mig\/)|(^imp\/)|(^fix\/)/ - /(^new\/)|(^mig\/)|(^imp\/)|(^fix\/)/
script: script:
- ls -lah - docker pull registry.gitlab.com/hibou-io/hibou-odoo/flow
- 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 - docker tag registry.gitlab.com/hibou-io/hibou-odoo/flow flow
- ENVS=`env | grep "CI_\|GITLAB_" | sed -n '/^[^\t]/s/=.*//p' | sed '/^$/d' | sed 's/^/-e /g' | tr '\n' ' '`
- docker run $ENVS flow gitlab-automerge --target-branch "${RELEASE}-test" --automerge
- docker run $ENVS flow gitlab-automerge --remove-source
build: build:
variables:
GIT_SUBMODULE_STRATEGY: recursive
stage: build stage: build
script: script:
- sed -i "s/RELEASE/$RELEASE/g" Dockerfile-GitLab - sed -i "s/RELEASE/$RELEASE/g" Dockerfile-GitLab
@@ -39,6 +41,8 @@ build:
- docker push $CONTAINER_IMAGE:$IMAGE_TAG - docker push $CONTAINER_IMAGE:$IMAGE_TAG
trigger: trigger:
variables:
GIT_STRATEGY: none
stage: trigger stage: trigger
script: script:
- docker run byrnedo/alpine-curl curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=$RELEASE $GITLAB_BASE_URL/api/v4/projects/$ENTERPRISE_PROJECT_ID/trigger/pipeline - docker run byrnedo/alpine-curl curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=$RELEASE $GITLAB_BASE_URL/api/v4/projects/$ENTERPRISE_PROJECT_ID/trigger/pipeline