demo/.woodpecker/deploy.yaml

77 lines
3.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第 97 次部署
variables:
# --- 仓库与私服配置 ---
- &APP_REGISTRY "push.lovestory.cyou" # 推送镜像的私服域名
- &APP_PULL_REGISTRY "registry.lovestory.cyou" # 拉取基础镜像的私服域名
- &PROJECT_NAME "abhors/demo" # 项目镜像路径与名称
- &PROJECT_PORT "8080" # 运行及映射端口
- &FULL_PUSH_REPO "push.lovestory.cyou/abhors/demo" # 拼接后的完整推送地址
- &FULL_PULL_REPO "push.lovestory.cyou/abhors/demo:latest" # 远程部署拉取的目标地址
# --- 部署目标机配置 ---
- &CONTAINER_NAME "demo-container"
- &DEPLOY_HOST "43.143.243.136"
- &DEPLOY_PORT "22"
- &DEPLOY_USER_SECRET "136_ssh_user"
- &DEPLOY_PASS_SECRET "136_ssh_password"
# 遵循文档:顶层直接写 steps 和 matrix不写 kind 和 name
matrix:
include:
- NODE_NAME: "集群节点A"
SECRET_NODE_IP: "43.143.243.136"
SECRET_USER_NAME: "136_ssh_user"
SECRET_PASS_NAME: "136_ssh_password"
# - NODE_NAME: "集群节点B"
# SECRET_NODE_IP: "B_host"
# SECRET_USER_NAME: "B_user"
# SECRET_PASS_NAME: "B_password"
steps:
- name: 远程终端集群部署
image: appleboy/drone-ssh:latest
environment:
REMOTE_HOST: *DEPLOY_HOST
CONTAINER_NAME: *CONTAINER_NAME
FULL_PULL_REPO: *FULL_PULL_REPO
APP_REGISTRY: *APP_REGISTRY
PROJECT_PORT: *PROJECT_PORT
settings:
host: *DEPLOY_HOST
username:
from_secret: ${SECRET_USER_NAME}
password:
from_secret: ${SECRET_PASS_NAME}
secrets: [ NEXUS_DOCKER_USERNAME, NEXUS_DOCKER_PASSWORD ] # 这俩属于私密Secret直接进通道
# 💡 遵循官方文档指引 Step 2在 envs 里声明上面这些变量的名字(不区分大小写,插件会自动大写)
# 这样插件就会把这些变量强行同步到远程主机的 SSH 终端进程里
envs:
- REMOTE_HOST
- CONTAINER_NAME
- FULL_PULL_REPO
- APP_REGISTRY
- PROJECT_PORT
- NEXUS_DOCKER_USERNAME
- NEXUS_DOCKER_PASSWORD
# 💡 遵循官方文档指引 Step 3在脚本里统一改用标准的 $大写 符号来吃环境变量
script:
- echo "========================================="
- echo "🚀 开始部署节点:$REMOTE_HOST" # 👈 严格按文档走100% 能打印出 IP
- echo "========================================="
# 所有的参数均在远程机器通过系统大写变量精准传参
- echo `NEXUS_DOCKER_USERNAME:"$NEXUS_DOCKER_USERNAME NEXUS_DOCKER_PASSWORD:$NEXUS_DOCKER_PASSWORD APP_REGISTRY:$APP_REGISTRY`
- docker login --username "$NEXUS_DOCKER_USERNAME" --password "$NEXUS_DOCKER_PASSWORD" "$APP_REGISTRY"
- docker stop "$CONTAINER_NAME" || true
- docker rm "$CONTAINER_NAME" || true
- docker pull "$FULL_PULL_REPO"
- docker run -d --name "$CONTAINER_NAME" -p "$PROJECT_PORT":"$PROJECT_PORT" --restart always "$FULL_PULL_REPO"
when:
event: [push, pull_request, manual]
branch: master
depends_on:
- build