- 新增 .drone.yml 配置,实现基于 SSH 的自动构建和推送 Spider Base 镜像 - 检测 kami-spider-monorepo 目录代码变动,变动时触发基础镜像构建 - 基础镜像包含系统依赖、Python 环境、Playwright 及所有项目依赖 - 优化 Dockerfile,将应用镜像基于该预构建基础镜像构建,显著提升构建速度 - 新增 Makefile,标准化基础镜像和应用镜像的构建、测试、推送及清理流程 - 增加详细的 README,指导开发者快速上手构建和使用基础镜像 - 添加构建脚本 build-base-image.sh,实现基础镜像的统一构建及推送 - 引入生产环境入口脚本 docker-entrypoint.sh,优化启动流程和信号处理 - 统一依赖管理(pyproject.toml、uv.lock),确保基础镜像依赖完整一致 - 设定健康检查,提升容器运行稳定性和可监控性
97 lines
2.7 KiB
YAML
97 lines
2.7 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
|
|
|
|
if [ -f "build-base-image.sh" ] && [ -f "Dockerfile.base" ]; then
|
|
chmod +x build-base-image.sh
|
|
docker login git.oceanpay.cc -u $DOCKER_LOGIN -p $DOCKER_TOKEN
|
|
./build-base-image.sh
|
|
docker tag kami-spider-base:latest git.oceanpay.cc/danial/kami-spider-base:latest
|
|
docker push git.oceanpay.cc/danial/kami-spider-base:latest
|
|
docker logout git.oceanpay.cc
|
|
echo "✅ Spider base image built successfully"
|
|
else
|
|
echo "❌ Required build files not found!"
|
|
ls -la
|
|
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
|