35 Commits
Author SHA1 Message Date
曾志威 331896085d read Nexus credentials from shared Vault path
continuous-integration/drone/push Build is failing
2026-08-11 12:10:44 +08:00
曾志威 7ffcbdcdd6 pause deploy for secret injection diagnosis
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-08-11 12:04:33 +08:00
曾志威 3497567869 retry Drone push webhook
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-08-11 11:53:37 +08:00
曾志威 35406245ad trigger push event for Vault secret validation 2026-08-11 11:50:56 +08:00
曾志威 6511f24900 log Nexus secret lengths during diagnosis
continuous-integration/drone Build is failing
2026-08-11 11:43:19 +08:00
曾志威 fd0c20fc5a configure Vault secret resources for Drone
continuous-integration/drone Build is failing
2026-08-11 11:36:50 +08:00
曾志威 de7147ecce declare Vault-backed Drone secrets
continuous-integration/drone Build is failing
2026-08-11 11:33:02 +08:00
曾志威 8971f25023 read Docker registry credentials from Vault
continuous-integration/drone Build is failing
2026-08-11 11:18:03 +08:00
曾志威 e12ef00e50 read Nexus secrets from Vault paths
continuous-integration/drone Build is failing
2026-08-11 10:48:34 +08:00
曾志威 d47b62eb59 fallback Nexus credentials for WMS build
continuous-integration/drone Build is failing
2026-08-11 10:38:02 +08:00
曾志威 9dc7e0fe49 serialize builds sharing gradle cache
continuous-integration/drone Build is failing
2026-08-10 01:18:48 +08:00
曾志威 cbe714d0b6 persist runner cache and reduce build diagnostics
continuous-integration/drone Build was killed
2026-08-10 00:56:56 +08:00
曾志威 6b3dfc0f50 use docker dns instead of host aliases
continuous-integration/drone Build was killed
2026-08-09 23:51:36 +08:00
曾志威 a27dcf3256 configure nexus credentials for gradle build 2026-08-09 23:46:05 +08:00
曾志威 33c8e2b350 fix drone clone routing and build image
continuous-integration/drone Build is failing
2026-08-09 23:24:16 +08:00
曾志威 ac10d5cf3e init
continuous-integration/drone/push Build was killed
continuous-integration/drone Build was killed
2026-08-09 14:36:02 +08:00
曾志威 37e44ae70f init
continuous-integration/drone/push Build was killed
continuous-integration/drone Build is failing
2026-08-09 05:44:53 +08:00
曾志威 21b2717a45 ci: persist WES workspace for incremental builds
continuous-integration/drone Build was killed
2026-08-07 20:33:59 +08:00
曾志威 dcd0a05e1a ci: fix Gradle process diagnostics 2026-08-07 20:27:34 +08:00
曾志威 eebfb30534 ci: cache and tune Gradle compilation
continuous-integration/drone Build is passing
2026-08-07 18:33:38 +08:00
曾志威 6f6336ba20 ci: add Gradle build diagnostics
continuous-integration/drone Build is passing
2026-08-07 18:00:11 +08:00
曾志威 ec690ecb84 init
continuous-integration/drone Build is passing
2026-08-07 17:47:19 +08:00
曾志威 9c23e6c256 init
continuous-integration/drone Build was killed
2026-08-07 17:41:35 +08:00
曾志威 c293dc13db init
continuous-integration/drone Build is passing
2026-08-07 13:17:16 +08:00
曾志威 50f2266172 init
continuous-integration/drone Build is failing
2026-08-07 13:09:39 +08:00
曾志威 619a5c7c5e init
continuous-integration/drone Build was killed
2026-08-07 11:56:20 +08:00
曾志威 b0bcf7d43a init
continuous-integration/drone Build is passing
2026-08-07 11:45:49 +08:00
曾志威 a07413d8b6 init
continuous-integration/drone Build is failing
2026-08-07 11:37:35 +08:00
曾志威 a5a8498839 init
continuous-integration/drone Build is failing
2026-08-07 11:25:30 +08:00
曾志威 4f395c9997 init 2026-08-07 11:24:57 +08:00
曾志威 f1ffdcddac init
continuous-integration/drone Build is passing
2026-08-07 11:21:39 +08:00
曾志威 331f7f03bb init 2026-08-07 11:21:22 +08:00
曾志威 d279c78d6c init
continuous-integration/drone Build encountered an error
2026-08-07 11:17:47 +08:00
曾志威 10365464fa init
continuous-integration/drone Build is passing
2026-08-07 11:04:05 +08:00
曾志威 2fe6f40fd9 ci: add Shopee WES image build 2026-08-07 10:48:51 +08:00
5 changed files with 263 additions and 25 deletions
+157 -20
View File
@@ -1,30 +1,167 @@
kind: pipeline
name: default
steps:
# 步骤2:拉取其他 Git 项目(common-utils
- name: clone-other-project
image: alpine/git:latest # 轻量 Git 镜像
commands:
# 拉取其他项目到指定目录
- >
git clone
-b proj-walle-snd-3.3-dev
--depth 1
https://zwzeng:glpat-Ht2452yuDgM84iNzu32b@git.ittx.com.cn/wms/wms-loghub-3-x.git
clone:
retries: 3
# docker 打包
concurrency:
limit: 1
steps:
# 拉取并打包 Shopee WES
- name: deploy
image: registry.cn-hangzhou.aliyuncs.com/loghub/wms-system-service:gradle8
image: gradle:9-alpine
pull: if-not-exists
environment:
DOCKER_CONFIG: /home/gradle/.docker
JIB_USERNAME:
from_secret: docker_username
JIB_PASSWORD:
from_secret: docker_password
NEXUS_USERNAME:
from_secret: nexus_username
NEXUS_PASSWORD:
from_secret: nexus_password
NPM_USERNAME:
from_secret: nexus_username
NPM_PASSWORD:
from_secret: nexus_password
commands:
- cd wms-loghub-3-x
- |
if grep -qs ' /cache ' /proc/self/mountinfo && [ -w /cache ]; then
export GRADLE_USER_HOME=/cache/wes-loghub/gradle-9.6.1
export WES_WORKSPACE=/cache/wes-loghub/workspace
mkdir -p "$GRADLE_USER_HOME" "$(dirname "$WES_WORKSPACE")"
echo "===== persistent Gradle cache enabled: $GRADLE_USER_HOME ====="
echo "===== persistent WES workspace enabled: $WES_WORKSPACE ====="
else
export GRADLE_USER_HOME=/opt/gradle-user-home
export WES_WORKSPACE=/drone/src/wes-loghub
echo "===== WARNING: /cache is not mounted; using ephemeral Gradle cache ====="
fi
- git --version
- |
test -n "${NEXUS_USERNAME:-${NPM_USERNAME:-}}" || {
echo "Nexus username secret is missing"
exit 1
}
test -n "${NEXUS_PASSWORD:-${NPM_PASSWORD:-}}" || {
echo "Nexus password secret is missing"
exit 1
}
- |
if [ -d "$WES_WORKSPACE/.git" ]; then
echo "===== updating persistent WES workspace ====="
time git -C "$WES_WORKSPACE" fetch \
--depth 1 \
--no-tags \
https://zwzeng:glpat-nuzkafsdgYKM0KAgvpL4Bm86MQp1OnkH.01.0w0tr4xa1@git.ittx.com.cn/wms/wes-loghub.git \
proj-shopee-test
git -C "$WES_WORKSPACE" checkout -B proj-shopee-test FETCH_HEAD
else
echo "===== creating persistent WES workspace ====="
time git clone \
-b proj-shopee-test \
--depth 1 \
--no-tags \
https://zwzeng:glpat-nuzkafsdgYKM0KAgvpL4Bm86MQp1OnkH.01.0w0tr4xa1@git.ittx.com.cn/wms/wes-loghub.git \
"$WES_WORKSPACE"
fi
git -C "$WES_WORKSPACE" remote set-url origin https://git.ittx.com.cn/wms/wes-loghub.git
- git -C "$WES_WORKSPACE" log -1 --format='===== WES commit %H %s ====='
- cd "$WES_WORKSPACE"
- |
(
gradle_pids() {
for proc_path in /proc/[0-9]*; do
[ -r "$proc_path/cmdline" ] || continue
proc_cmd=$(tr '\0' ' ' < "$proc_path/cmdline" 2>/dev/null)
case "$proc_cmd" in
*GradleDaemon*|*GradleWorkerMain*) basename "$proc_path" ;;
esac
done
}
heartbeat_count=0
while true; do
heartbeat_count=$((heartbeat_count + 1))
echo "===== build heartbeat $(date -Iseconds) ====="
echo "load: $(cat /proc/loadavg)"
awk '/MemTotal|MemAvailable/ { printf "%s %s kB ", $1, $2 } END { print "" }' /proc/meminfo
echo "===== active Gradle tasks ====="
cat /tmp/gradle-active-tasks 2>/dev/null || echo "none"
echo "===== top processes ====="
if command -v top >/dev/null 2>&1; then
top -b -n 1 2>/dev/null | head -n 20
else
ps -ef
fi
echo "===== Gradle JVM I/O ====="
for pid in $(gradle_pids); do
echo "--- pid=$pid cmd=$(tr '\0' ' ' < /proc/$pid/cmdline 2>/dev/null)"
awk '/read_bytes|write_bytes|cancelled_write_bytes/ { printf "%s ", $0 } END { print "" }' "/proc/$pid/io" 2>/dev/null || true
done
if [ $((heartbeat_count % 15)) -eq 0 ]; then
echo "===== Gradle JVM thread dump after $((heartbeat_count * 60)) seconds ====="
for pid in $(gradle_pids); do
jcmd "$pid" Thread.print -l || true
done
fi
sleep 60
done
) &
echo $! > /tmp/build-heartbeat.pid
trap 'kill "$(cat /tmp/build-heartbeat.pid)" 2>/dev/null || true' EXIT
- >
gradle jib -stacktrace
--parallel
-Pmax-workers=16
time gradle jib -stacktrace
--init-script=/drone/src/gradle-repositories.init.gradle
--init-script=/drone/src/gradle-diagnostics.init.gradle
--no-daemon
--info
--console=plain
--warning-mode=summary
--build-cache
--configure-on-demand
--parallel
--max-workers=8
-x test
-PdockerBuild=true
-Dcybertrans.idp.enabled=false
-Djib.from.image=registry.cn-hangzhou.aliyuncs.com/loghub/wms-system-service:snde-jdk
-Djib.to.image=registry.cn-hangzhou.aliyuncs.com/loghub/wms-system-service
-Djib.to.tags=proj-walle-snde-wms-dev
-Djib.disableUpdateChecks=true
-Djib.baseImageCache=$GRADLE_USER_HOME/caches/jib/base
-Djib.applicationCache=$GRADLE_USER_HOME/caches/jib/application
-Djib.from.image=registry.cn-hangzhou.aliyuncs.com/ttx/amazoncorretto:25-alpine3.23-jdk
-Djib.from.auth.username=$JIB_USERNAME
-Djib.from.auth.password=$JIB_PASSWORD
-Djib.to.auth.username=$JIB_USERNAME
-Djib.to.auth.password=$JIB_PASSWORD
-Djib.to.image=registry.cn-hangzhou.aliyuncs.com/loghub/wes:shopee-wes-test-3
-Djib.to.tags=shopee-wes-test-3
-Djib.container.entrypoint='INHERIT'
-Djib.container.args='java,-Dfile.encoding=utf-8,-Dspring.profiles.active=k8s,-Dserver.port=9210,-cp,/app/resources:/app/classes:/app/libs/*,com.ittx.Application'
- >
kill "$(cat /tmp/build-heartbeat.pid)" 2>/dev/null || true
---
kind: secret
name: docker_username
get:
path: drone/data/docker_username
name: docker_username
---
kind: secret
name: docker_password
get:
path: drone/data/docker_password
name: docker_password
---
kind: secret
name: nexus_username
get:
path: drone/data/nexus
name: nexus_username
---
kind: secret
name: nexus_password
get:
path: drone/data/nexus
name: nexus_password
+1
View File
@@ -0,0 +1 @@
.idea/
-5
View File
@@ -1,5 +0,0 @@
FROM rabbitmq:4.2-management-alpine
RUN set -eux; \
apk update; \
apk upgrade ;
+34
View File
@@ -0,0 +1,34 @@
import java.util.concurrent.ConcurrentHashMap
import org.gradle.api.tasks.compile.GroovyCompile
def taskStartNanos = new ConcurrentHashMap<String, Long>()
def activeTasksFile = new File('/tmp/gradle-active-tasks')
def writeActiveTasks = {
synchronized (taskStartNanos) {
def activeTasks = taskStartNanos.keySet().sort()
activeTasksFile.text = activeTasks
? activeTasks.join(System.lineSeparator()) + System.lineSeparator()
: "none${System.lineSeparator()}"
}
}
gradle.beforeProject { project ->
project.tasks.withType(GroovyCompile).configureEach {
options.forkOptions.memoryMaximumSize = '1g'
}
}
gradle.taskGraph.beforeTask { task ->
taskStartNanos.put(task.path, System.nanoTime())
writeActiveTasks()
println "[TASK START] ${task.path}"
}
gradle.taskGraph.afterTask { task, state ->
def startedAt = taskStartNanos.remove(task.path)
def elapsedMs = startedAt == null ? 0 : (System.nanoTime() - startedAt) / 1_000_000
def outcome = state.failure ? 'FAILED' : state.skipped ? 'SKIPPED' : 'DONE'
println "[TASK END] ${task.path} ${outcome} ${elapsedMs} ms"
writeActiveTasks()
}
+71
View File
@@ -0,0 +1,71 @@
def nexusUsername = System.getenv('NEXUS_USERNAME') ?: System.getenv('NPM_USERNAME')
def nexusPassword = System.getenv('NEXUS_PASSWORD') ?: System.getenv('NPM_PASSWORD')
if (!nexusUsername || !nexusPassword) {
throw new GradleException('Nexus credentials are not configured')
}
buildscript {
repositories {
mavenLocal()
maven { url = 'https://nexus.freeicu.top/repository/maven-public/' }
maven {
url = 'https://nexus.loghub.com/repository/public/'
credentials {
username = nexusUsername
password = nexusPassword
}
}
maven { url = 'https://repo.huaweicloud.com/repository/maven/huaweicloudsdk' }
maven { url = 'https://build.shibboleth.net/nexus/content/repositories/releases/' }
}
}
allprojects {
buildscript {
repositories {
mavenLocal()
maven { url = 'https://nexus.freeicu.top/repository/maven-public/' }
maven {
url = 'https://nexus.loghub.com/repository/public/'
credentials {
username = nexusUsername
password = nexusPassword
}
}
maven { url = 'https://repo.huaweicloud.com/repository/maven/huaweicloudsdk' }
maven { url = 'https://build.shibboleth.net/nexus/content/repositories/releases/' }
}
}
repositories {
mavenLocal()
maven { url = 'https://nexus.freeicu.top/repository/maven-public/' }
maven {
url = 'https://nexus.loghub.com/repository/public/'
credentials {
username = nexusUsername
password = nexusPassword
}
}
maven { url = 'https://repo.huaweicloud.com/repository/maven/huaweicloudsdk' }
maven { url = 'https://build.shibboleth.net/nexus/content/repositories/releases/' }
}
}
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
mavenLocal()
maven { url = 'https://nexus.freeicu.top/repository/maven-public/' }
maven {
url = 'https://nexus.loghub.com/repository/public/'
credentials {
username = nexusUsername
password = nexusPassword
}
}
maven { url = 'https://repo.huaweicloud.com/repository/maven/huaweicloudsdk' }
maven { url = 'https://build.shibboleth.net/nexus/content/repositories/releases/' }
}
}
}