2025-11-28 19:00:26 +08:00
|
|
|
|
kind: pipeline
|
|
|
|
|
|
type: docker
|
2025-12-08 01:53:13 -05:00
|
|
|
|
name: pr-ci
|
|
|
|
|
|
|
|
|
|
|
|
# PR 流水线:仅在 PR 触发
|
|
|
|
|
|
trigger:
|
|
|
|
|
|
event:
|
|
|
|
|
|
- pull_request
|
|
|
|
|
|
# 如需限制目标分支,可加 target:
|
|
|
|
|
|
# target:
|
|
|
|
|
|
# - main
|
2025-11-28 19:00:26 +08:00
|
|
|
|
|
2025-12-07 21:56:08 -05:00
|
|
|
|
workspace:
|
|
|
|
|
|
base: /drone
|
|
|
|
|
|
path: .
|
|
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- name: maven-cache
|
2025-12-08 19:01:31 -05:00
|
|
|
|
path: /localcache/maven/repository
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- name: npm-cache
|
2025-12-08 19:01:31 -05:00
|
|
|
|
path: /localcache/npm-cache
|
2025-12-05 04:46:52 -05:00
|
|
|
|
|
2025-11-28 19:00:26 +08:00
|
|
|
|
clone:
|
2025-12-05 12:21:23 +08:00
|
|
|
|
depth: 0
|
2025-12-05 11:23:48 +08:00
|
|
|
|
image: drone/git:latest
|
2025-12-08 01:53:13 -05:00
|
|
|
|
pull: false
|
2025-11-28 19:00:26 +08:00
|
|
|
|
|
|
|
|
|
|
steps:
|
2025-12-07 23:29:40 -05:00
|
|
|
|
- name: java-build-test
|
2025-12-08 17:49:56 -05:00
|
|
|
|
image: registry.cn-beijing.aliyuncs.com/yinzy/maven:jk3.9-8
|
2025-12-07 23:29:40 -05:00
|
|
|
|
pull: false
|
2025-12-08 19:01:31 -05:00
|
|
|
|
volumes:
|
|
|
|
|
|
- name: maven-cache
|
|
|
|
|
|
path: /localcache/maven/repository
|
2025-12-07 23:29:40 -05:00
|
|
|
|
environment:
|
|
|
|
|
|
MAVEN_OPTS: -Dmaven.repo.local=/localcache/maven/repository
|
|
|
|
|
|
commands:
|
2025-12-08 17:52:01 -05:00
|
|
|
|
# - touch /localcache/maven/repository/bbb.txt
|
|
|
|
|
|
# - ls -lah /localcache/maven/repository
|
2025-12-07 23:29:40 -05:00
|
|
|
|
- mkdir -p ~/.m2
|
2025-12-08 11:47:14 -05:00
|
|
|
|
- cat ~/.m2/settings.xml
|
2025-12-08 17:52:01 -05:00
|
|
|
|
- mvn -B clean test package
|
2025-12-07 23:29:40 -05:00
|
|
|
|
- ls -lah target/*.jar || (echo "JAR file not found!" && exit 1)
|
2025-12-08 01:53:13 -05:00
|
|
|
|
|
2025-12-08 03:13:39 -05:00
|
|
|
|
- name: frontend-build
|
2025-12-08 03:19:00 -05:00
|
|
|
|
image: registry.cn-beijing.aliyuncs.com/yinzy/node:20.11-alpine3.19
|
2025-12-08 03:13:39 -05:00
|
|
|
|
pull: false
|
2025-12-08 19:01:31 -05:00
|
|
|
|
volumes:
|
|
|
|
|
|
- name: npm-cache
|
|
|
|
|
|
path: /localcache/npm-cache
|
2025-12-08 03:13:39 -05:00
|
|
|
|
commands:
|
|
|
|
|
|
- cd vue-ui
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- npm config set cache /localcache/npm-cache/.npm
|
|
|
|
|
|
- npm ci -prefer-offline --registry=https://registry.npmmirror.com
|
2025-12-08 03:13:39 -05:00
|
|
|
|
- npm run build
|
|
|
|
|
|
- ls -lah dist
|
|
|
|
|
|
|
2025-12-08 01:53:13 -05:00
|
|
|
|
# 如需其他检查步骤,可在这里继续追加
|
|
|
|
|
|
- name: summary
|
|
|
|
|
|
image: alpine
|
|
|
|
|
|
pull: false
|
|
|
|
|
|
commands:
|
|
|
|
|
|
- echo "✅ PR pipeline completed at $(date)"
|
2025-12-07 23:29:40 -05:00
|
|
|
|
when:
|
2025-12-08 01:53:13 -05:00
|
|
|
|
status: [ success, failure ]
|
2025-12-08 03:33:11 -05:00
|
|
|
|
depends_on:
|
|
|
|
|
|
- java-build-test
|
|
|
|
|
|
- frontend-build
|
2025-12-08 01:53:13 -05:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
kind: pipeline
|
|
|
|
|
|
type: docker
|
|
|
|
|
|
name: release-tag
|
|
|
|
|
|
|
|
|
|
|
|
# Tag 流水线:仅在 tag 触发(不要加 branch 限制)
|
|
|
|
|
|
trigger:
|
|
|
|
|
|
event:
|
|
|
|
|
|
- tag
|
2025-12-08 02:04:59 -05:00
|
|
|
|
branch:
|
2025-12-08 02:21:16 -05:00
|
|
|
|
- "**"
|
2025-12-08 01:53:13 -05:00
|
|
|
|
|
|
|
|
|
|
workspace:
|
|
|
|
|
|
base: /drone
|
|
|
|
|
|
path: .
|
|
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- name: maven-cache
|
2025-12-08 19:01:31 -05:00
|
|
|
|
path: /localcache/maven/repository
|
2025-12-08 01:53:13 -05:00
|
|
|
|
- name: docker_sock
|
2025-12-08 19:01:31 -05:00
|
|
|
|
path: /var/run/docker.sock
|
2025-12-08 01:53:13 -05:00
|
|
|
|
- name: jar-cache
|
2025-12-08 19:01:31 -05:00
|
|
|
|
path: /localcache/apps
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- name: npm-cache
|
2025-12-08 19:01:31 -05:00
|
|
|
|
path: /localcache/npm-cache
|
2025-12-10 08:27:42 -05:00
|
|
|
|
- name: certs
|
2025-12-10 09:03:03 -05:00
|
|
|
|
path: /localcache/registry_certs # 你提前放好 ca.crt
|
2025-12-07 23:29:40 -05:00
|
|
|
|
|
2025-12-08 01:53:13 -05:00
|
|
|
|
clone:
|
|
|
|
|
|
depth: 0
|
|
|
|
|
|
image: drone/git:latest
|
|
|
|
|
|
pull: false
|
|
|
|
|
|
|
|
|
|
|
|
steps:
|
2025-12-08 03:13:39 -05:00
|
|
|
|
- name: frontend-build
|
2025-12-08 03:28:28 -05:00
|
|
|
|
image: registry.cn-beijing.aliyuncs.com/yinzy/node:20.11-alpine3.19
|
2025-12-08 03:13:39 -05:00
|
|
|
|
pull: false
|
|
|
|
|
|
volumes:
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- name: npm-cache
|
|
|
|
|
|
path: /localcache/npm-cache
|
2025-12-08 03:13:39 -05:00
|
|
|
|
- name: jar-cache # 复用已有 /localcache,用于暂存 dist.zip
|
2025-12-08 11:44:39 -05:00
|
|
|
|
path: /localcache/apps
|
2025-12-08 03:13:39 -05:00
|
|
|
|
commands:
|
|
|
|
|
|
- cd vue-ui
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- npm config set cache /localcache/npm-cache/.npm
|
|
|
|
|
|
- npm ci -prefer-offline --registry=https://registry.npmmirror.com
|
2025-12-08 03:13:39 -05:00
|
|
|
|
- npm run build
|
2025-12-08 03:48:40 -05:00
|
|
|
|
- cd dist && tar -czf ../dist.tgz . && cd ..
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- mkdir -p /localcache/apps/${DRONE_REPO_NAME}
|
2025-12-10 09:49:01 -05:00
|
|
|
|
- cp dist.tgz /localcache/apps/${DRONE_REPO_NAME}/dist-${DRONE_TAG}.tgz -f && cp dist.tgz ../ -f
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- ls -lah /localcache/apps/${DRONE_REPO_NAME}/dist-${DRONE_TAG}.tgz
|
2025-12-10 09:49:01 -05:00
|
|
|
|
# - cd ../ && ls -lah vue-ui/dist.tgz
|
2025-12-08 03:13:39 -05:00
|
|
|
|
|
2025-11-28 19:00:26 +08:00
|
|
|
|
- name: java-build
|
2025-12-08 11:45:45 -05:00
|
|
|
|
image: registry.cn-beijing.aliyuncs.com/yinzy/maven:jk3.9-8
|
2025-12-05 10:58:02 +08:00
|
|
|
|
pull: false
|
2025-12-07 21:56:08 -05:00
|
|
|
|
volumes:
|
|
|
|
|
|
- name: maven-cache
|
|
|
|
|
|
path: /localcache/maven/repository
|
2025-12-07 23:29:40 -05:00
|
|
|
|
- name: jar-cache
|
2025-12-08 11:44:39 -05:00
|
|
|
|
path: /localcache/apps
|
2025-12-05 04:01:07 -05:00
|
|
|
|
environment:
|
2025-12-07 21:56:08 -05:00
|
|
|
|
MAVEN_OPTS: -Dmaven.repo.local=/localcache/maven/repository
|
2025-11-28 19:00:26 +08:00
|
|
|
|
commands:
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- mvn -B -DskipTests=true clean package
|
2025-12-07 21:56:08 -05:00
|
|
|
|
- ls -lah target/*.jar || (echo "JAR file not found!" && exit 1)
|
2025-12-07 22:23:03 -05:00
|
|
|
|
- |
|
2025-12-08 11:44:39 -05:00
|
|
|
|
mkdir -p /localcache/apps/${DRONE_REPO_NAME}
|
2025-12-07 22:23:03 -05:00
|
|
|
|
JAR_FILE=$(ls target/*.jar 2>/dev/null | head -1)
|
|
|
|
|
|
if [ -n "$JAR_FILE" ]; then
|
2025-12-08 11:44:39 -05:00
|
|
|
|
cp "$JAR_FILE" /localcache/apps/${DRONE_REPO_NAME}/ -f
|
|
|
|
|
|
echo "✅ JAR file backed up to /localcache/apps/${DRONE_REPO_NAME}/$(basename $JAR_FILE)"
|
|
|
|
|
|
ls -lh /localcache/apps/${DRONE_REPO_NAME}/
|
2025-12-07 22:23:03 -05:00
|
|
|
|
else
|
|
|
|
|
|
echo "⚠️ No JAR file found to backup"
|
|
|
|
|
|
fi
|
2025-12-10 09:40:39 -05:00
|
|
|
|
#
|
|
|
|
|
|
# - name: debug_context
|
|
|
|
|
|
# image: alpine
|
|
|
|
|
|
# commands:
|
|
|
|
|
|
# - pwd
|
|
|
|
|
|
# - ls -R .
|
|
|
|
|
|
# depends_on:
|
|
|
|
|
|
# - frontend-build
|
2025-12-10 09:33:15 -05:00
|
|
|
|
|
2025-12-08 03:13:39 -05:00
|
|
|
|
- name: frontend_docker_build
|
2025-12-10 06:18:37 -05:00
|
|
|
|
image: registry.cn-beijing.aliyuncs.com/yinzy/drone-plugins:docker-latest
|
2025-12-08 03:13:39 -05:00
|
|
|
|
pull: false
|
2025-12-10 06:18:37 -05:00
|
|
|
|
settings:
|
2025-12-10 08:27:42 -05:00
|
|
|
|
volumes:
|
|
|
|
|
|
- name: certs
|
|
|
|
|
|
path: /etc/docker/certs.d/docker-registry.local:36000/
|
2025-12-10 09:45:35 -05:00
|
|
|
|
debug: true
|
|
|
|
|
|
daemon_off: false # 👈 必须启用 DinD 才能让 extra_files 生效
|
2025-12-10 06:18:37 -05:00
|
|
|
|
# 1. 仓库认证信息
|
|
|
|
|
|
registry:
|
2025-12-10 08:27:42 -05:00
|
|
|
|
from_secret: local_registry_base_url
|
2025-12-10 06:18:37 -05:00
|
|
|
|
username:
|
|
|
|
|
|
from_secret: local_registry_user
|
|
|
|
|
|
password:
|
|
|
|
|
|
from_secret: local_registry_pass
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 镜像名称 (不包含 Tag)
|
2025-12-10 10:11:40 -05:00
|
|
|
|
repo: docker-registry.local:36000/jk/apps/${DRONE_REPO_NAME}-front
|
2025-12-10 06:18:37 -05:00
|
|
|
|
|
|
|
|
|
|
# 3. 指定 Dockerfile 位置
|
|
|
|
|
|
dockerfile: docker/Dockerfile-frontend
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 构建上下文 (Context),默认为 . (根目录)
|
|
|
|
|
|
context: .
|
|
|
|
|
|
|
|
|
|
|
|
# 5. 生成的 Tags
|
|
|
|
|
|
# 插件会自动生成 repo:tag
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- front-${DRONE_TAG} # e.g. back-v1.0.0
|
|
|
|
|
|
- front-latest # 方便随时拉取最新版
|
|
|
|
|
|
# - front-${DRONE_COMMIT_SHA:0:8}
|
2025-12-10 07:56:54 -05:00
|
|
|
|
# 如果你需要把 dist.tgz 复制给 build
|
|
|
|
|
|
extra_files:
|
2025-12-10 09:50:03 -05:00
|
|
|
|
- dist.tgz
|
2025-12-10 09:33:15 -05:00
|
|
|
|
depends_on:
|
|
|
|
|
|
- frontend-build
|
2025-12-10 09:42:04 -05:00
|
|
|
|
# - debug_context
|
2025-12-08 03:13:39 -05:00
|
|
|
|
|
2025-12-10 12:02:53 -05:00
|
|
|
|
- name: backend_docker_build
|
|
|
|
|
|
image: registry.cn-beijing.aliyuncs.com/yinzy/drone-plugins:docker-latest
|
2025-12-07 22:18:43 -05:00
|
|
|
|
pull: false
|
2025-12-10 12:02:53 -05:00
|
|
|
|
settings:
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- name: certs
|
|
|
|
|
|
path: /etc/docker/certs.d/docker-registry.local:36000/
|
|
|
|
|
|
debug: true
|
|
|
|
|
|
daemon_off: false # 👈 必须启用 DinD 才能让 extra_files 生效
|
|
|
|
|
|
# 1. 仓库认证信息
|
|
|
|
|
|
registry:
|
|
|
|
|
|
from_secret: local_registry_base_url
|
|
|
|
|
|
username:
|
|
|
|
|
|
from_secret: local_registry_user
|
|
|
|
|
|
password:
|
|
|
|
|
|
from_secret: local_registry_pass
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 镜像名称 (不包含 Tag)
|
|
|
|
|
|
repo: docker-registry.local:36000/jk/apps/${DRONE_REPO_NAME}-backend
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 指定 Dockerfile 位置
|
|
|
|
|
|
dockerfile: docker/Dockerfile
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 构建上下文 (Context),默认为 . (根目录)
|
|
|
|
|
|
context: .
|
|
|
|
|
|
|
|
|
|
|
|
# 5. 生成的 Tags
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- backend-${DRONE_TAG} # e.g. back-v1.0.0
|
|
|
|
|
|
- backend-latest # 方便随时拉取最新版
|
|
|
|
|
|
extra_files:
|
|
|
|
|
|
- drone-test-1.0.jar
|
2025-12-07 22:18:43 -05:00
|
|
|
|
depends_on:
|
|
|
|
|
|
- java-build
|
2025-12-07 23:29:40 -05:00
|
|
|
|
|
|
|
|
|
|
- name: gitea_release
|
2025-12-08 01:55:01 -05:00
|
|
|
|
image: registry.cn-beijing.aliyuncs.com/yinzy/drone-plugins:gitea-release-latest
|
2025-12-07 23:29:40 -05:00
|
|
|
|
pull: false
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- name: jar-cache
|
2025-12-08 11:44:39 -05:00
|
|
|
|
path: /localcache/apps
|
2025-12-07 23:29:40 -05:00
|
|
|
|
settings:
|
|
|
|
|
|
api_key:
|
2025-12-08 01:55:01 -05:00
|
|
|
|
from_secret: gitea_token
|
2025-12-07 23:29:40 -05:00
|
|
|
|
base_url:
|
|
|
|
|
|
from_secret: gitea_base_url
|
|
|
|
|
|
files:
|
2025-12-08 11:44:39 -05:00
|
|
|
|
- /localcache/apps/${DRONE_REPO_NAME}/*.jar
|
|
|
|
|
|
- /localcache/apps/${DRONE_REPO_NAME}/dist-${DRONE_TAG}.tgz
|
2025-12-07 23:29:40 -05:00
|
|
|
|
title: Release ${DRONE_TAG}
|
|
|
|
|
|
note: |
|
|
|
|
|
|
Release ${DRONE_TAG}
|
2025-12-08 01:53:13 -05:00
|
|
|
|
|
2025-12-07 23:29:40 -05:00
|
|
|
|
Commit: ${DRONE_COMMIT_SHA:0:8}
|
|
|
|
|
|
Build: ${DRONE_BUILD_NUMBER}
|
|
|
|
|
|
file_exists: overwrite
|
|
|
|
|
|
depends_on:
|
|
|
|
|
|
- docker_build
|
2025-12-08 03:28:28 -05:00
|
|
|
|
- frontend_docker_build
|
2025-12-08 06:01:56 -05:00
|
|
|
|
- name: push_acr
|
|
|
|
|
|
image: docker:latest
|
|
|
|
|
|
pull: false
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- name: docker_sock
|
|
|
|
|
|
path: /var/run/docker.sock
|
|
|
|
|
|
environment:
|
|
|
|
|
|
ACR_USER:
|
|
|
|
|
|
from_secret: aliyun_acr_username # 阿里云访问凭证用户名
|
|
|
|
|
|
ACR_PASS:
|
|
|
|
|
|
from_secret: aliyun_acr_password # 阿里云访问凭证密码
|
2025-12-08 06:11:28 -05:00
|
|
|
|
ACR_REGISTRY: registry.cn-beijing.aliyuncs.com
|
2025-12-08 06:01:56 -05:00
|
|
|
|
ACR_NAMESPACE: yinzy
|
2025-12-08 06:11:28 -05:00
|
|
|
|
ACR_REPO: cicd
|
2025-12-08 06:01:56 -05:00
|
|
|
|
commands:
|
2025-12-08 06:11:28 -05:00
|
|
|
|
- echo "$ACR_PASS" | docker login $ACR_REGISTRY -u "$ACR_USER" --password-stdin
|
|
|
|
|
|
# 后端
|
|
|
|
|
|
- docker tag ${DRONE_REPO_NAME}:latest $ACR_REGISTRY/$ACR_NAMESPACE/$ACR_REPO:back-${DRONE_TAG}
|
|
|
|
|
|
- docker push $ACR_REGISTRY/$ACR_NAMESPACE/$ACR_REPO:back-${DRONE_TAG}
|
|
|
|
|
|
# 前端
|
|
|
|
|
|
- docker tag ${DRONE_REPO_NAME}-frontend:latest $ACR_REGISTRY/$ACR_NAMESPACE/$ACR_REPO:front-${DRONE_TAG}
|
|
|
|
|
|
- docker push $ACR_REGISTRY/$ACR_NAMESPACE/$ACR_REPO:front-${DRONE_TAG}
|
2025-12-08 06:01:56 -05:00
|
|
|
|
depends_on:
|
|
|
|
|
|
- docker_build
|
|
|
|
|
|
- frontend_docker_build
|
2025-12-10 10:57:20 -05:00
|
|
|
|
when:
|
|
|
|
|
|
event:
|
|
|
|
|
|
exclude: [ "**" ]
|
2025-12-07 21:56:08 -05:00
|
|
|
|
|
2025-11-28 19:00:26 +08:00
|
|
|
|
- name: summary
|
|
|
|
|
|
image: alpine
|
2025-12-05 10:58:02 +08:00
|
|
|
|
pull: false
|
2025-11-28 19:00:26 +08:00
|
|
|
|
commands:
|
2025-12-08 01:53:13 -05:00
|
|
|
|
- echo "✅ Tag pipeline completed at $(date)"
|
2025-11-28 19:00:26 +08:00
|
|
|
|
when:
|
2025-12-08 03:41:22 -05:00
|
|
|
|
status: [ success, failure ]
|
|
|
|
|
|
depends_on:
|
|
|
|
|
|
- gitea_release
|