Skip to content

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-local

02: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: password

03: 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