diff --git a/.drone.yml b/.drone.yml index cf0f000..27eb233 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,47 +9,36 @@ steps: volumes: - name: docker-socket path: /var/run/docker.sock - environment: - APP_NAME: - from_secret: app_name - CONTAINER_NAME: - from_secret: container_name commands: - # 直接在命令中设置变量,避免shell解释器问题 - - CURRENT_TAG=$(echo ${DRONE_COMMIT_SHA} | cut -c1-8) - # - echo "APP_NAME=$APP_NAME, CONTAINER_NAME=$CONTAINER_NAME, CURRENT_TAG=$CURRENT_TAG" - - echo $APP_NAME - - echo $CONTAINER_NAME - - echo $CURRENT_TAG - - echo "开始清理残留资源..." - - # 1. 停止并删除正在运行的旧容器 - # 使用默认值作为最后的保障 - | - SAFE_CONTAINER_NAME=${CONTAINER_NAME:-"node-app-prod-default"} - if [ "$(docker ps -q -f name=${SAFE_CONTAINER_NAME})" ]; then - echo "停止并删除运行中的容器: ${SAFE_CONTAINER_NAME}" - docker stop "${SAFE_CONTAINER_NAME}" || true - docker rm "${SAFE_CONTAINER_NAME}" || true + # 定义应用相关的名称标识 + APP_NAME="node-app" + CONTAINER_NAME="node-app-prod" + CURRENT_TAG="${DRONE_COMMIT_SHA:0:8}" + + echo "开始清理残留资源..." + echo "调试信息: APP_NAME=${APP_NAME}, CONTAINER_NAME=${CONTAINER_NAME}, CURRENT_TAG=${CURRENT_TAG}" + + # 1. 停止并删除正在运行的旧容器 + if [ "$(docker ps -q -f name=${CONTAINER_NAME})" ]; then + echo "停止并删除运行中的容器: ${CONTAINER_NAME}" + docker stop ${CONTAINER_NAME} || true + docker rm ${CONTAINER_NAME} || true else - echo "没有运行中的 ${SAFE_CONTAINER_NAME} 容器" + echo "没有运行中的 ${CONTAINER_NAME} 容器" fi - - # 2. 删除同前缀的旧镜像(排除当前构建标签) - - | - SAFE_APP_NAME=${APPNAME:-"node-app-default"} - SAFE_CURRENT_TAG=${CURRENT_TAG:-"unknown"} + + # 2. 删除同前缀的旧镜像(排除当前构建标签) echo "清理旧镜像..." - docker images --filter "reference=${SAFE_APP_NAME}:*" --format "{{.ID}} {{.Tag}}" | \ + docker images --filter "reference=${APP_NAME}:*" --format "{{.ID}} {{.Tag}}" | \ while read -r image_id tag; do - if [ "$tag" != "$SAFE_CURRENT_TAG" ] && [ "$tag" != "" ]; then - echo "删除旧镜像: ${SAFE_APP_NAME}:${tag} (ID: ${image_id})" + if [ "$tag" != "$CURRENT_TAG" ] && [ "$tag" != "" ]; then + echo "删除旧镜像: ${APP_NAME}:${tag} (ID: ${image_id})" docker rmi -f ${image_id} || true fi done - - # 3. 清理悬空镜像 - - | + + # 3. 清理悬空镜像(构建失败产生的none标签镜像) echo "清理悬空镜像..." dangling_images=$(docker images -f "dangling=true" -q) if [ -n "$dangling_images" ]; then @@ -115,4 +104,4 @@ trigger: - develop event: - push - - pull_request + - pull_request \ No newline at end of file