action_deploy/start.sh

312 lines
13 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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,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\",
\"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