136 lines
4.7 KiB
YAML
136 lines
4.7 KiB
YAML
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
|