当前位置: 首页 > news >正文

通过脚本,发起分支合并请求和打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 
        1)
            title="合并release到main"
            description="合并release到main"
            select_repo
            create_merge_request "$repo_url" "release" "main" "$title" "$description"
            ;;
        2)
            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 $*

http://www.lryc.cn/news/485840.html

相关文章:

  • 【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比分析...
  • 网络安全在线网站/靶场:全面探索与实践
  • Ceph 中Crush 算法的理解
  • D70【 python 接口自动化学习】- python 基础之数据库
  • C# LINQ数据访问技术
  • 【JavaSE线程知识总结】
  • FreeRTOS内存管理
  • 利用服务工作线程serviceWorker缓存静态文件css,html,js,图片等的方法,以及更新和删除及版本控制
  • MuMu模拟器安卓12安装Xposed 框架
  • 高级数据结构——hash表与布隆过滤器
  • 【网络】什么是交换机?switch
  • 软件测试 —— 自动化基础
  • 深入解析 OpenHarmony 构建系统-4-OHOSLoader类
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】实现 MVP 架构
  • 排序算法(基础)大全
  • Pytest从入门到精通
  • 《C++ 实现生成多个弹窗程序》
  • react 中 useRef Hook 作用
  • Scala-键盘输入(StdIn)-用法详解
  • 力扣(LeetCode)283. 移动零(Java)
  • ESP32C3单片机使用笔记---烧录MicroPython
  • Matter1.4重磅来袭,智能家居进入“互联”新纪元
  • tdengine学习笔记
  • 机器学习-36-对ML的思考之机器学习研究的初衷及科学研究的期望
  • Linux 进程信号的产生
  • CentOS8 在MySQL8.0 实现半同步复制
  • 数据分析——Python绘制实时的动态折线图
  • 【Redis】Redis的一些应用场景及使用策略
  • CentOS 8 安装 chronyd 服务
  • HarmonyOS ArkUI(基于ArkTS) 常用组件