通过脚本,发起分支合并请求和打tag

#!/bin/bash

Set GitLab API URL and access token

GITLAB_API_URL="http://IP/api/v4"

ACCESS_TOKEN="Token秘钥"

Define repository IDs

declare -A repo_ids=(

"git@IP:kingmq/client.git"="123"

"git@IP:kingmq/server.git"="456"

)

Function: Create a merge request

create_merge_request() {

local repo=$1

local src_branch=$2

local dest_branch=$3

local title=$4

local description=$5

local repo_id={repo_ids\[repo]}

echo "Creating a merge request from src_branch to dest_branch for repository $repo"

Make API request to create a merge request

response=(curl -s --request POST --header "PRIVATE-TOKEN: ACCESS_TOKEN" --data "source_branch=src_branch\&target_branch=dest_branch&title=title\&description=description" "GITLAB_API_URL/projects/repo_id/merge_requests")

Parse the response to get the merge request URL

merge_request_url=(echo "response" | python -c 'import sys, json; print(json.load(sys.stdin)"web_url")')

echo "Merge request created: $merge_request_url"

}

create_tag() {

local repo=$1

local branch=$2

local tag_name=$3

local tag_message=$4

local repo_id={repo_ids\[repo]}

echo "Creating tag tag_name on branch branch for repository $repo"

获取分支的提交 SHA

commit_sha=(curl -s --header "PRIVATE-TOKEN: ACCESS_TOKEN" "GITLAB_API_URL/projects/repo_id/repository/branches/$branch" | python -c 'import sys, json; print(json.load(sys.stdin)"commit""id")')

创建标签

response=(curl -s --request POST --header "PRIVATE-TOKEN: ACCESS_TOKEN" --data "tag_name=tag_name\&ref=commit_sha&message=tag_message" "GITLAB_API_URL/projects/$repo_id/repository/tags")

echo "Tag created: $response"

}

Interactive repository selection

select_repo() {

PS3="Select a repository: "

select repo in "kingmq-client" "kingmq-common" "kingmq-kmf" "kingmq-server" "Exit"; do

case $repo in

"Exit")

exit 0

;;

*)

break

;;

esac

done

repo_url="git@IP:XXX/$repo.git"

}

main(){

echo -e "输入 \n\

1: Merge from release to main \n\

4: release分支打标签 \n\

其他:取消"

read -p "请输入 " args

case $args in

title="合并release到main"

description="合并release到main"

select_repo

create_merge_request "repo_url" "release" "main" "title" "$description"

;;

echo "请输入tag编号:"

read version

title="$version"

description="baseline-$version"

select_repo

create_tag "repo_url" "release" "title" "$description"

;;

*)

echo "Invalid option: $1"

echo "Usage: $0 {1|2}"

exit 1

;;

esac

}

#开始执行

main $*

相关推荐
梦想三三2 小时前
LangChain Output Parser 实战:从字符串到结构化数据的完整指南
android·服务器·langchain·github·uv
TunerT_TQ2 小时前
Valhalla 静态工程审阅 #009|Continue 源码证据驱动评测【大厂开源基础设施特辑】
vscode·测试工具·开源·llm·github·jetbrains·ai编程助手
TunerT_TQ2 小时前
Valhalla 静态工程审阅 #008|RisingWave 源码证据驱动评测【大厂开源基础设施特辑】
rust·开源·github·实时数据处理·流式数据库·apacheflink·streamingsql
孪生质数-5 小时前
AI Agent 工程实践(一):大模型 API 接入示范
网络·人工智能·ai·chatgpt·github·claude·claudecode
fthux6 小时前
装闭 RenoPit 源码解析(13):生成AI装修闭坑PDF报告
人工智能·ai·pdf·开源·github
TunerT_TQ6 小时前
Valhalla 静态工程审阅 #007|AgentENV 源码证据驱动评测【大厂开源基础设施特辑】
rust·开源·go·github·sandbox·分布式系统·ai基础设施
小泊客7 小时前
友善R5C刷OpenWrt后RTL8822CE无线网卡显示“禁用”或“未激活”的完整解决方案
linux·github·运维开发
tokenKe8 小时前
OpenWork:把 AI Agent 工作台 从订阅制变成开源 + 本地的革命 | SSP Github Daily
人工智能·开源·github
yanlaifan8 小时前
Github有没有类似GitLab CI/CD的功能
github
蓝斯4978 小时前
C# 调用邮箱应用发送带附件的邮件
网络·c#·github