222333
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
编码猿
2025-09-09 09:41:26 +08:00
parent 17f0c727c0
commit 8e1aa5e659

View File

@@ -9,41 +9,43 @@ steps:
volumes: volumes:
- name: docker-socket - name: docker-socket
path: /var/run/docker.sock path: /var/run/docker.sock
environment:
# 在这里重新声明以确保优先级
APP_NAME: node-app
CONTAINER_NAME: node-app-prod
commands: commands:
- export APP_NAME="node-app" # 直接在命令中设置变量避免shell解释器问题
- export CONTAINER_NAME="node-app-prod" - CURRENT_TAG=$(echo ${DRONE_COMMIT_SHA} | cut -c1-8)
- export CURRENT_TAG=$(echo ${DRONE_COMMIT_SHA} | cut -c1-8) - echo "调试信息: APP_NAME=${APP_NAME}, CONTAINER_NAME=${CONTAINER_NAME}, CURRENT_TAG=${CURRENT_TAG}"
- echo "开始清理残留资源..."
# 1. 停止并删除正在运行的旧容器
# 使用默认值作为最后的保障
- | - |
# 调试输出变量值,确认变量是否正确设置 SAFE_CONTAINER_NAME=${CONTAINER_NAME:-"node-app-prod-default"}
echo "调试信息: APP_NAME=${APP_NAME}, CONTAINER_NAME=${CONTAINER_NAME}, CURRENT_TAG=${CURRENT_TAG}" if [ "$(docker ps -q -f name=${SAFE_CONTAINER_NAME})" ]; then
echo "停止并删除运行中的容器: ${SAFE_CONTAINER_NAME}"
echo "开始清理残留资源..." docker stop "${SAFE_CONTAINER_NAME}" || true
docker rm "${SAFE_CONTAINER_NAME}" || true
# 1. 停止并删除正在运行的旧容器
# 增强检查确保CONTAINER_NAME有值
if [ -n "${CONTAINER_NAME}" ] && [ "$(docker ps -q -f name=${CONTAINER_NAME})" ]; then
echo "停止并删除运行中的容器: ${CONTAINER_NAME}"
docker stop "${CONTAINER_NAME}" || true
docker rm "${CONTAINER_NAME}" || true
else else
echo "没有运行中的 ${CONTAINER_NAME} 容器或容器名称未设置" echo "没有运行中的 ${SAFE_CONTAINER_NAME} 容器"
fi fi
# 2. 删除同前缀的旧镜像(排除当前构建标签) # 2. 删除同前缀的旧镜像(排除当前构建标签)
- |
SAFE_APP_NAME=${APP_NAME:-"node-app-default"}
SAFE_CURRENT_TAG=${CURRENT_TAG:-"unknown"}
echo "清理旧镜像..." echo "清理旧镜像..."
if [ -n "${APP_NAME}" ] && [ -n "${CURRENT_TAG}" ]; then 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
while read -r image_id tag; do if [ "$tag" != "$SAFE_CURRENT_TAG" ] && [ "$tag" != "<none>" ]; then
if [ "$tag" != "$CURRENT_TAG" ] && [ "$tag" != "<none>" ]; then echo "删除旧镜像: ${SAFE_APP_NAME}:${tag} (ID: ${image_id})"
echo "删除旧镜像: ${APP_NAME}:${tag} (ID: ${image_id})" docker rmi -f ${image_id} || true
docker rmi -f ${image_id} || true fi
fi done
done
else # 3. 清理悬空镜像
echo "APP_NAME或CURRENT_TAG未设置跳过镜像清理" - |
fi
# 3. 清理悬空镜像构建失败产生的none标签镜像
echo "清理悬空镜像..." echo "清理悬空镜像..."
dangling_images=$(docker images -f "dangling=true" -q) dangling_images=$(docker images -f "dangling=true" -q)
if [ -n "$dangling_images" ]; then if [ -n "$dangling_images" ]; then
@@ -52,7 +54,6 @@ steps:
echo "没有悬空镜像需要清理" echo "没有悬空镜像需要清理"
fi fi
# 第一步:准备环境并安装依赖 # 第一步:准备环境并安装依赖
- name: install-dependencies - name: install-dependencies
image: node:18-bullseye image: node:18-bullseye