Devops系列之对接Gerrit的设计与实现(二)-- shell编程实现

发布于:2025-04-16 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、背景

本文先通过一个shell命令,讲述如何创建gerrit项目,下一篇文章我们将使用java语言实现。

二、使用shell脚本创建gerrit项目

分为以下几步:

  • 第一、创建负责人组;
  • 第二、创建开发者组;
  • 第三、创建项目;
  • 第四、给项目赋权限。

在这里插入图片描述

前三步都比较简单,复杂的点主要在于权限这块。

#!/bin/bash
#
# 创建gerrit项目
#
# ./create_gerrit_project.sh user-service
#
# 参数说明:
# 
# service-name: 项目名称

project_name=$1

die() {
   
    echo $1
    exit 1
}

[[ -z "$project_name" ]] && die "请输入项目名称"

group_owner_id="34dd8f718972d73c9a3474b2sfad2d52x2cf596f"
GERRIT_USER_PWD="admin:123456"
GERRIT_ADDR="http://192.168.5.60:8080/a"

# 1、创建负责人分组
owner_group_name="$project_name-owner"

rsp=$(curl -u $GERRIT_USER_PWD -s -X PUT "${GERRIT_ADDR}/groups/${owner_group_name}" -H "content-type: application/json" -d "{  \"description\": \"${owner_group_name}\", \"visible_to_all\": false, \"owner_id\": \"${group_owner_id}\"}")

owner_group_id=$(echo "${rsp:5}" | jq '.id' | sed 's#"##g')

# 2、创建开发者分组
dev_group_name="$project_name-dev"

rsp=$(curl -u $GERRIT_USER_PWD -s -X PUT "${GERRIT_ADDR}/groups/${dev_group_name}" -H "content-type: application/json" -d "{  \"description\": \"${dev_group_name}\", \"visible_to_all\": false, \"owner_id\": \"${owner_group_id}\"} ")

dev_group_id=$(echo "${rsp:5}" | jq '.id' | sed 's#"##g')

# 3、创建项目
real_project_name="root%2F${project_name}"

rsp=$(curl -u $GERRIT_USER_PWD -s -X PUT "${GERRIT_ADDR}/projects/${real_project_name}" -H "content-type: application/json" -d "{  \"description\": \"${project_name}\", \"submit_type\": \"INHERIT\", \"owners\": [ \"${owner_group_name}\" ]} ")

echo $rsp

# 4、设置权限
rsp=$(curl -u $GERRIT_USER_PWD -s -X POST "${GERRIT_ADDR}/projects/${real_project_name}/access" \
    -H "content-type: application/json" \
    -d "{ \"add\": { \
            \"refs/*\": { \
                \"