diff --git a/.drone.yml b/.drone.yml index cb4edd7..d736b15 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,12 +10,10 @@ steps: - name: docker-socket path: /var/run/docker.sock commands: + - export APP_NAME="node-app" + - export CONTAINER_NAME="node-app-prod" + - export CURRENT_TAG=$(echo ${DRONE_COMMIT_SHA} | cut -c1-8) - | - # 定义应用相关的名称标识 - APP_NAME="node-app" - CONTAINER_NAME="node-app-prod" - CURRENT_TAG="${DRONE_COMMIT_SHA:0:8}" - # 调试输出变量值,确认变量是否正确设置 echo "调试信息: APP_NAME=${APP_NAME}, CONTAINER_NAME=${CONTAINER_NAME}, CURRENT_TAG=${CURRENT_TAG}" @@ -33,13 +31,17 @@ steps: # 2. 删除同前缀的旧镜像(排除当前构建标签) echo "清理旧镜像..." - docker images --filter "reference=${APP_NAME}:*" --format "{{.ID}} {{.Tag}}" | \ - while read -r image_id tag; do - if [ "$tag" != "$CURRENT_TAG" ] && [ "$tag" != "" ]; then - echo "删除旧镜像: ${APP_NAME}:${tag} (ID: ${image_id})" - docker rmi -f ${image_id} || true - fi - done + if [ -n "${APP_NAME}" ] && [ -n "${CURRENT_TAG}" ]; then + docker images --filter "reference=${APP_NAME}:*" --format "{{.ID}} {{.Tag}}" | \ + while read -r image_id tag; do + if [ "$tag" != "$CURRENT_TAG" ] && [ "$tag" != "" ]; then + echo "删除旧镜像: ${APP_NAME}:${tag} (ID: ${image_id})" + docker rmi -f ${image_id} || true + fi + done + else + echo "APP_NAME或CURRENT_TAG未设置,跳过镜像清理" + fi # 3. 清理悬空镜像(构建失败产生的none标签镜像) echo "清理悬空镜像..." @@ -50,6 +52,7 @@ steps: echo "没有悬空镜像需要清理" fi + # 第一步:准备环境并安装依赖 - name: install-dependencies image: node:18-bullseye