美文网首页
线上自动创建并接受 GitLab 合并请求

线上自动创建并接受 GitLab 合并请求

作者: 林万程 | 来源:发表于2021-02-08 11:52 被阅读0次

gitlab-auto-merge

我的 GitHub 源码地址:https://github.com/LinWanCen/gitlab-auto-merge

线上自动创建并接受 GitLab 合并请求,不拉代码快速合并
Auto create and accept MR (Merge Requests) for GitLab online

使用指南

配置秘钥

在用户资料里看用户ID,在设置里配置“访问令牌” (access_tokens),勾选 api 权限

设置 用户ID 访问令牌

配置到环境变量

/etc/profile.d/gitlab_api.sh

export GITLAB_URL=http://你的URL前缀没有尾斜杠
export GITLAB_API_URL=${GITLAB_URL}/api/v4/projects
# ${GITLAB_URL}/profile
export GITLAB_USER_ID=你的用户ID(数字)
# ${GITLAB_URL}/profile/personal_access_tokens
export GITLAB_PRIVATE_TOKEN=你的Token

放置文件与授权

代码见文末

/var/lib/jenkins/workspace/tool/createMR.sh
/var/lib/jenkins/workspace/tool/acceptMR.sh
chmod 755 /var/lib/jenkins/workspace/tool/createMR.sh
chmod 755 /var/lib/jenkins/workspace/tool/acceptMR.sh

Jenkins 执行脚本

source /etc/profile 1>/dev/null 2>&1
export CI_PROJECT_ID=你的项目ID(数字)
export CI_COMMIT_REF_NAME=源分支名
export TARGET_BRANCH=目标分支名
/var/lib/jenkins/workspace/tool/createMR.sh
/var/lib/jenkins/workspace/tool/acceptMR.sh
项目ID

脚本代码

createMR.sh

/var/lib/jenkins/workspace/tool/createMR.sh

#!/usr/bin/env bash
set -e

# https://docs.gitlab.com/ee/api/merge_requests.html#create-mr

echo "
  curl -X POST \"${GITLAB_API_URL}/${CI_PROJECT_ID}/merge_requests\"
    --header \"PRIVATE-TOKEN: ******\"
    --header \"Content-Type: application/json\"
    --data
      \"{
        \\\"id\\\": ${CI_PROJECT_ID},
        \\\"source_branch\\\": \\\"${CI_COMMIT_REF_NAME}\\\",
        \\\"target_branch\\\": \\\"${TARGET_BRANCH}\\\",
        \\\"title\\\": \\\"jenkins auto merge requests\\\",
        \\\"assignee_id\\\":\\\"${GITLAB_USER_ID}\\\"
      }\"
    --silent
"

createMR=`curl -X POST "${GITLAB_API_URL}/${CI_PROJECT_ID}/merge_requests" \
  --header "PRIVATE-TOKEN:${GITLAB_PRIVATE_TOKEN}" \
  --header "Content-Type: application/json" \
  --data "{
      \"id\": ${CI_PROJECT_ID},
      \"source_branch\": \"${CI_COMMIT_REF_NAME}\",
      \"target_branch\": \"${TARGET_BRANCH}\",
      \"title\": \"jenkins auto merge requests\",
      \"assignee_id\":\"${GITLAB_USER_ID}\"
    }" \
  --silent`

echo "$createMR
"

createMR_iid=$(echo $createMR | cut -d ':' -f 3 | cut -d ',' -f 1)

if [[ $createMR_iid != *[0-9] ]]; then
  exit 1
fi

acceptMR.sh

/var/lib/jenkins/workspace/tool/acceptMR.sh

#!/usr/bin/env bash
set -e

# https://docs.gitlab.com/ee/api/merge_requests.html#list-project-merge-requests

echo "
curl \"${GITLAB_API_URL}/${CI_PROJECT_ID}/merge_requests?state=opened&source_branch=${CI_COMMIT_REF_NAME}\"
  --header \"PRIVATE-TOKEN:${GITLAB_PRIVATE_TOKEN}\"
  --silent 
"

listMR=`curl "${GITLAB_API_URL}/${CI_PROJECT_ID}/merge_requests?state=opened&source_branch=${CI_COMMIT_REF_NAME}" \
  --header "PRIVATE-TOKEN:${GITLAB_PRIVATE_TOKEN}" \
  --silent`

echo "$listMR
"

listMR_iid=$(echo $listMR | cut -d ':' -f 3 | cut -d ',' -f 1)

if [[ $listMR_iid != *[0-9] ]]; then
  exit 1
fi


# https://docs.gitlab.com/ee/api/merge_requests.html#accept-mr

echo "
curl -X PUT \"${GITLAB_API_URL}/${CI_PROJECT_ID}/merge_requests/$listMR_iid/merge\"
    --header \"PRIVATE-TOKEN: ******\"
    --silent
"

acceptMR=`curl -X PUT "${GITLAB_API_URL}/${CI_PROJECT_ID}/merge_requests/$listMR_iid/merge" \
  --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" \
  --silent`

echo "$acceptMR
"

acceptMR_iid=$(echo $acceptMR | cut -d ':' -f 3 | cut -d ',' -f 1)

if [[ $acceptMR_iid != *[0-9] ]]; then
  exit 1
fi

相关文章

  • 线上自动创建并接受 GitLab 合并请求

    gitlab-auto-merge 我的 GitHub 源码地址:https://github.com/LinWa...

  • python调用gitlab api自动合并分支

    此脚本实现的功能是自动合并gitlab的分支整个过程通过python-gitlab库实现1 创建一个merge r...

  • GitLab合并请求报错

    gitlab合并请求时报错:The form contains the following error:Valid...

  • RxSwift(IV)

    网络请求合并 RxSwift 网络请求封装网络安全请求合并: 打印: 参考资料: 观察序列创建

  • 部署自动打包环境

    部署自动打包环境 概述 基于Gitlab-CICD配置的自动打包环境。 在Gitlab上创建Tag时,会执行包含D...

  • Gitlab简单使用一

    注册Gitlab用户并创建远程仓库 使用Gitlab之前需搭建好Gitlab服务器,搭建好之后访问Gitlab服务...

  • Gitlab发起合并请求

    这个已经合并过了,不能点了 到此结束

  • Excel 实用方法

    1、合并单元格中自动填充序号: 2、取消合并单元格并自动填充:

  • 一个简单应用

    引入require,通过require指令载入nodejs. 创建服务器:用来监听客户端请求 接受并响应请求 在终...

  • gitlab创建,合并,切换分支

    前言 如今的项目,规模越来越大,功能也越来越多,需要有一个团队进行开发。如果有多个开发人员共同开发一个项目,如何进...

网友评论

      本文标题:线上自动创建并接受 GitLab 合并请求

      本文链接:https://www.haomeiwen.com/subject/xlvxxltx.html