更新 .drone.yml

This commit is contained in:
zhangkaihuai
2025-07-22 07:26:24 +00:00
parent 9092b1e960
commit 88dcbf3196

View File

@@ -1,160 +1,162 @@
kind: pipeline kind: pipeline
type: docker type: docker
name: mosr-web name: mosr-web
platform: platform:
os: linux os: linux
arch: arm64 arch: arm64
steps: steps:
- name: build-package - name: build-package
image: node:18.19.0 image: node:18.19.0
volumes: volumes:
- name: cache - name: cache
path: /drone/src/node_modules path: /drone/src/node_modules
commands: commands:
- export CI=false - export CI=false
- mkdir -p /app/build/$DRONE_REPO_NAME - rm -rf /drone/src/node_modules/.acorn-import-phases-HnhoL33R
- rm -rf /app/build/$DRONE_REPO_NAME/* - rm -rf /drone/src/node_modules/acorn-import-phases
- cp deployment.yml /app/build/$DRONE_REPO_NAME/ - mkdir -p /app/build/$DRONE_REPO_NAME
- cp Dockerfile /app/build/$DRONE_REPO_NAME/ - rm -rf /app/build/$DRONE_REPO_NAME/*
- cp .dockerignore /app/build/$DRONE_REPO_NAME/ - cp deployment.yml /app/build/$DRONE_REPO_NAME/
- cp default.conf /app/build/$DRONE_REPO_NAME/ - cp Dockerfile /app/build/$DRONE_REPO_NAME/
- cp docker.sh /app/build/$DRONE_REPO_NAME/ - cp .dockerignore /app/build/$DRONE_REPO_NAME/
- cp nginx.conf /app/build/$DRONE_REPO_NAME/ - cp default.conf /app/build/$DRONE_REPO_NAME/
- npm -v - cp docker.sh /app/build/$DRONE_REPO_NAME/
- node -v - cp nginx.conf /app/build/$DRONE_REPO_NAME/
- mkdir -p ./node_modules - npm -v
- export NODE_MODULES_PATH=`pwd`/node_modules - node -v
- npm config set registry https://registry.npmmirror.com - mkdir -p ./node_modules
- set NODE_OPTIONS=--openssl-legacy-provider - export NODE_MODULES_PATH=`pwd`/node_modules
- npm install --legacy-peer-deps - npm config set registry https://registry.npmmirror.com
- npm install codemirror - set NODE_OPTIONS=--openssl-legacy-provider
# - npm install patch-package - npm install --legacy-peer-deps
# - npx patch-package - npm install codemirror
# - npm info unplugin-icons # - npm install patch-package
- npm list package-manager-detector # - npx patch-package
# - npm install unplugin-icons@latest @antfu/install-pkg@latest package-manager-detector@latest # - npm info unplugin-icons
- npm run build - npm list package-manager-detector
- ls /app/build/$DRONE_REPO_NAME/ # - npm install unplugin-icons@latest @antfu/install-pkg@latest package-manager-detector@latest
- echo $NODE_MODULES_PATH - npm run build
- cp -r dist /app/build/$DRONE_REPO_NAME - ls /app/build/$DRONE_REPO_NAME/
- echo $NODE_MODULES_PATH
- cp -r dist /app/build/$DRONE_REPO_NAME
- name: build-docker-prod # 制作docker镜像
image: 10.7.127.190:38080/docker/docker # 使用官方docker镜像
volumes: # 将容器内目录挂载到宿主机 - name: build-docker-prod # 制作docker镜像
- name: docker image: 10.7.127.190:38080/docker/docker # 使用官方docker镜像
path: /var/run/docker.sock # 挂载宿主机的docker volumes: # 将容器内目录挂载宿主机
- name: config - name: docker
path: /config path: /var/run/docker.sock # 挂载宿主机的docker
environment: # 获取到密文的docker用户名和密码 - name: config
DOCKER_USERNAME: path: /config
from_secret: docker_username environment: # 获取到密文的docker用户名和密码
DOCKER_PASSWORD: DOCKER_USERNAME:
from_secret: docker_password from_secret: docker_username
REGISTRY: DOCKER_PASSWORD:
from_secret: registry from_secret: docker_password
REGISTRY_NAMESPACE: REGISTRY:
from_secret: registry_namespace from_secret: registry
commands: # 定义在Docker容器中执行的shell命令 REGISTRY_NAMESPACE:
- cat Dockerfile from_secret: registry_namespace
- sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml commands: # 定义在Docker容器中执行的shell命令
- sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml - cat Dockerfile
- sed -i 's/$DRONE_REPO_NAME/'"$DRONE_REPO_NAME"'/' deployment.yml - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml
- sed -i 's/$DRONE_COMMIT/'"$DRONE_COMMIT"'/' deployment.yml - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml
- sed -i 's/$PORTS_NAME/'"dasdafas"'/' deployment.yml - sed -i 's/$DRONE_REPO_NAME/'"$DRONE_REPO_NAME"'/' deployment.yml
- sed -i 's/$PORTS_PORT/'"8081"'/' deployment.yml - sed -i 's/$DRONE_COMMIT/'"$DRONE_COMMIT"'/' deployment.yml
- sed -i 's/$PROFILES/'"mosr"'/' nginx.conf - sed -i 's/$PORTS_NAME/'"dasdafas"'/' deployment.yml
# docker登录,不能在脚本中登录,并且不能使用docker login -u -p - sed -i 's/$PORTS_PORT/'"8081"'/' deployment.yml
- echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin - sed -i 's/$PROFILES/'"mosr"'/' nginx.conf
- chmod +x docker.sh # docker登录,不能在脚本中登录,并且不能使用docker login -u -p
- cat docker.sh - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin
- sh docker.sh - chmod +x docker.sh
# 执行完脚本删除本次制作的docker镜像,避免多次后当前runner空间不足 - cat docker.sh
- docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') - sh docker.sh
when: # 执行完脚本删除本次制作的docker镜像,避免多次后当前runner空间不足
branch: - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}')
- prod when:
branch:
- name: build-docker-dm # 制作docker镜像 - prod
image: docker # 使用官方docker镜像
volumes: # 将容器内目录挂载到宿主机 - name: build-docker-dm # 制作docker镜像
- name: docker image: docker # 使用官方docker镜像
path: /var/run/docker.sock # 挂载宿主机的docker volumes: # 将容器内目录挂载宿主机
- name: config - name: docker
path: /config path: /var/run/docker.sock # 挂载宿主机的docker
environment: # 获取到密文的docker用户名和密码 - name: config
DOCKER_USERNAME: path: /config
from_secret: docker_username environment: # 获取到密文的docker用户名和密码
DOCKER_PASSWORD: DOCKER_USERNAME:
from_secret: docker_password from_secret: docker_username
REGISTRY: DOCKER_PASSWORD:
from_secret: registry from_secret: docker_password
REGISTRY_NAMESPACE: REGISTRY:
from_secret: registry_namespace from_secret: registry
commands: # 定义在Docker容器中执行的shell命令 REGISTRY_NAMESPACE:
- cat Dockerfile from_secret: registry_namespace
- sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml commands: # 定义在Docker容器中执行的shell命令
- sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml - cat Dockerfile
- sed -i 's/$DRONE_REPO_NAME/'"$DRONE_REPO_NAME"'/' deployment.yml - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml
- sed -i 's/$DRONE_COMMIT/'"$DRONE_COMMIT"'/' deployment.yml - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml
- sed -i 's/$PORTS_NAME/'"dasdafas"'/' deployment.yml - sed -i 's/$DRONE_REPO_NAME/'"$DRONE_REPO_NAME"'/' deployment.yml
- sed -i 's/$PORTS_PORT/'"8082"'/' deployment.yml - sed -i 's/$DRONE_COMMIT/'"$DRONE_COMMIT"'/' deployment.yml
- sed -i 's/$PROFILES/'"mosr-dm"'/' nginx.conf - sed -i 's/$PORTS_NAME/'"dasdafas"'/' deployment.yml
# docker登录,不能在脚本中登录,并且不能使用docker login -u -p - sed -i 's/$PORTS_PORT/'"8082"'/' deployment.yml
- echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin - sed -i 's/$PROFILES/'"mosr-dm"'/' nginx.conf
- chmod +x docker.sh # docker登录,不能在脚本中登录,并且不能使用docker login -u -p
- cat docker.sh - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin
- sh docker.sh - chmod +x docker.sh
# 执行完脚本删除本次制作的docker镜像,避免多次后当前runner空间不足 - cat docker.sh
- docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') - sh docker.sh
when: # 执行完脚本删除本次制作的docker镜像,避免多次后当前runner空间不足
branch: - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}')
- dm when:
branch:
- name: drone-rancher-prod # rancher运行 - dm
image: bitnami/kubectl:1.26.13-debian-11-r1
volumes: # 将容器内目录挂载到宿主机 - name: drone-rancher-prod # rancher运行
- name: config image: bitnami/kubectl:1.26.13-debian-11-r1
path: /app/config # 将kubectl 配置文件挂载出来 volumes: # 将容器内目录挂载到宿主机
commands: # 定义在Docker容器中执行的shell命令 - name: config
# 将deployment中定义的变量替换为drone中的内置变量 path: /app/config # 将kubectl 配置文件挂载出来
- kubectl apply -f deployment.yml -n mosr --kubeconfig=/app/config/base-taishan-kubectl.yml commands: # 定义在Docker容器中执行的shell命令
when: # 将deployment中定义的变量替换为drone中的内置变量
branch: - kubectl apply -f deployment.yml -n mosr --kubeconfig=/app/config/base-taishan-kubectl.yml
- prod when:
branch:
- prod
- name: drone-rancher-dm # rancher运行
image: bitnami/kubectl:1.26.13-debian-11-r1
volumes: # 将容器内目录挂载到宿主机 - name: drone-rancher-dm # rancher运行
- name: config image: bitnami/kubectl:1.26.13-debian-11-r1
path: /app/config # 将kubectl 配置文件挂载出来 volumes: # 将容器内目录挂载到宿主机
commands: # 定义在Docker容器中执行的shell命令 - name: config
# 将deployment中定义的变量替换为drone中的内置变量 path: /app/config # 将kubectl 配置文件挂载出来
- kubectl apply -f deployment.yml -n mosr-dm --kubeconfig=/app/config/base-taishan-kubectl.yml commands: # 定义在Docker容器中执行的shell命令
when: # 将deployment中定义的变量替换为drone中的内置变量
branch: - kubectl apply -f deployment.yml -n mosr-dm --kubeconfig=/app/config/base-taishan-kubectl.yml
- dm when:
branch:
- dm
volumes:
- name: cache
host: volumes:
path: /home/npm/mosr-web - name: cache
- name: config # k8s对接的配置文件 host:
host: path: /home/npm/mosr-web
path: /home/kubect - name: config # k8s对接的配置文件
- name: docker # 宿主机中的docker host:
host: path: /home/kubect
path: /var/run/docker.sock - name: docker # 宿主机中的docker
host:
load: path: /var/run/docker.sock
trigger:
branch: load:
- prod trigger:
- dm branch:
event: - prod
- push - dm
event:
- push