move claude-marketplace to ai-proj-helper

This commit is contained in:
2026-03-12 21:42:30 +08:00
parent d7b6835e1d
commit 43585b8504
188 changed files with 39510 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
#!/bin/bash
# 部署状态检查脚本
# 用法: ./deploy-check.sh [ai-proj|pipeXerp]
set -e
TOOLS_SERVER="root@101.200.136.200"
TOOLS_KEY="~/.ssh/tools.pem"
JOB_NAME="${1:-ai-proj}"
echo "======================================"
echo "Jenkins Job: $JOB_NAME"
echo "======================================"
ssh -i $TOOLS_KEY -o ConnectTimeout=5 $TOOLS_SERVER << EOF
echo "--- 最近 5 次构建 ---"
ls -lt /var/lib/jenkins/jobs/$JOB_NAME/builds/ 2>/dev/null | head -6
echo ""
echo "--- 最近成功构建 ---"
if [ -L /var/lib/jenkins/jobs/$JOB_NAME/builds/lastSuccessfulBuild ]; then
BUILD_NUM=\$(readlink /var/lib/jenkins/jobs/$JOB_NAME/builds/lastSuccessfulBuild)
echo "Build #\$BUILD_NUM"
if [ -f "/var/lib/jenkins/jobs/$JOB_NAME/builds/\$BUILD_NUM/log" ]; then
echo "构建时间: \$(stat -c %y /var/lib/jenkins/jobs/$JOB_NAME/builds/\$BUILD_NUM/log 2>/dev/null || stat -f %Sm /var/lib/jenkins/jobs/$JOB_NAME/builds/\$BUILD_NUM/log)"
fi
else
echo "无成功构建记录"
fi
echo ""
echo "--- 最近失败构建 ---"
if [ -L /var/lib/jenkins/jobs/$JOB_NAME/builds/lastFailedBuild ]; then
BUILD_NUM=\$(readlink /var/lib/jenkins/jobs/$JOB_NAME/builds/lastFailedBuild)
echo "Build #\$BUILD_NUM"
echo "错误日志(最后 20 行):"
tail -20 /var/lib/jenkins/jobs/$JOB_NAME/builds/\$BUILD_NUM/log 2>/dev/null || echo "无法读取日志"
else
echo "无失败构建记录"
fi
EOF

View File

@@ -0,0 +1,97 @@
#!/bin/bash
# Gitea PR 操作脚本
# 用法:
# ./gitea-pr.sh list # 列出 PR
# ./gitea-pr.sh create <title> <head> # 创建 PR
# ./gitea-pr.sh merge <pr-number> # 合并 PR
set -e
# 加载凭据
source ~/.config/devops/credentials.env
REPO="Tools/new-ai-proj"
ACTION="${1:-list}"
case "$ACTION" in
list)
echo "=== 当前 Pull Requests ==="
curl -s "$GITEA_URL/api/v1/repos/$REPO/pulls?state=open" \
-H "Authorization: token $GITEA_TOKEN" | \
python3 -c "
import sys, json
prs = json.load(sys.stdin)
if not prs:
print('没有开放的 PR')
else:
for pr in prs:
print(f\"#{pr['number']} [{pr['state']}] {pr['title']}\")
print(f\" {pr['head']['ref']} -> {pr['base']['ref']}\")
print(f\" 作者: {pr['user']['login']}\")
print()
"
;;
create)
TITLE="$2"
HEAD="$3"
BASE="${4:-main}"
if [ -z "$TITLE" ] || [ -z "$HEAD" ]; then
echo "用法: $0 create <title> <head-branch> [base-branch]"
exit 1
fi
echo "创建 PR: $TITLE"
echo "分支: $HEAD -> $BASE"
curl -s -X POST "$GITEA_URL/api/v1/repos/$REPO/pulls" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"title\":\"$TITLE\",\"head\":\"$HEAD\",\"base\":\"$BASE\"}" | \
python3 -c "
import sys, json
pr = json.load(sys.stdin)
if 'number' in pr:
print(f\"PR 创建成功! #{pr['number']}\")
print(f\"URL: {pr['html_url']}\")
else:
print(f\"创建失败: {pr.get('message', '未知错误')}\")
"
;;
merge)
PR_NUM="$2"
if [ -z "$PR_NUM" ]; then
echo "用法: $0 merge <pr-number>"
exit 1
fi
echo "合并 PR #$PR_NUM..."
curl -s -X POST "$GITEA_URL/api/v1/repos/$REPO/pulls/$PR_NUM/merge" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"Do":"merge"}' | \
python3 -c "
import sys, json
try:
result = json.load(sys.stdin)
if result:
print(f\"结果: {result}\")
else:
print('PR 合并成功!')
except:
print('PR 合并成功!')
"
;;
*)
echo "用法: $0 {list|create|merge}"
echo " list - 列出所有开放的 PR"
echo " create <title> <head> - 创建新 PR"
echo " merge <pr-number> - 合并 PR"
exit 1
;;
esac

View File

@@ -0,0 +1,84 @@
#!/bin/bash
# 服务器健康检查脚本
# 用法: ./health-check.sh [aliyun|website|all]
set -e
TOOLS_SERVER="root@101.200.136.200"
TOOLS_KEY="~/.ssh/tools.pem"
WEBSITE_SERVER="root@192.144.137.14"
WEBSITE_KEY="~/.ssh/officialWebsite.pem"
check_tools_server() {
echo "======================================"
echo "Tools 服务器 (101.200.136.200)"
echo "======================================"
ssh -i $TOOLS_KEY -o ConnectTimeout=5 $TOOLS_SERVER << 'EOF'
echo "--- 系统负载 ---"
uptime
echo ""
echo "--- 内存使用 ---"
free -h
echo ""
echo "--- 磁盘使用 ---"
df -h | grep -E '^/dev|Filesystem'
echo ""
echo "--- Docker 容器 ---"
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
echo ""
echo "--- 系统服务 ---"
echo -n "Jenkins: "; systemctl is-active jenkins
echo -n "Nginx: "; systemctl is-active nginx
echo -n "Docker: "; systemctl is-active docker
echo ""
echo "--- 端口检查 ---"
netstat -tlnp 2>/dev/null | grep -E ':3000|:8080|:10022|:5000' | awk '{print $4, $7}'
EOF
}
check_website_server() {
echo "======================================"
echo "Website 服务器 (192.144.137.14)"
echo "======================================"
ssh -i $WEBSITE_KEY -o ConnectTimeout=5 $WEBSITE_SERVER << 'EOF'
echo "--- 系统负载 ---"
uptime
echo ""
echo "--- 内存使用 ---"
free -h
echo ""
echo "--- 磁盘使用 ---"
df -h | grep -E '^/dev|Filesystem'
echo ""
echo "--- Nginx 状态 ---"
systemctl is-active nginx || echo "nginx not running"
EOF
}
case "${1:-all}" in
aliyun|tools)
check_tools_server
;;
website)
check_website_server
;;
all)
check_tools_server
echo ""
check_website_server
;;
*)
echo "用法: $0 [aliyun|website|all]"
exit 1
;;
esac

