diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..724e81b --- /dev/null +++ b/.drone.yml @@ -0,0 +1,135 @@ +kind: pipeline +type: docker +name: frontend-deploy + +steps: + # ============================= + # 1. 构建并推送前端镜像 + # ============================= + # 1️⃣ 构建并推送 Docker 镜像 + - name: build & push image + image: plugins/docker + settings: + registry: images.lihailezzc.com + repo: images.lihailezzc.com/ai-meng/api-client + tags: + - latest + - ${DRONE_TAG} + username: robot$build-robot + password: FbVZ7xv0wCA4es40sclV9kywOryz4l02 + dockerfile: Dockerfile + + # ============================= + # 2. SSH 服务器部署 + # ============================= + # - name: deploy to server + # image: appleboy/drone-ssh # 专门用于 SSH 执行命令 + # settings: + # host: 123.57.105.123 # 服务器 IP + # username: aimeng # 登录用户 + # ssh_key: | + # -----BEGIN OPENSSH PRIVATE KEY----- + # b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW + # QyNTUxOQAAACA83omyFMBLSjFBZpG84twncgU7JIw9j9rVj2iIZwLvjAAAAJg6n1PsOp9T + # 7AAAAAtzc2gtZWQyNTUxOQAAACA83omyFMBLSjFBZpG84twncgU7JIw9j9rVj2iIZwLvjA + # AAAEBRiuNI+OWKCQCHKn6FMFzGIx3sFW1XE5fqLrf48Qh0nTzeibIUwEtKMUFmkbzi3Cdy + # BTskjD2P2tWPaIhnAu+MAAAAEGRyb25lIGRlcGxveSBrZXkBAgMEBQ== + # -----END OPENSSH PRIVATE KEY----- + # port: 12580 + # script: + # - echo "🚀 登录服务器,拉取最新镜像并部署" + # - cd /home/aimeng/workspace/docker-compose/admin + # - export NEW_WEB_SUFFIX=$(date +%s) + # - export WEB_NEW="cms_${NEW_SUFFIX}" + # - docker compose run -d --name $WEB_NEW api_server + # - docker stop api_server || true + # - docker rm api_server || true + # - docker rename $API_NEW api_server + # - docker image prune -f + + # - docker compose pull cms + # - docker compose up -d frontend + + # 3️⃣ 飞书通知 + - name: notify feishu + image: curlimages/curl + environment: + FEISHU_WEBHOOK_URL: https://open.feishu.cn/open-apis/bot/v2/hook/be0b7f21-894e-4280-9469-69005fa5be9c + commands: + - | + set -x + + # 构建状态 + COLOR=$( [ "$DRONE_BUILD_STATUS" = "success" ] && echo "green" || echo "red" ) + + # 基础信息 + COMMIT_MSG=$(echo "$DRONE_COMMIT_MESSAGE" | sed 's/"/\\"/g') + AUTHOR=${DRONE_COMMIT_AUTHOR_NAME} + PROJECT=${DRONE_REPO_NAME} + BRANCH=${DRONE_BRANCH} + PROJECT_VERSION=${DRONE_TAG} + URL=${DRONE_BUILD_LINK} + + # 耗时计算 + DURATION=$((DRONE_BUILD_FINISHED - DRONE_BUILD_CREATED)) + MIN=$((DURATION / 60)) + SEC=$((DURATION % 60)) + FINISH="$MIN分$SEC秒" + + # 调试输出 + echo "DEBUG: DURATIONA=$DURATIONA" + echo "DEBUG: DURATIONB=$DURATIONB" + echo "DEBUG: DURATION=$DURATION" + echo "DEBUG: MIN=$MIN" + echo "DEBUG: SEC=$SEC" + echo "DEBUG: FINISH=$FINISH" + + curl --request POST \ + --url "$FEISHU_WEBHOOK_URL" \ + --header 'content-type: application/json' \ + --data "{ + \"msg_type\": \"interactive\", + \"card\": { + \"config\": { \"wide_screen_mode\": true }, + \"header\": { + \"title\": { \"tag\": \"plain_text\", \"content\": \"🚀 CI/CD 构建通知\" }, + \"template\": \"$COLOR\" + }, + \"elements\": [ + { + \"tag\": \"div\", + \"text\": { + \"tag\": \"lark_md\", + \"content\": \"**项目**:$PROJECT\\n**分支**:$BRANCH\\n**版本 **:$PROJECT_VERSION \\n**提交人**:$AUTHOR\\n**提交说明**:$COMMIT_MSG\" + } + }, + { \"tag\": \"hr\" }, + { + \"tag\": \"div\", + \"fields\": [ + { \"is_short\": true, \"text\": { \"tag\": \"lark_md\", \"content\": \"**状态**\\n$DRONE_BUILD_STATUS\" } }, + { \"is_short\": true, \"text\": { \"tag\": \"lark_md\", \"content\": \"**耗时**\\n$FINISH\" } } + ] + }, + { + \"tag\": \"action\", + \"actions\": [ + { + \"tag\": \"button\", + \"text\": { \"tag\": \"plain_text\", \"content\": \"查看详情\" }, + \"url\": \"$URL\", + \"type\": \"primary\" + } + ] + } + ] + } + }" + when: + status: + - success + - failure + +trigger: + event: + - tag