#!/bin/sh
#工作目录
BASE=/data/gitlab
#gitlab的accesstoken(从页面上创建)
GITLAB_ACCESSTOKEN=glpat-xxxxxxxxxxxxxxxxxxxxx
#gitlab的用户名
GITLAB_USERNAME=root
#gitlab的密码(已进行url编码)
GITLAB_PASSWORD=anchora%40123
#gitlab的ip:port
GITLAB_URL=10.0.4.68:39080

echo "设置git user.name和user.email"
apt install git git-lfs -y
git config --global user.name 'admin'
git config --global user.email 'admin@admin.com'

echo "为新部署的gitlab设置custom_http_clone_url_root=$GITLAB_URL,默认是不带端口的"
curl -X PUT -d "{\"custom_http_clone_url_root\": \"http://$GITLAB_URL\"}" --header "PRIVATE-TOKEN: $GITLAB_ACCESSTOKEN" --header "Content-Type: application/json" "http://$GITLAB_URL/api/v4/application/settings"

echo "开始进行创建项目"
jq -r 'to_entries[] | "\(.key) \(.value)"' json_params.json | while read name param; do
  	echo "开始创建$name项目"
        description=$(echo $param | jq -r ".description")
	response=$(curl --request POST --header "PRIVATE-TOKEN: $GITLAB_ACCESSTOKEN" --header 'Content-Type: application/json' \
               --data "{\"name\": \"$name\", \"description\": \"$description\", \"path\": \"$name\", \"lfs_enabled\":true}" --url "http://$GITLAB_URL/api/v4/projects/")
        id=$(echo "$response" | jq '.id')
	echo -e "\n创建$name项目完成，id为$id"

	echo $param | jq -r ".labels[]" | while read label; do
               echo "为项目$name添加label: $label"
               curl --request POST --header "PRIVATE-TOKEN: $GITLAB_ACCESSTOKEN" --header 'Content-Type: application/json'  \
                       --data "{\"name\":\"$label\", \"description\":\"$label\", \"color\":\"#6699cc\"}" --url "http://$GITLAB_URL/api/v4/projects/$id/labels/"
	       echo -e "\n项目$name添加label:$label 完成"
        done
        echo "----------------------"
done
echo "项目创建完成 下面进行数据传输操作"
cd $BASE
mkdir files
project_names="advertisegen alpaca_data chatglm2-6b llama-2-7b-hf sd-dataset"
#project_names="advertisegen alpaca_data"

# 下载并解压tar包
cd $BASE/files
wget http://123.157.234.230:10001/1/llmops/offline-tar/gitlab.tar
tar -xzf gitlab.tar

for item in $project_names; do
        cd $BASE/files
        # 删除原来的clone命令，使用解压后的目录
        mv $item $item-remote
        git lfs clone http://$GITLAB_USERNAME:$GITLAB_PASSWORD@$GITLAB_URL/$GITLAB_USERNAME/$item.git $item-local
        rm -rf $item-remote/.git
        cp -r $item-local/.git $item-remote
        cd $item-remote
        case $item in
        "advertisegen")
                git lfs track AdvertiseGen/*
                ;;
        "alpaca_data")
                git lfs track *.json
                ;;
        "chatglm2-6b")
                git lfs track *.bin
                ;;
        "llama-2-7b-hf")
                git lfs track *.safetensors *.bin
                ;;
        "sd-dataset")
                git lfs track *.arrow
                ;;
        esac
        git add *
        git commit -m 'commit'
        git push
done

echo "开始写入用户端环境变量"
cat <<EOF >> /opt/ai-deployer/ai/ai-manifests/ai-auto-deploy/common/config/user/env

#gitlab相关
GITLAB_API_URL=http://$GITLAB_URL
GITLAB_API_TOKEN=$GITLAB_ACCESSTOKEN
GITLAB_DEFAULT_BRANCH=main
GITLAB_USERNAME=root
GITLAB_PASSWORD=$GITLAB_PASSWORD
EOF

cat <<EOF >> /opt/ai-deployer/ai/ai-manifests/ai-auto-deploy/templates/user.env.template

#gitlab相关
GITLAB_API_URL=http://$GITLAB_URL
GITLAB_API_TOKEN=$GITLAB_ACCESSTOKEN
GITLAB_DEFAULT_BRANCH=main
GITLAB_USERNAME=root
GITLAB_PASSWORD=$GITLAB_PASSWORD
EOF


echo "操作完成，请到页面确认是否正确，再删除$BASE/files文件夹。"
