drone.yml 01
Drone CI 会默认将项目代码 clone 下来,并在项目根目录执行 steps 中的命令。
流水线概览 https://drone.cool/pipeline/overview/
创建 .drone.yml
01:exec > build docker 并运行
type exec 在宿主机上直接执行命令
yaml
kind: pipeline
type: exec
name: 流水线名称
platform:
os: linux
arch: amd64
trigger:
branch:
include:
- master
- dev
steps:
- name: 编译image
commands:
- docker build -t hlx2-local .
- name: 运行image
commands:
- docker stop hlx2 || true
- docker rm hlx2 || true
- docker run -dit -p 25001:25001 --name hlx2 hlx2-local02:docker > 构建镜像并推送 ACR
plugins/docker 是官方插件,构建并推送镜像
appleboy/drone-ssh
from_secret
username:登陆 ACR 的用户名password:登陆 ACR 的密码ssh_host:登陆的 ssh 的服务器地址ssh_user:登陆的 ssh 的用户名ssh_pwd:登陆的 ssh 的密码
yaml
kind: pipeline
type: docker
name: 流水线名称
trigger:
branch:
include:
- master
steps:
- name: 构建并推送镜像
image: plugins/docker
settings:
registry: registry.cn-chengdu.aliyuncs.com
repo: registry.cn-chengdu.aliyuncs.com/qins-img/hlx2
tags:
- ${DRONE_BUILD_NUMBER}
username:
from_secret: username
password:
from_secret: password
- name: 部署到服务器
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_user
password:
from_secret: ssh_pwd
port: 22
script:
- echo "开始拉取镜像并重启服务..."
# 使用非交互式登录
- echo "$acr_password" | docker login -u $acr_username --password-stdin registry.cn-chengdu.aliyuncs.com
# 拉取镜像
- docker pull registry.cn-chengdu.aliyuncs.com/qins-img/hlx2:${DRONE_BUILD_NUMBER}
# 停止并删除旧容器
- docker stop hlx2 || true
- docker rm hlx2 || true
# 运行新容器
- docker run -dit --name hlx2 -p 25001:25001 --network nginx-net registry.cn-chengdu.aliyuncs.com/qins-img/hlx2:${DRONE_BUILD_NUMBER}
environment:
acr_username:
from_secret: username
acr_password:
from_secret: password03: docker > 构建 dist 然后上传服务器
yml
kind: pipeline
type: docker
name: wanx_cq_hr部署
trigger:
branch:
include:
- master
steps:
# 1. 安装依赖并构建
- name: 构建前端项目
image: node:20
commands:
- corepack enable && corepack prepare pnpm@latest --activate
- pnpm install --registry https://registry.npmmirror.com
- pnpm run build # 输出到 dist/
# 2. 清空服务器上的旧文件
- name: 清空旧文件
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_user
password:
from_secret: ssh_pwd
port: 22
script:
- rm -rf /opt/static/wanx_cq_hr
# 3. 上传 dist 到服务器
- name: 上传构建产物
image: appleboy/drone-scp
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_user
password:
from_secret: ssh_pwd
port: 22
target: /opt/static/wanx_cq_hr
source: dist