- 在 CI 脚本中增加对必需构建文件的校验,避免缺失文件导致构建失败 - 添加构建成功后镜像验证步骤,并输出镜像详情 - 移除 `kami-spider-monorepo` 目录下的 Dockerfile、Makefile、README.md 和入口脚本,简化项目结构 - 调整基础镜像构建脚本 `build-base-image.sh`,指定正确的 Dockerfile 文件名 - 更新 README 使其内容更加精简,聚焦于基础镜像构建和使用说明
124 lines
3.5 KiB
YAML
124 lines
3.5 KiB
YAML
---
|
|
kind: pipeline
|
|
type: ssh
|
|
name: spider-base-image-builder
|
|
|
|
server:
|
|
host: 38.38.251.113:34156
|
|
user: root
|
|
password:
|
|
from_secret: www_password
|
|
|
|
clone:
|
|
depth: 50
|
|
|
|
steps:
|
|
- name: check-spider-changes
|
|
commands:
|
|
- echo "🔍 Checking for changes in kami-spider-monorepo directory..."
|
|
- |
|
|
BUILD_REQUIRED=false
|
|
SPIDER_DIR="kami-spider-monorepo"
|
|
|
|
echo "Build event: $DRONE_BUILD_EVENT"
|
|
echo "Branch: $DRONE_COMMIT_BRANCH"
|
|
|
|
if [ "$DRONE_BUILD_EVENT" = "push" ]; then
|
|
if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
|
|
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD)
|
|
echo "Changed files:"
|
|
echo "$CHANGED_FILES"
|
|
|
|
SPIDER_CHANGED=$(echo "$CHANGED_FILES" | grep -E "^${SPIDER_DIR}/" || true)
|
|
|
|
if [ -n "$SPIDER_CHANGED" ]; then
|
|
echo "✅ Changes detected in ${SPIDER_DIR}:"
|
|
echo "$SPIDER_CHANGED"
|
|
BUILD_REQUIRED=true
|
|
else
|
|
echo "❌ No changes in ${SPIDER_DIR}"
|
|
fi
|
|
else
|
|
echo "First commit detected, building..."
|
|
BUILD_REQUIRED=true
|
|
fi
|
|
else
|
|
echo "Non-push event, building..."
|
|
BUILD_REQUIRED=true
|
|
fi
|
|
|
|
echo "$BUILD_REQUIRED" > /tmp/build_status
|
|
echo "Build required: $BUILD_REQUIRED"
|
|
|
|
- name: build-spider-base-image
|
|
commands:
|
|
- |
|
|
if [ -f /tmp/build_status ] && [ "$(cat /tmp/build_status)" = "true" ]; then
|
|
echo "🏗️ Building spider base image..."
|
|
|
|
if [ -d "kami-spider-monorepo" ]; then
|
|
cd kami-spider-monorepo
|
|
echo "Changed to: $(pwd)"
|
|
ls -la
|
|
|
|
# 检查所有必需的构建文件
|
|
REQUIRED_FILES=("build-base-image.sh" "Dockerfile.base" "pyproject.toml" "uv.lock")
|
|
ALL_FILES_EXIST=true
|
|
|
|
for file in "${REQUIRED_FILES[@]}"; do
|
|
if [ ! -f "$file" ]; then
|
|
echo "❌ Required file not found: $file"
|
|
ALL_FILES_EXIST=false
|
|
fi
|
|
done
|
|
|
|
if [ "$ALL_FILES_EXIST" = "true" ]; then
|
|
echo "✅ All required build files found"
|
|
chmod +x build-base-image.sh
|
|
|
|
# 设置环境变量并构建
|
|
export DOCKER_REGISTRY="git.oceanpay.cc/danial"
|
|
export VERSION="latest"
|
|
|
|
docker login git.oceanpay.cc -u $DOCKER_LOGIN -p $DOCKER_TOKEN
|
|
./build-base-image.sh
|
|
|
|
# 验证镜像构建成功
|
|
if docker images | grep "kami-spider-base" | grep "latest"; then
|
|
echo "✅ Spider base image built successfully"
|
|
echo "📊 Image details:"
|
|
docker images | grep kami-spider-base
|
|
else
|
|
echo "❌ Base image build failed - image not found"
|
|
exit 1
|
|
fi
|
|
|
|
docker logout git.oceanpay.cc
|
|
else
|
|
echo "❌ Missing required build files!"
|
|
echo "Current directory contents:"
|
|
ls -la
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "❌ kami-spider-monorepo directory not found!"
|
|
fi
|
|
else
|
|
echo "⏭️ Skipping build - no spider changes"
|
|
fi
|
|
environment:
|
|
DOCKER_LOGIN:
|
|
from_secret: docker_login
|
|
DOCKER_TOKEN:
|
|
from_secret: docker_token
|
|
|
|
trigger:
|
|
branch:
|
|
- main
|
|
- master
|
|
- develop
|
|
- production
|
|
when:
|
|
event:
|
|
- push
|