Compare commits
3 Commits
master
...
factory_ho
| Author | SHA1 | Date |
|---|---|---|
|
|
a82d36a2b1 | |
|
|
370982f6f4 | |
|
|
1b62854dca |
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
|
@ -1,14 +1,12 @@
|
|||
author=yystopf
|
||||
authorEmail=yystopf@163.com
|
||||
actionOrg=auto_actions
|
||||
adminAutologinTrustie=1158fea8e2a39bacde8243fa84f70704777004ba
|
||||
forgeDomain=http://172.20.32.201:4000
|
||||
forgeDatabaseHost=172.20.32.201
|
||||
forgeDatabasePort=3306
|
||||
forgeDatabaseUsername=root
|
||||
forgeDatabasePassword=gitlinK#%01
|
||||
forgeDatabase=forgeplus
|
||||
pushRepositoryPrefix=http://yystopf:a19960425@172.20.32.201:10082
|
||||
giteaDomain=http://172.20.32.201:10082
|
||||
localIP=http://172.20.32.201
|
||||
adminAutologinTrustie=189329ab21ec01c694c5dc09ded4ba601cf3d482
|
||||
forgeDomain=http://172.20.32.184:4000
|
||||
pmsDomain=http://172.20.32.184:8000
|
||||
pushRepositoryPrefix=http://innov:12345678@172.20.32.184:3000
|
||||
giteaDomain=http://172.20.32.184:3000
|
||||
localIP=http://172.20.32.184
|
||||
staticServerPort=81
|
||||
username=innov
|
||||
password=12345678
|
||||
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
Subproject commit 692973e3d937129bcbf40652eb9f2f61becf3332
|
||||
Subproject commit f798d6dc9294d9c33be862758a9e03b33b5fc6a1
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit eb6308df8003bd1c0606b477b0ca23ff7939a491
|
||||
Subproject commit 26d24036bc7e8039690dc3aed6352b0f70f64e23
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit dd85d99b39a8d0f292183489c0de4822f188e178
|
||||
Subproject commit 6107ff42f4e7d9ec22a16bb79a19abb7e1a37cbc
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 5324fa469527bb1c6dbb5b4e6df45f55e6fc63b4
|
||||
Subproject commit bce37e4ec2020d32f8b9b7e58d9e304dec86c430
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit b955dae351b544b1acc6a0a678da4d486b8bb5f6
|
||||
Subproject commit 9b8ef236f0bc800c0d2c502da2ae2979fbb0c7c6
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit c0cd5dd80a59186bd9af50cf120296e19052e225
|
||||
Subproject commit 4fe33c20d9beadd497e90a99a07ddb7cbc1a3a91
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit f774f860562cdd3de5bd035d2a11280cdaad0455
|
||||
Subproject commit f2b7eb7bc38dc88152874c11be2b56b4190c9da2
|
||||
182
start.sh
182
start.sh
|
|
@ -4,6 +4,7 @@ origin_path=`pwd`
|
|||
env=$1
|
||||
actionOrg=""
|
||||
|
||||
|
||||
OS=$(uname)
|
||||
|
||||
auto_slash=""
|
||||
|
|
@ -45,13 +46,28 @@ check_package() {
|
|||
exit
|
||||
}
|
||||
|
||||
check_build_exists() {
|
||||
docker image inspect "my-static:latest" > /dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
start_static_server() {
|
||||
echo "开始构建静态资源服务镜像"
|
||||
cd $origin_path
|
||||
if check_build_exists; then
|
||||
echo "✅ Image $my-static:latest exists"
|
||||
else
|
||||
echo "⚠️ Image my-static:latest not found"
|
||||
docker build -t my-static .
|
||||
# 检查上一个命令的退出状态
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "构建静态资源服务镜像成功。"
|
||||
|
||||
# 验证构建是否成功
|
||||
if check_build_exists; then
|
||||
echo "🎉 Image built successfully"
|
||||
else
|
||||
echo "❌ Failed to build image my-static:latest" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
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
|
||||
|
|
@ -59,9 +75,6 @@ start_static_server() {
|
|||
else
|
||||
echo "构建静态资源服务没有运行。"
|
||||
fi
|
||||
else
|
||||
echo "构建静态资源服务镜像失败。"
|
||||
fi
|
||||
}
|
||||
|
||||
check_static_server() {
|
||||
|
|
@ -79,12 +92,16 @@ check_static_server() {
|
|||
exit
|
||||
}
|
||||
|
||||
make_login_action() {
|
||||
echo "开始登陆操作"
|
||||
curl -c cookies.txt $forgeDomain/api/accounts/login.json -H 'Content-type:application/json' -d '{"login":"'"$username"'","password":"'"$password"'","autologin":1}'
|
||||
}
|
||||
|
||||
create_organization() {
|
||||
echo "开始创建 $actionOrg 组织"
|
||||
response=$(curl --location --request POST ${forgeDomain}/api/organizations.json \
|
||||
--header "Cookie: autologin_trustie=${adminAutologinTrustie}" \
|
||||
response=$(curl -b cookies.txt --location --request POST ${forgeDomain}/api/organizations.json \
|
||||
--header "Content-Type: application/json" \
|
||||
--data-raw "{
|
||||
--data "{
|
||||
\"image\": \"data:image/png;base64,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\",
|
||||
\"description\": \"${actionOrg}\",
|
||||
\"name\": \"${actionOrg}\",
|
||||
|
|
@ -93,23 +110,54 @@ create_organization() {
|
|||
}")
|
||||
if echo "$response" | grep -q '{"id":'; then
|
||||
actionOrgID=$(echo "$response" | sed -n 's/.*"id":\([0-9]*\).*/\1/p')
|
||||
|
||||
echo "创建 $actionOrg 组织成功。"
|
||||
response=$(curl -b cookies.txt --location --request POST ${pmsDomain}/api/pms/pmsEnterprise/createByGitlinkOrgId/${actionOrgID} \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "[{
|
||||
\"roleKey\": \"pms_org_admin\",
|
||||
\"userId\": 1
|
||||
}]")
|
||||
if echo "$response" |grep -q '{"code":200'; then
|
||||
echo ""创建 $actionOrg 组织成功。""
|
||||
else
|
||||
echo "创建 $actionOrg 组织失败。"
|
||||
fi
|
||||
else
|
||||
echo "创建 $actionOrg 组织失败。"
|
||||
fi
|
||||
}
|
||||
|
||||
create_pms_project() {
|
||||
echo "开始创建项目管理项目"
|
||||
response=$(curl -b cookies.txt --location --request POST ${pmsDomain}/api/pms/${actionOrg}/pmsProject \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "{
|
||||
\"projectName\": \"actions\",
|
||||
\"projectAssigneeId\": \"1\",
|
||||
\"startTime\": \"2024-08-15T00:00:00\",
|
||||
\"endTime\": \"2025-08-15T23:59:59\"
|
||||
}")
|
||||
echo $response
|
||||
if echo "$response" | grep -q '{"msg":"操作成功"'; then
|
||||
pmsProjectId=$(echo "$response" | sed -n 's/.*"data":\([0-9]*\).*/\1/p')
|
||||
echo "创建项目成功。"
|
||||
else
|
||||
echo "创建项目失败。"
|
||||
fi
|
||||
}
|
||||
|
||||
create_one_repository() {
|
||||
echo "开始创建 $1 项目"
|
||||
if curl --location --request POST ${forgeDomain}/api/projects.json \
|
||||
--header "Cookie: autologin_trustie=${adminAutologinTrustie}" \
|
||||
response=$(curl -b cookies.txt --location --request POST ${pmsDomain}/api/pms/${actionOrg}/pmsProjectRepository/addRepository \
|
||||
--header "Content-Type: application/json" \
|
||||
--data-raw "{
|
||||
--data "{
|
||||
\"user_id\": \"${actionOrgID}\",
|
||||
\"name\": \"${1}\",
|
||||
\"repository_name\": \"${1}\"
|
||||
}" | grep -q '{"id":'; then
|
||||
\"pms_project_id\": \"${pmsProjectId}\",
|
||||
\"private\": \"false\",
|
||||
\"repository_name\": \"${1}\",
|
||||
\"name\": \"${1}\"
|
||||
}")
|
||||
echo $response
|
||||
if echo "$response" | grep -q '{"id":'; then
|
||||
echo "创建 $1 项目成功。"
|
||||
else
|
||||
echo "创建 $1 项目失败。"
|
||||
|
|
@ -117,27 +165,40 @@ create_one_repository() {
|
|||
}
|
||||
|
||||
create_repository() {
|
||||
make_login_action
|
||||
create_organization
|
||||
if [ "$actionOrgID" = "" ]; then
|
||||
exit
|
||||
else
|
||||
create_pms_project
|
||||
if [ "$pmsProjectId" = "" ]; then
|
||||
exit
|
||||
else
|
||||
create_one_repository checkout
|
||||
create_one_repository go-versions
|
||||
create_one_repository log_match_action
|
||||
create_one_repository node-versions
|
||||
create_one_repository publish-releases-action
|
||||
create_one_repository python-versions
|
||||
create_one_repository run_pipeline_action
|
||||
create_one_repository scp-action
|
||||
create_one_repository setup-cpp
|
||||
create_one_repository setup-go
|
||||
create_one_repository setup-java
|
||||
create_one_repository setup-maven
|
||||
create_one_repository setup-node
|
||||
create_one_repository setup-python
|
||||
create_one_repository ssh-action
|
||||
create_one_repository upload-artifact-zpk
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
changeDefaultBranch() {
|
||||
echo "开始更改 $1 项目的默认分支"
|
||||
if curl --location --request PUT ${forgeDomain}/api/${actionOrg}/$1.json \
|
||||
--header "Cookie: autologin_trustie=${adminAutologinTrustie}" \
|
||||
if curl -b cookies.txt --location --request PUT ${forgeDomain}/api/${actionOrg}/$1.json \
|
||||
--header "Content-Type: application/json" \
|
||||
--data-raw "{
|
||||
--data "{
|
||||
\"default_branch\": \"main\"
|
||||
}" | grep -q '{"id":'; then
|
||||
echo "更改 $1 项目的默认分支成功。"
|
||||
|
|
@ -158,8 +219,6 @@ push_repository() {
|
|||
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
|
||||
|
|
@ -173,8 +232,6 @@ push_repository() {
|
|||
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
|
||||
|
|
@ -188,24 +245,66 @@ push_repository() {
|
|||
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
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/checkout.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/checkout.git --tags
|
||||
echo "结束checkout仓库推送"
|
||||
|
||||
cd $origin_path/repository/log_match_action
|
||||
echo "开始进行log_match_action仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/log_match_action.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/log_match_action.git --tags
|
||||
echo "结束log_match_action仓库推送"
|
||||
|
||||
cd $origin_path/repository/publish-releases-action
|
||||
echo "开始进行publish-releases-action仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/publish-releases-action.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/publish-releases-action.git --tags
|
||||
echo "结束publish-releases-action仓库推送"
|
||||
|
||||
cd $origin_path/repository/run_pipeline_action
|
||||
echo "开始进行run_pipeline_action仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/run_pipeline_action.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/run_pipeline_action.git --tags
|
||||
echo "结束run_pipeline_action仓库推送"
|
||||
|
||||
cd $origin_path/repository/upload-artifact-zpk
|
||||
echo "开始进行upload-artifact-zpk仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/upload-artifact-zpk.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/upload-artifact-zpk.git --tags
|
||||
echo "结束upload-artifact-zpk仓库推送"
|
||||
|
||||
cd $origin_path/repository/scp-action
|
||||
echo "开始进行scp-action仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/scp-action.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/scp-action.git --tags
|
||||
echo "结束scp-action仓库推送"
|
||||
|
||||
cd $origin_path/repository/ssh-action
|
||||
echo "开始进行ssh-action仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/ssh-action.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/ssh-action.git --tags
|
||||
echo "结束ssh-action仓库推送"
|
||||
|
||||
cd $origin_path/repository/setup-cpp
|
||||
echo "开始进行setup-cpp仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-cpp.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-cpp.git --tags
|
||||
echo "结束setup-cpp"
|
||||
|
||||
cd $origin_path/repository/setup-maven
|
||||
echo "开始进行setup-maven仓库推送"
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-maven.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-maven.git --tags
|
||||
echo "结束setup-maven"
|
||||
|
||||
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
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-java.git --all
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-java.git --tags
|
||||
echo "结束setup-java仓库推送"
|
||||
|
||||
cd $origin_path/repository/setup-go
|
||||
|
|
@ -220,8 +319,6 @@ push_repository() {
|
|||
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
|
||||
|
|
@ -235,9 +332,7 @@ push_repository() {
|
|||
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
|
||||
git push -uf $pushRepositoryPrefix/$actionOrg/setup-node.git master
|
||||
echo "结束setup-node仓库推送"
|
||||
|
||||
cd $origin_path/repository/setup-python
|
||||
|
|
@ -245,15 +340,13 @@ push_repository() {
|
|||
git config --local user.name $author
|
||||
git config --local user.email $authorEmail
|
||||
|
||||
git reset --hard 99501eecd2799097357cf35a11f9ebdae81f5a42
|
||||
git reset --hard c147b8dcc12f4b88d2a3335458d1bd32024dda5e
|
||||
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仓库推送"
|
||||
}
|
||||
|
||||
|
|
@ -271,8 +364,6 @@ show_help() {
|
|||
echo " check_static_server, 检查静态资源服务"
|
||||
echo " create_repository, 创建actions相关的仓库"
|
||||
echo " push_repository, 推送修改过地址的commit到仓库"
|
||||
echo " import_node_data, 导入节点数据"
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -303,9 +394,6 @@ case "$2" in
|
|||
"push_repository")
|
||||
push_repository
|
||||
;;
|
||||
"import_node_data")
|
||||
import_node_data
|
||||
;;
|
||||
*)
|
||||
show_help
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,536 @@
|
|||
#!/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() {
|
||||
local has_error=0
|
||||
|
||||
# 检查docker是否安装
|
||||
if which docker > /dev/null; then
|
||||
echo "✅ Docker已经安装"
|
||||
else
|
||||
echo "❌ Docker未安装"
|
||||
has_error=1
|
||||
fi
|
||||
|
||||
# 检查curl是否安装
|
||||
if which curl > /dev/null; then
|
||||
echo "✅ Curl已经安装"
|
||||
else
|
||||
echo "❌ Curl未安装"
|
||||
has_error=1
|
||||
fi
|
||||
|
||||
# 检查git是否安装
|
||||
if which git > /dev/null; then
|
||||
echo "✅ Git已经安装"
|
||||
else
|
||||
echo "❌ Git未安装"
|
||||
has_error=1
|
||||
fi
|
||||
|
||||
if [ $has_error -eq 1 ]; then
|
||||
echo "❌ check_package: 缺少必要的依赖包,请安装后再试"
|
||||
return 1
|
||||
fi
|
||||
echo "✅ check_package: 所有依赖包检查通过"
|
||||
return 0
|
||||
}
|
||||
|
||||
check_build_exists() {
|
||||
docker image inspect "my-static:latest" > /dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
start_static_server() {
|
||||
echo "开始构建静态资源服务镜像"
|
||||
cd $origin_path
|
||||
if check_build_exists; then
|
||||
echo "✅ Image my-static:latest exists"
|
||||
else
|
||||
echo "⚠️ Image my-static:latest not found"
|
||||
docker build -t my-static .
|
||||
|
||||
# 验证构建是否成功
|
||||
if check_build_exists; then
|
||||
echo "🎉 Image built successfully"
|
||||
else
|
||||
echo "❌ Failed to build image my-static:latest" >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
docker run --restart always --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 "构建静态资源服务没有运行。"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
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
|
||||
if ! start_static_server; then
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo "静态资源服务未启动"
|
||||
if ! start_static_server; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
make_login_action() {
|
||||
echo "开始登陆操作"
|
||||
curl -c cookies.txt $forgeDomain/api/accounts/login.json -H 'Content-type:application/json' -d '{"login":"'"$username"'","password":"'"$password"'","autologin":1}'
|
||||
}
|
||||
|
||||
create_organization() {
|
||||
echo "开始创建 $actionOrg 组织"
|
||||
response=$(curl -b cookies.txt --location --request POST ${forgeDomain}/api/organizations.json \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "{
|
||||
\"image\": \"data:image/png;base64,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\",
|
||||
\"description\": \"${actionOrg}\",
|
||||
\"name\": \"${actionOrg}\",
|
||||
\"nickname\": \"${actionOrg}\",
|
||||
\"visibility\": \"common\"
|
||||
}")
|
||||
echo "create_organization:$response"
|
||||
if echo "$response" | grep -q '组织账号已被使用'; then
|
||||
echo "组织 $actionOrg 已存在,继续后续操作。"
|
||||
local query_response=$(curl -b cookies.txt --location --request GET "${forgeDomain}/api/organizations/${actionOrg}" \
|
||||
--header "Content-Type: application/json" 2>/dev/null)
|
||||
echo "查询响应: $query_response"
|
||||
if echo "$query_response" | grep -q '"id":'; then
|
||||
actionOrgID=$(echo "$query_response" | sed -n 's/.*"id":\([0-9]*\).*/\1/p')
|
||||
echo "✅ 获取到现有组织ID: $actionOrgID"
|
||||
else
|
||||
echo "❌ 无法获取组织ID"
|
||||
exit
|
||||
fi
|
||||
elif echo "$response" | grep -q '{"id":'; then
|
||||
actionOrgID=$(echo "$response" | sed -n 's/.*"id":\([0-9]*\).*/\1/p')
|
||||
response=$(curl -b cookies.txt --location --request POST ${pmsDomain}/api/pms/pmsEnterprise/createByGitlinkOrgId/${actionOrgID} \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "[{
|
||||
\"roleKey\": \"pms_org_admin\",
|
||||
\"userId\": 1
|
||||
}]")
|
||||
if echo "$response" |grep -q '{"code":200'; then
|
||||
echo ""创建 $actionOrg 组织成功。""
|
||||
else
|
||||
echo "创建 $actionOrg 组织失败。"
|
||||
fi
|
||||
else
|
||||
echo "创建 $actionOrg 组织失败。"
|
||||
fi
|
||||
}
|
||||
|
||||
create_pms_project() {
|
||||
echo "开始创建项目管理项目"
|
||||
response=$(curl -b cookies.txt --location --request POST ${pmsDomain}/api/pms/${actionOrg}/pmsProject \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "{
|
||||
\"projectName\": \"actions\",
|
||||
\"projectAssigneeId\": \"1\",
|
||||
\"startTime\": \"2024-08-15T00:00:00\",
|
||||
\"endTime\": \"2025-08-15T23:59:59\"
|
||||
}")
|
||||
echo $response
|
||||
pmsProjectId=0
|
||||
if echo "$response" | grep -q '{"msg":"操作成功"'; then
|
||||
pmsProjectId=$(echo "$response" | sed -n 's/.*"data":\([0-9]*\).*/\1/p')
|
||||
echo "创建项目成功。"
|
||||
else
|
||||
echo "创建项目失败。"
|
||||
fi
|
||||
}
|
||||
|
||||
create_one_repository() {
|
||||
echo "开始创建 $1 项目"
|
||||
|
||||
# 构建正确的请求数据,完全匹配Java类的字段名
|
||||
local request_data="{
|
||||
\"user_id\": ${actionOrgID},
|
||||
\"pms_project_id\": ${pmsProjectId},
|
||||
\"private\": false,
|
||||
\"repository_name\": \"${1}\",
|
||||
\"name\": \"${1}\",
|
||||
\"description\": \"\",
|
||||
\"ignoreFlag\": false,
|
||||
\"languageFlag\": false,
|
||||
\"needLog\": true
|
||||
}"
|
||||
|
||||
response=$(curl -b cookies.txt --location --request POST ${pmsDomain}/api/pms/${actionOrg}/pmsProjectRepository/addRepository \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "$request_data" 2>&1)
|
||||
|
||||
echo "响应: $response"
|
||||
|
||||
if echo "$response" | grep -q '"id":'; then
|
||||
echo "✅ 创建 $1 项目成功。"
|
||||
return 0
|
||||
else
|
||||
echo "❌ 创建 $1 项目失败。"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
create_two_repository() {
|
||||
echo "开始创建software_factory_pipeline_test项目"
|
||||
if curl -b cookies.txt --location --request POST ${pmsDomain}/api/pms/${actionOrg}/pmsProjectRepository/addRepository \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "{
|
||||
\"user_id\": \"${actionOrgID}\",
|
||||
\"pms_project_id\": \"${pmsProjectId}\",
|
||||
\"private\": \"false\",
|
||||
\"repository_name\": \"software_factory_pipeline_test\",
|
||||
\"name\": \"software_factory_pipeline_test\"
|
||||
}" | grep -q '{"msg":"操作成功"'; then
|
||||
echo "创建software_factory_pipeline_test项目成功。"
|
||||
else
|
||||
echo "创建software_factory_pipeline_test项目失败。"
|
||||
fi
|
||||
}
|
||||
|
||||
# 优化的create_repository函数:从repository文件夹遍历
|
||||
create_repository() {
|
||||
create_organization
|
||||
if [ "$actionOrgID" = "" ]; then
|
||||
echo "❌ create_repository: 无法获取组织ID"
|
||||
return 1
|
||||
else
|
||||
create_pms_project
|
||||
if [ "$pmsProjectId" = "" ]; then
|
||||
echo "❌ create_repository: 无法获取项目ID"
|
||||
return 1
|
||||
else
|
||||
# 遍历repository文件夹中的所有子目录
|
||||
repository_dir="$origin_path/repository"
|
||||
if [ -d "$repository_dir" ]; then
|
||||
for repo in "$repository_dir"/*; do
|
||||
if [ -d "$repo" ]; then
|
||||
repo_name=$(basename "$repo")
|
||||
echo "正在处理仓库: $repo_name"
|
||||
create_one_repository "$repo_name"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "❌ repository文件夹不存在: $repository_dir"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
changeDefaultBranch() {
|
||||
echo "开始更改 $1 项目的默认分支"
|
||||
if curl -b cookies.txt --location --request PUT ${forgeDomain}/api/${actionOrg}/$1.json \
|
||||
--header "Content-Type: application/json" \
|
||||
--data-raw "{
|
||||
\"default_branch\": \"main\"
|
||||
}" | grep -q '{"id":'; then
|
||||
echo "更改 $1 项目的默认分支成功。"
|
||||
else
|
||||
echo "更改 $1 项目的默认分支失败。"
|
||||
fi
|
||||
}
|
||||
|
||||
# 定义仓库配置: name|branch|reset_commit|sed_replace_pattern|sed_replace_value|files_to_sed
|
||||
# 格式: repo_name|branch|reset_commit|pattern|replacement_value|files (空则不sed)
|
||||
# 如果不需要sed替换,pattern和replacement填"-",files留空
|
||||
|
||||
# 需要sed替换 #{staticServerDomain} 的仓库 (versions-*)
|
||||
DEFINE_STATIC_REPOS() {
|
||||
echo "go-versions|main|26d24036bc7e8039690dc3aed6352b0f70f64e23|#{staticServerDomain}|${localIP}:${staticServerPort}|versions-manifest.json"
|
||||
echo "node-versions|main|7c6a88bde64272f043e5543c734f1fe4b971e0ab|#{staticServerDomain}|${localIP}:${staticServerPort}|versions-manifest.json"
|
||||
echo "python-versions|main|cf36223d60f3192d6cb3b5c72316c31c3148d931|#{staticServerDomain}|${localIP}:${staticServerPort}|versions-manifest.json"
|
||||
}
|
||||
|
||||
# 需要sed替换 #{giteaDomain} 的仓库 (setup-*)
|
||||
DEFINE_GITEA_REPOS() {
|
||||
echo "setup-go|main|c2aa616d4ba735e5f411e7863de9acf43069fefe|#{giteaDomain}|${giteaDomain}|dist/setup/index.js"
|
||||
echo "setup-node|master|891a2112adc2599da487d1c37d6833db6e5b47f2|#{giteaDomain}|${giteaDomain}|dist/setup/index.js"
|
||||
echo "setup-python|main|c147b8dcc12f4b88d2a3335458d1bd32024dda5e|#{giteaDomain}|${giteaDomain}|dist/setup/index.js src/install-python.ts"
|
||||
}
|
||||
|
||||
# 普通仓库: 只需要push
|
||||
DEFINE_SIMPLE_REPOS() {
|
||||
echo "checkout"
|
||||
echo "log_match_action"
|
||||
echo "publish-releases-action"
|
||||
echo "run_pipeline_action"
|
||||
echo "upload-artifact-zpk"
|
||||
echo "scp-action"
|
||||
echo "ssh-action"
|
||||
echo "setup-cpp"
|
||||
echo "setup-maven"
|
||||
echo "setup-java"
|
||||
echo "sonarqube-scan-action"
|
||||
echo "setup-buildx-action"
|
||||
echo "metadata-action"
|
||||
echo "login-action"
|
||||
echo "upload-artifact"
|
||||
echo "build-push-action"
|
||||
echo "cache"
|
||||
}
|
||||
|
||||
# 通用push函数:处理单个仓库
|
||||
push_one_repo() {
|
||||
local repo_name=$1
|
||||
local branch=$2
|
||||
local reset_commit=$3
|
||||
local sed_pattern=$4
|
||||
local sed_value=$5
|
||||
local sed_files=$6
|
||||
|
||||
cd "$origin_path/repository/$repo_name"
|
||||
|
||||
git config --local user.name "$author"
|
||||
git config --local user.email "$authorEmail"
|
||||
|
||||
# 如果指定了reset_commit,则执行reset和sed替换
|
||||
if [ -n "$reset_commit" ] && [ "$reset_commit" != "-" ]; then
|
||||
echo "正在对${repo_name}仓库进行服务地址替换"
|
||||
git reset --hard "$reset_commit"
|
||||
|
||||
if [ -n "$sed_files" ] && [ "$sed_pattern" != "-" ]; then
|
||||
for file in $sed_files; do
|
||||
if [ -f "$file" ]; then
|
||||
sed -i "s|${sed_pattern}|${sed_value}|g" "$file"
|
||||
fi
|
||||
done
|
||||
git add $sed_files
|
||||
git commit -m "auto:更改服务地址"
|
||||
fi
|
||||
echo "结束${repo_name}仓库服务地址替换"
|
||||
fi
|
||||
|
||||
# 删除 .github/workflows 目录下的文件,避免创建仓库就触发流水线
|
||||
if [ -d ".github/workflows" ]; then
|
||||
echo "正在删除${repo_name}仓库的 .github/workflows 目录下的文件"
|
||||
rm -rf .github/workflows/*
|
||||
if [ -d ".github/workflows" ] && [ "$(ls -A .github/workflows 2>/dev/null)" ]; then
|
||||
git add .github/workflows/*
|
||||
else
|
||||
# workflows 目录可能为空,创建一个 .gitkeep 避免目录被删除
|
||||
mkdir -p .github/workflows
|
||||
touch .github/workflows/.gitkeep
|
||||
git add .github/workflows/.gitkeep
|
||||
fi
|
||||
git commit -m "chore: 删除workflows避免创建仓库触发流水线"
|
||||
echo "结束删除${repo_name}仓库的 workflows 文件"
|
||||
fi
|
||||
|
||||
echo "开始进行${repo_name}仓库推送"
|
||||
if ! git push -uf "$pushRepositoryPrefix/$actionOrg/$repo_name.git" "$branch"; then
|
||||
echo "❌ ${repo_name}仓库推送失败"
|
||||
return 1
|
||||
fi
|
||||
echo "结束${repo_name}仓库推送"
|
||||
return 0
|
||||
}
|
||||
|
||||
# 遍历推送所有仓库
|
||||
push_repository() {
|
||||
local push_failed=0
|
||||
|
||||
# 1. 推送需要 #{staticServerDomain} 替换的仓库
|
||||
while IFS='|' read -r name branch commit pattern value files; do
|
||||
[ -z "$name" ] && continue
|
||||
if ! push_one_repo "$name" "$branch" "$commit" "$pattern" "$value" "$files"; then
|
||||
push_failed=1
|
||||
fi
|
||||
done < <(DEFINE_STATIC_REPOS)
|
||||
|
||||
# 2. 推送需要 #{giteaDomain} 替换的仓库
|
||||
while IFS='|' read -r name branch commit pattern value files; do
|
||||
[ -z "$name" ] && continue
|
||||
if ! push_one_repo "$name" "$branch" "$commit" "$pattern" "$value" "$files"; then
|
||||
push_failed=1
|
||||
fi
|
||||
done < <(DEFINE_GITEA_REPOS)
|
||||
|
||||
# 3. 推送普通仓库
|
||||
for repo_name in $(DEFINE_SIMPLE_REPOS); do
|
||||
[ -z "$repo_name" ] && continue
|
||||
cd "$origin_path/repository/$repo_name"
|
||||
|
||||
# 删除 .github/workflows 目录下的文件,避免创建仓库就触发流水线
|
||||
if [ -d ".github/workflows" ]; then
|
||||
echo "正在删除${repo_name}仓库的 .github/workflows 目录下的文件"
|
||||
rm -rf .github/workflows/*
|
||||
mkdir -p .github/workflows
|
||||
touch .github/workflows/.gitkeep
|
||||
git add .github/workflows/
|
||||
git commit -m "chore: 删除workflows避免创建仓库触发流水线"
|
||||
fi
|
||||
|
||||
echo "开始进行${repo_name}仓库推送"
|
||||
if ! git push -uf "$pushRepositoryPrefix/$actionOrg/$repo_name.git" --all; then
|
||||
echo "❌ ${repo_name}仓库推送失败(--all)"
|
||||
push_failed=1
|
||||
fi
|
||||
if ! git push -uf "$pushRepositoryPrefix/$actionOrg/$repo_name.git" --tags; then
|
||||
echo "❌ ${repo_name}仓库推送失败(--tags)"
|
||||
push_failed=1
|
||||
fi
|
||||
echo "结束${repo_name}仓库推送"
|
||||
done
|
||||
|
||||
if [ $push_failed -eq 1 ]; then
|
||||
echo "❌ push_repository: 部分仓库推送失败"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# 显示帮助信息的函数
|
||||
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 " deploy_all, 一键执行所有操作(检查包→检查服务→创建仓库→推送代码)"
|
||||
}
|
||||
|
||||
# 一键执行所有操作
|
||||
deploy_all() {
|
||||
echo "========== 开始一键部署 =========="
|
||||
echo ""
|
||||
local failed=0
|
||||
local step_output=""
|
||||
|
||||
echo ">>> 第1步:检查依赖包 <<<"
|
||||
step_output=$(check_package 2>&1)
|
||||
if ! check_package > /dev/null 2>&1; then
|
||||
echo "❌ 第1步失败:依赖包检查未通过"
|
||||
echo "--- 错误详情 ---"
|
||||
echo "$step_output"
|
||||
echo "----------------"
|
||||
failed=1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
if [ $failed -eq 0 ]; then
|
||||
echo ">>> 第2步:检查静态资源服务 <<<"
|
||||
step_output=$(check_static_server 2>&1)
|
||||
if ! check_static_server > /dev/null 2>&1; then
|
||||
echo "❌ 第2步失败:静态资源服务启动失败"
|
||||
echo "--- 错误详情 ---"
|
||||
echo "$step_output"
|
||||
echo "----------------"
|
||||
failed=2
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
if [ $failed -eq 0 ]; then
|
||||
echo ">>> 第3步:创建仓库 <<<"
|
||||
step_output=$(create_repository 2>&1)
|
||||
if ! create_repository > /dev/null 2>&1; then
|
||||
echo "❌ 第3步失败:仓库创建失败"
|
||||
echo "--- 错误详情 ---"
|
||||
echo "$step_output"
|
||||
echo "----------------"
|
||||
failed=3
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
if [ $failed -eq 0 ]; then
|
||||
echo ">>> 第4步:推送代码 <<<"
|
||||
step_output=$(push_repository 2>&1)
|
||||
if ! push_repository > /dev/null 2>&1; then
|
||||
echo "❌ 第4步失败:代码推送失败"
|
||||
echo "--- 错误详情 ---"
|
||||
echo "$step_output"
|
||||
echo "----------------"
|
||||
failed=4
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
if [ $failed -eq 0 ]; then
|
||||
echo "========== ✅ 一键部署全部完成 =========="
|
||||
else
|
||||
echo "========== ❌ 一键部署在第${failed}步失败 =========="
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
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
|
||||
;;
|
||||
"deploy_all")
|
||||
deploy_all
|
||||
;;
|
||||
*)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
Loading…
Reference in New Issue