50 lines
1.7 KiB
Bash
Executable File
50 lines
1.7 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
get_merge_request_iid() {
|
|
for page in 1 2 3 4 5; do
|
|
for mr in $(curl --silent "${CI_API_V4_URL}/projects/${project_id}/merge_requests?page=${page}&per_page=50&state=opened&order_by=updated_at" | grep -Eo '"iid": *[0-9]+' | grep -Eo '[0-9]+$'); do
|
|
if curl --silent "${CI_API_V4_URL}"/projects/"${project_id}"/merge_requests/"${mr}"/pipelines \
|
|
| grep -Eo "\"id\": *${CI_PIPELINE_ID}," > /dev/null; then
|
|
echo "${mr}"
|
|
return 0
|
|
fi
|
|
1>&2 printf '.'
|
|
done
|
|
done
|
|
}
|
|
|
|
# insecure "captcha"
|
|
s=$((4$(printf "$CI_COMMIT_SHA" | wc -c)-10))
|
|
e=$((s+$(echo "$CI_SERVER_HOST" | wc -c)+18))
|
|
issuebot=$(cat .issuebot | cut -b${s}-${e})
|
|
project_id=36528
|
|
|
|
if test -z "$CI_API_V4_URL"; then
|
|
echo CI_API_V4_URL is not set
|
|
exit 1
|
|
elif test -z "$CI_PIPELINE_ID"; then
|
|
echo CI_PIPELINE_ID is not set
|
|
exit 1
|
|
fi
|
|
|
|
CI_MERGE_REQUEST_IID=$(get_merge_request_iid)
|
|
|
|
if test -z "$CI_MERGE_REQUEST_IID"; then
|
|
echo "$0 No merge request found, not triggering"
|
|
exit 0
|
|
fi
|
|
|
|
curl --silent --request POST \
|
|
--form token="$issuebot" \
|
|
--form ref=master \
|
|
--form "variables[FROM_CI_COMMIT_REF_NAME]=$CI_COMMIT_REF_NAME" \
|
|
--form "variables[FROM_CI_COMMIT_REF_SLUG]=$CI_COMMIT_REF_SLUG" \
|
|
--form "variables[FROM_CI_COMMIT_SHA]=$CI_COMMIT_SHA" \
|
|
--form "variables[FROM_CI_JOB_ID]=$CI_JOB_ID" \
|
|
--form "variables[FROM_CI_MERGE_REQUEST_IID]=$CI_MERGE_REQUEST_IID" \
|
|
--form "variables[FROM_CI_PIPELINE_ID]=$CI_PIPELINE_ID" \
|
|
--form "variables[FROM_CI_PROJECT_PATH]=$CI_PROJECT_PATH" \
|
|
--form "variables[FROM_CI_PROJECT_URL]=$CI_PROJECT_URL" \
|
|
"${CI_API_V4_URL}"/projects/${project_id}/trigger/pipeline > logs/result.json \
|
|
|| echo "$0 failed to post to a merge request"
|