312 lines
13 KiB
Bash
312 lines
13 KiB
Bash
#!/bin/bash
|
||
|
||
origin_path=`pwd`
|
||
env=$1
|
||
actionOrg=""
|
||
|
||
OS=$(uname)
|
||
|
||
auto_slash=""
|
||
|
||
case "$OS" in
|
||
Linux) # 在 Linux 系统上运行
|
||
;;
|
||
Darwin) # 在 macOS 系统上运行
|
||
;;
|
||
CYGWIN*|MINGW32*|MSYS*|MINGW*) # 在 Windows 系统上运行
|
||
auto_slash="/" # 将 $auto_slash
|
||
;;
|
||
*)
|
||
echo "Unknown OS: $OS" # 在其他系统上运行
|
||
;;
|
||
esac
|
||
|
||
check_package() {
|
||
# 检查docker是否安装
|
||
if which docker > /dev/null; then
|
||
echo "Docker已经安装。"
|
||
else
|
||
echo "Docker未安装。"
|
||
fi
|
||
|
||
# 检查curl是否安装
|
||
if which curl > /dev/null; then
|
||
echo "Curl已经安装。"
|
||
else
|
||
echo "Curl未安装"
|
||
fi
|
||
|
||
# 检查git是否安装
|
||
if which git > /dev/null; then
|
||
echo "Git已经安装。"
|
||
else
|
||
echo "Git未安装"
|
||
fi
|
||
exit
|
||
}
|
||
|
||
start_static_server() {
|
||
echo "开始构建静态资源服务镜像"
|
||
cd $origin_path
|
||
docker build -t my-static .
|
||
# 检查上一个命令的退出状态
|
||
if [ $? -eq 0 ]; then
|
||
echo "构建静态资源服务镜像成功。"
|
||
docker run --name my-action-static -d -p $staticServerPort:81 -v $auto_slash$origin_path/data:/usr/share/nginx/data my-static
|
||
# 检查容器是否实际在运行
|
||
if docker ps --format "{{.Names}}" | grep -q my-action-static; then
|
||
echo "构建静态资源服务正在运行。"
|
||
else
|
||
echo "构建静态资源服务没有运行。"
|
||
fi
|
||
else
|
||
echo "构建静态资源服务镜像失败。"
|
||
fi
|
||
}
|
||
|
||
check_static_server() {
|
||
echo "检查静态资源服务是否启动"
|
||
container_running=$(docker inspect -f '{{.State.Running}}' my-action-static)
|
||
if [ "$container_running" = "true" ]; then
|
||
echo "静态资源服务已启动"
|
||
docker stop my-action-static
|
||
docker rm my-action-static
|
||
start_static_server
|
||
else
|
||
echo "静态资源服务未启动"
|
||
start_static_server
|
||
fi
|
||
exit
|
||
}
|
||
|
||
create_organization() {
|
||
echo "开始创建 $actionOrg 组织"
|
||
response=$(curl --location --request POST ${forgeDomain}/api/organizations.json \
|
||
--header "Cookie: autologin_trustie=${adminAutologinTrustie}" \
|
||
--header "Content-Type: application/json" \
|
||
--data-raw "{
|
||
\"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAA9CAYAAAAeYmHpAAAAAXNSR0IArs4c6QAACY5JREFUaEPtmX1sVfUZx7/PbamlodhbQAgS3jKdArag/rVsOjJYMsd4maFpshmkbCYM9ocsSJQRLjPZwkaYiWK2jKaowOVlNmYIVZGFkU0HLgQNMHkZIbxPFiylLe09v+d5lt8597b3nnvP5fRiRUpvwl/cnvv7nOf7fJ+XH+EO/NAdyIx+6Dsl6v2R7o90H34D/fLuw8HNQLslkf72AX2aDRpYABWs+fAxWvplvvBbBm0MGoQB1TsI2nG0QS00qD/SX4bMe03es0/pj7kUjTtGUrsfxOa0Y5KR1uxIP7RDHzCE4n/PoMO98RJ6BTqmGjl0Ck1s8KMdX6f/5YLOl9OTd+hsR1B6ZBZtua2gD55UZgYItOzRi1gbm0omBZAv0pObdJ0x+jMQPXV4Bm28zaDB1p1F8L4Y7CHFxqZqOmchLLQbaVuyGGs+fLy7ZFU3aQMzngZwO0Iru3XYgjOukND3m6rpnynorpwWyoTepXFmrb3tIm3BZv3Hk6mVOBhgoTO7q2lMFrTPyKqbdCsbrfnKQ889oiUDKvCY04x92ydSIgn9BDt4kQUPezLXM7urI13QXUZmO7JMeW9lgxpQbnnfu1FHgVF2fh4dLzTfvxD3fuaClrUqVlU0Y9WrE6k1dZiZJ7TeOFpnoy2Gzuye0h1pNm7uQn2RntykW02eSI95Q7/BBhXn5tOuWw59FWizxgTGxO1j6Kg90MzjWm8M6ljwKxXE36uiT29kZC40o8ZvZOPjuokc1DPjfmZcOvsTeqtXoZ9Vrfw90ZWgH7GRvgptcyPK9EjjWDrYBe1onQotvd6JDXsf9Wq2596a7L0zmxM3p1lrgMySNW6zfsyCgzBoVsXfzs7PA71NSyrOoyyRQFn7MrrgP3coeS9RvX8wcDJGZGOZ9bHQLYALDcG3to+hv7vQrrxh5b3w3YfoD+l1mhkNbJJTli+nhVGjvpI1brOqCIwK3lFC/dmngqGHrdNB166hkg3uWW5wMBbLPHco6MWiqoJ2Yay+S/D6SwPpdDq5F2m0WcPyQzsO6iQHdJ46HWdGrV/e4+KqriHa33Awxy/vWEwjFq5ytY5qB84mz/LbxC9pWUGRXiyizJRQ1Q8koYdEIv9lwl8ayr3cdaHVkzcpZUTaSWgdCS3c5Yt0kLyrmjQuJrtOj9ssauu+hSGhOSl5T4hpycXh+CF3yoMPN0dePDAILzDrKmVKEOMHnSvovQKhVV2nFcBKUgQtBCxYX05/7oZOGlkOeUcYC9/Ogk7O0yFLVlLecF9sBHNS8h4Z07LOexB3DGZWlmPg5St6zBgaLaKt93XSkKMxr4Smf0LL2zMpFzj1r7FhMD3ZBZ1L3kn3DoTO3YbG2aDWX6cttHsGyYQetk5HGMXF5EJii/3bpLdM7Xie9ubyoFDQi1jcfGKhV0REWDAUHDnVcDet6IbWNquCDHlbaEfrkE/evjY0r7xT0Gny9qDVhWZDh0V1kjCdguA7Hc9nek/qBYSEdo0MEcGDrEgYxgTHYNCGu73RrxD3ztuR5ajTQUbWFenu1HOHnI7naHpQiQ0FvZjdcoGSYkTbrmMCGVxJMC5tiFJzXnnnKVl53HtrzpIVV036SUZOj12nI64m5W3PaKVd3IohLbHgviIktHVv4K4BFG1vk5WskWJj8NFrUXr9RvJ2nBu4dw/lbR08EqEuI8uQt+c7uyraaO6FWPbGpkfytnXahS5GtL0dR1gwkhmNGyq6jSxnc3Jc6x2DuqKeuXegkaUime7efnmD8fPWpfRKvhY1XKRFVAxQMoCibQ7GIqGbjNCn6e7dAm0zfiOz8k5oXUQoq2S5A4e7985uQ4W1Rv1taFyUHYAViDjU1Zx48k4aGQMR0JCWJcHSti8jNLQXaYomgNJEO960TX9mydJkR5bdnBTlgM7Te8c5qDkJcG9H9KJdVrgvUWle2y+8tLs5IxNRG8XSARR9iaj5p6260zHoSJe3HTjcPbZkQgdFOrgj47gYytqcpDoyW0VAvpwWvZjqH1SpsXWJl3Y3B52s0yVtFC0qQnEzYb8oDvkjnVWnT2h9Iinv8G1oALSVt42mlXAOeRuv7/d68wh9r20JvXPT0FY6YHrWCO4VRp0o9mZBe31x+N7bTlm+G47qJo0bo7Xk24aOs9DGk3DE15xYeXd1izYFlDZ2tGMBcrSgPcppa2Qi9AmLVrndD5PPvXtmZHnlzVSbNU+nRzpfyXKjTVJ2HdErMWopuA21U5bNaXezqS68kGLu+nJq7O7IPCPLyOlkG5rLvV3oHO5d1cRxZar1u/fYzeI2SPYMSJN3ep1W0NvG0RnuBsehfR3L6fHCoTk51tloK/1VGB+wYtOGwd76J7U58WbYNHnbOp2vOXEhfCvgpuQK2FeyXOgc7j3yjzr0uoOLYrTYvihj8LKwVgjTaShmJZbTJ4VNWamBw6uDy4eXYm2MqCP1sK51UUCdDhw4ckDbSEuQvFN1Ok3eo9ZrZXsnzrPR0ujnNPByOY6x0dE2/wGa5yzPLl+h67QyrdVirHyVured6dBBzYl17+Ie1OkgeY+P634RHHKMPpPu3qkz2BXR5UXUOnS1jmwlPZ/aspQaGt4ao8/Sox0OmnW1CPZcLsbe7ZQ9lHfJ22BfEdO8LeO8kc7uyPJuTgLcO2dzskUXq+CccfAmOXgyaxu6TUtQQ4lhMR3UUoaVwigVRsmAIvzGP2KGgg6zDfUiTb+edA2rYsmFv7sYTOSep5nVWwyGvOGYuE0rSwei47PPcRUJzM23Ai5fo0ORwNAORRkROhIveGutHg0c+bob+3/2avbESQzadF9miXD33vmWCAHunSunU2cY/5qOFkHi9Hy6dKNz3VRzEubh9mondaWT+r6FvuFomR1p7wLP596pZ35tow4uuQo5uijbW8KcM3RzEvZh/u8VIu8gIyv0DAXX6UJ/0EJb9y5imr6zit5PPafrhiOHvKc0aa3DGg+KdKFn+cJzOuggM4/rc8ZBlBh/2llFp7Kgc1zgVb2rk8TBPGXsOTIreGi4GfhQ7l3oD8w+prPRjr1vTfF2aWGg7Xce2aFDjcH4j+fQgUJ/O9/f9Sp00A+ny9sOMWC8XORg1z++m33Z1vegvWntkggORAQr9k/L7pP7KLR3awGh6R9N6za73oBNPfOWy9u9I/NG0r4NPe1f+s3rnVgA9S4E3RlZ8bv90zLbxd6K9i2J9BMHdEQ74wEYwC4n7BRYChzaOzXT5fsUdG/BhH3uLYl02MP11vf6oXvrzX7Vnvt/Ho5bxf049+8AAAAASUVORK5CYII=\",
|
||
\"description\": \"${actionOrg}\",
|
||
\"name\": \"${actionOrg}\",
|
||
\"nickname\": \"${actionOrg}\",
|
||
\"visibility\": \"common\"
|
||
}")
|
||
if echo "$response" | grep -q '{"id":'; then
|
||
actionOrgID=$(echo "$response" | sed -n 's/.*"id":\([0-9]*\).*/\1/p')
|
||
|
||
echo "创建 $actionOrg 组织成功。"
|
||
else
|
||
echo "创建 $actionOrg 组织失败。"
|
||
fi
|
||
}
|
||
|
||
create_one_repository() {
|
||
echo "开始创建 $1 项目"
|
||
if curl --location --request POST ${forgeDomain}/api/projects.json \
|
||
--header "Cookie: autologin_trustie=${adminAutologinTrustie}" \
|
||
--header "Content-Type: application/json" \
|
||
--data-raw "{
|
||
\"user_id\": \"${actionOrgID}\",
|
||
\"name\": \"${1}\",
|
||
\"repository_name\": \"${1}\"
|
||
}" | grep -q '{"id":'; then
|
||
echo "创建 $1 项目成功。"
|
||
else
|
||
echo "创建 $1 项目失败。"
|
||
fi
|
||
}
|
||
|
||
create_repository() {
|
||
create_organization
|
||
if [ "$actionOrgID" = "" ]; then
|
||
exit
|
||
else
|
||
create_one_repository checkout
|
||
create_one_repository go-versions
|
||
create_one_repository node-versions
|
||
create_one_repository python-versions
|
||
create_one_repository setup-go
|
||
create_one_repository setup-java
|
||
create_one_repository setup-node
|
||
create_one_repository setup-python
|
||
fi
|
||
}
|
||
|
||
changeDefaultBranch() {
|
||
echo "开始更改 $1 项目的默认分支"
|
||
if curl --location --request PUT ${forgeDomain}/api/${actionOrg}/$1.json \
|
||
--header "Cookie: autologin_trustie=${adminAutologinTrustie}" \
|
||
--header "Content-Type: application/json" \
|
||
--data-raw "{
|
||
\"default_branch\": \"main\"
|
||
}" | grep -q '{"id":'; then
|
||
echo "更改 $1 项目的默认分支成功。"
|
||
else
|
||
echo "更改 $1 项目的默认分支失败。"
|
||
fi
|
||
}
|
||
|
||
push_repository() {
|
||
cd $origin_path/repository/go-versions
|
||
echo "正在对go-versions仓库进行服务地址替换"
|
||
git config --local user.name $author
|
||
git config --local user.email $authorEmail
|
||
git reset --hard 26d24036bc7e8039690dc3aed6352b0f70f64e23
|
||
sed -i "s|#{staticServerDomain}|${localIP}:${staticServerPort}|g" versions-manifest.json
|
||
git add versions-manifest.json
|
||
git commit -m "auto:更改服务地址"
|
||
echo "结束go-versions仓库服务地址替换"
|
||
echo "开始进行go-versions仓库推送"
|
||
git push -uf $pushRepositoryPrefix/$actionOrg/go-versions.git main
|
||
changeDefaultBranch go-versions
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/go-versions.git master
|
||
echo "结束go-versions仓库推送"
|
||
|
||
cd $origin_path/repository/node-versions
|
||
echo "正在对node-versions仓库进行服务地址替换"
|
||
git config --local user.name $author
|
||
git config --local user.email $authorEmail
|
||
git reset --hard 7c6a88bde64272f043e5543c734f1fe4b971e0ab
|
||
sed -i "s|#{staticServerDomain}|${localIP}:${staticServerPort}|g" versions-manifest.json
|
||
git add versions-manifest.json
|
||
git commit -m "auto:更改服务地址"
|
||
echo "结束node-versions仓库服务地址替换"
|
||
echo "开始进行node-versions仓库推送"
|
||
git push -uf $pushRepositoryPrefix/$actionOrg/node-versions.git main
|
||
changeDefaultBranch node-versions
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/node-versions.git master
|
||
echo "结束node-versions仓库推送"
|
||
|
||
cd $origin_path/repository/python-versions
|
||
echo "正在对python-versions仓库进行服务地址替换"
|
||
git config --local user.name $author
|
||
git config --local user.email $authorEmail
|
||
git reset --hard cf36223d60f3192d6cb3b5c72316c31c3148d931
|
||
sed -i "s|#{staticServerDomain}|${localIP}:${staticServerPort}|g" versions-manifest.json
|
||
git add versions-manifest.json
|
||
git commit -m "auto:更改服务地址"
|
||
echo "结束python-versions仓库服务地址替换"
|
||
echo "开始进行python-versions仓库推送"
|
||
git push -uf $pushRepositoryPrefix/$actionOrg/python-versions.git main
|
||
changeDefaultBranch python-versions
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/python-versions.git master
|
||
echo "结束go-versions仓库推送"
|
||
|
||
cd $origin_path/repository/checkout
|
||
echo "开始进行checkout仓库推送"
|
||
git push -u $pushRepositoryPrefix/$actionOrg/checkout.git --all
|
||
git push -u $pushRepositoryPrefix/$actionOrg/checkout.git --tags
|
||
changeDefaultBranch checkout
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/checkout.git master
|
||
echo "结束checkout仓库推送"
|
||
|
||
cd $origin_path/repository/setup-java
|
||
echo "开始进行setup-java仓库推送"
|
||
git push -u $pushRepositoryPrefix/$actionOrg/setup-java.git --all
|
||
git push -u $pushRepositoryPrefix/$actionOrg/setup-java.git --tags
|
||
changeDefaultBranch setup-java
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/setup-java.git master
|
||
echo "结束setup-java仓库推送"
|
||
|
||
cd $origin_path/repository/setup-go
|
||
echo "正在对setup-go仓库进行服务地址替换"
|
||
git config --local user.name $author
|
||
git config --local user.email $authorEmail
|
||
|
||
git reset --hard c2aa616d4ba735e5f411e7863de9acf43069fefe
|
||
sed -i "s|#{giteaDomain}|${giteaDomain}|g" dist/setup/index.js
|
||
git add dist/setup/index.js
|
||
git commit -m "auto:更改服务地址"
|
||
echo "结束setup-go仓库服务地址替换"
|
||
echo "开始进行setup-go仓库推送"
|
||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-go.git main
|
||
changeDefaultBranch setup-go
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/setup-go.git master
|
||
echo "结束setup-go仓库推送"
|
||
|
||
cd $origin_path/repository/setup-node
|
||
echo "正在对setup-node仓库进行服务地址替换"
|
||
git config --local user.name $author
|
||
git config --local user.email $authorEmail
|
||
|
||
git reset --hard 891a2112adc2599da487d1c37d6833db6e5b47f2
|
||
sed -i "s|#{giteaDomain}|${giteaDomain}|g" dist/setup/index.js
|
||
git add dist/setup/index.js
|
||
git commit -m "auto:更改服务地址"
|
||
echo "结束setup-node仓库服务地址替换"
|
||
echo "开始进行setup-node仓库推送"
|
||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-node.git main
|
||
changeDefaultBranch setup-node
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/setup-node.git master
|
||
echo "结束setup-node仓库推送"
|
||
|
||
cd $origin_path/repository/setup-python
|
||
echo "正在对setup-python仓库进行服务地址替换"
|
||
git config --local user.name $author
|
||
git config --local user.email $authorEmail
|
||
|
||
git reset --hard 99501eecd2799097357cf35a11f9ebdae81f5a42
|
||
sed -i "s|#{giteaDomain}|${giteaDomain}|g" dist/setup/index.js src/install-python.ts
|
||
git add dist/setup/index.js src/install-python.ts
|
||
git commit -m "auto:更改服务地址"
|
||
echo "结束setup-python仓库服务地址替换"
|
||
echo "开始进行setup-python仓库推送"
|
||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-python.git main
|
||
changeDefaultBranch setup-python
|
||
git push --delete $pushRepositoryPrefix/$actionOrg/setup-python.git master
|
||
echo "结束setup-python仓库推送"
|
||
}
|
||
|
||
|
||
# 显示帮助信息的函数
|
||
show_help() {
|
||
echo "使用方法: $SCRIPT_NAME [环境变量] [选项]"
|
||
echo ""
|
||
echo "环境变量(示例):"
|
||
echo " local, 加载local.profile配置文件"
|
||
echo " test, 加载test.profile配置文件"
|
||
echo ""
|
||
echo "选项:"
|
||
echo " check_package, 检查是否安装包支持"
|
||
echo " check_static_server, 检查静态资源服务"
|
||
echo " create_repository, 创建actions相关的仓库"
|
||
echo " push_repository, 推送修改过地址的commit到仓库"
|
||
echo " import_node_data, 导入节点数据"
|
||
|
||
}
|
||
|
||
|
||
case "$env" in
|
||
*)
|
||
{
|
||
if [ -f "$env.profile" ]; then
|
||
. ./"${env}.profile"
|
||
else
|
||
show_help
|
||
echo "错误:环境配置文件 '$env.profile' 不存在。"
|
||
exit
|
||
fi
|
||
}
|
||
;;
|
||
esac
|
||
|
||
case "$2" in
|
||
"check_package")
|
||
check_package
|
||
;;
|
||
"check_static_server")
|
||
check_static_server
|
||
;;
|
||
"create_repository")
|
||
create_repository
|
||
;;
|
||
"push_repository")
|
||
push_repository
|
||
;;
|
||
"import_node_data")
|
||
import_node_data
|
||
;;
|
||
*)
|
||
show_help
|
||
;;
|
||
esac |