View File

@@ -0,0 +1,46 @@
#!/bin/bash
# Jenkins 构建触发脚本
# 用法: ./jenkins-build.sh [job-name] [env]
# 示例: ./jenkins-build.sh ai-proj staging
set -e
# 加载凭据
source ~/.config/devops/credentials.env
JOB_NAME="${1:-ai-proj}"
DEPLOY_ENV="${2:-staging}"
echo "触发 Jenkins 构建..."
echo "Job: $JOB_NAME"
echo "环境: $DEPLOY_ENV"
echo ""
# 触发构建
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
"$JENKINS_URL/job/$JOB_NAME/buildWithParameters" \
-u "$JENKINS_USER:$JENKINS_TOKEN" \
--data "DEPLOY_ENV=$DEPLOY_ENV&SKIP_TESTS=false")
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
if [ "$HTTP_CODE" = "201" ]; then
echo "构建已触发成功!"
echo ""
echo "查看构建状态: $JENKINS_URL/job/$JOB_NAME/"
# 等待 2 秒后获取构建号
sleep 2
BUILD_INFO=$(curl -s "$JENKINS_URL/job/$JOB_NAME/lastBuild/api/json" \
-u "$JENKINS_USER:$JENKINS_TOKEN" 2>/dev/null)
if [ -n "$BUILD_INFO" ]; then
BUILD_NUM=$(echo "$BUILD_INFO" | python3 -c "import sys,json; print(json.load(sys.stdin).get('number','N/A'))" 2>/dev/null || echo "N/A")
BUILD_STATUS=$(echo "$BUILD_INFO" | python3 -c "import sys,json; d=json.load(sys.stdin); print('进行中' if d.get('building') else d.get('result','未知'))" 2>/dev/null || echo "未知")
echo "构建号: #$BUILD_NUM"
echo "状态: $BUILD_STATUS"
fi
else
echo "构建触发失败! HTTP 状态码: $HTTP_CODE"
exit 1
fi

View File

@@ -0,0 +1,44 @@
#!/bin/bash
# 服务重启脚本
# 用法: ./service-restart.sh <service-name>
# 支持: gitea, jenkins, nginx, registry
set -e
TOOLS_SERVER="root@101.200.136.200"
TOOLS_KEY="~/.ssh/tools.pem"
SERVICE_NAME="$1"
if [ -z "$SERVICE_NAME" ]; then
echo "用法: $0 <service-name>"
echo "支持的服务: gitea, jenkins, nginx, registry, docker"
exit 1
fi
echo "正在重启服务: $SERVICE_NAME ..."
case "$SERVICE_NAME" in
gitea)
ssh -i $TOOLS_KEY $TOOLS_SERVER "docker restart gitea && docker logs --tail 10 gitea"
;;
registry)
ssh -i $TOOLS_KEY $TOOLS_SERVER "docker restart registry && docker ps | grep registry"
;;
jenkins)
ssh -i $TOOLS_KEY $TOOLS_SERVER "systemctl restart jenkins && systemctl status jenkins --no-pager"
;;
nginx)
ssh -i $TOOLS_KEY $TOOLS_SERVER "nginx -t && systemctl restart nginx && systemctl status nginx --no-pager"
;;
docker)
ssh -i $TOOLS_KEY $TOOLS_SERVER "systemctl restart docker && docker ps"
;;
*)
echo "不支持的服务: $SERVICE_NAME"
echo "支持的服务: gitea, jenkins, nginx, registry, docker"
exit 1
;;
esac
echo ""
echo "服务 $SERVICE_NAME 重启完成"