47 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
曾志威 f9178f1dac init
continuous-integration/drone Build is passing
2026-02-13 01:58:50 +08:00
曾志威 aa6d790dbb init
continuous-integration/drone Build is failing
2026-02-13 01:57:48 +08:00
曾志威 06dbdbed7e init
continuous-integration/drone Build is failing
2026-02-13 01:56:30 +08:00
曾志威 686391a403 init
continuous-integration/drone Build is passing
2026-02-13 01:50:12 +08:00
曾志威 39d4bfa730 init
continuous-integration/drone Build is failing
2026-02-13 01:47:21 +08:00
曾志威 1114f2561c init
continuous-integration/drone Build is failing
2026-02-13 01:43:24 +08:00
曾志威 929bcfdf2e init
continuous-integration/drone Build is failing
2026-02-13 01:41:26 +08:00
曾志威 d624523547 init
continuous-integration/drone Build is failing
2026-02-13 01:38:29 +08:00
曾志威 e7829cd990 init
continuous-integration/drone Build is failing
2026-02-13 01:35:12 +08:00
曾志威 03e97547da init 2026-02-13 01:21:52 +08:00
曾志威 0e4d45628a init
continuous-integration/drone Build is passing
2026-02-12 18:36:15 +08:00
曾志威 573b28a1b8 init 2026-02-12 18:35:47 +08:00
10 changed files with 267 additions and 230 deletions
+161 -12
View File
@@ -1,18 +1,167 @@
kind: pipeline
name: default
clone:
retries: 3
concurrency:
limit: 1
steps:
# docker 打包
- name: docker
image: plugins/docker
settings:
context: ./
dockerfile: ./Dockerfile
username:
# 拉取并打包 Shopee WES
- name: deploy
image: gradle:9-alpine
pull: if-not-exists
environment:
DOCKER_CONFIG: /home/gradle/.docker
JIB_USERNAME:
from_secret: docker_username
password:
JIB_PASSWORD:
from_secret: docker_password
registry: https://registry.cn-hangzhou.aliyuncs.com
repo: registry.cn-hangzhou.aliyuncs.com/loghub/wms-system-service
tags:
- gradle6
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:
- |
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
- >
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.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/
-6
View File
@@ -1,6 +0,0 @@
[Credentials]
language=EN
endpoint=oss-cn-hangzhou.aliyuncs.com
AccessKeyID=LTAIiOKICUiT4Mxf
AccessKeySecret=Y2srJsSPJiRNx41fomps0zmWHvCges
region = cn-hangzhou # 增加此行,配置Region
-23
View File
@@ -1,23 +0,0 @@
FROM gradle:6.9-jdk8
RUN set -eux; \
sed -i 's|http://archive.ubuntu.com/ubuntu|https://mirrors.aliyun.com/ubuntu|g' /etc/apt/sources.list; \
sed -i 's|http://security.ubuntu.com/ubuntu|https://mirrors.aliyun.com/ubuntu|g' /etc/apt/sources.list; \
apt-get update; \
apt-get install -y --no-install-recommends \
nodejs \
npm; \
command -v node; \
command -v npm; \
npm config set registry https://registry.npmmirror.com; \
npm install -g coffeescript@2.7.0 stylus@0.54.8; \
stylus --version; \
coffee --version; \
rm -rf /var/lib/apt/lists/*
ADD ossutil /usr/local/bin/ossutil
RUN chmod +x /usr/local/bin/ossutil
ADD .ossutilconfig /root/.ossutilconfig
ADD init.gradle /root/.gradle/
ADD config.json /root/.docker/
-90
View File
@@ -1,90 +0,0 @@
FROM eclipse-temurin:8-jdk-alpine
CMD ["gradle"]
ENV GRADLE_HOME=/opt/gradle
RUN set -o errexit -o nounset \
&& echo "Adding gradle user and group" \
&& addgroup --system --gid 1000 gradle \
&& adduser --system --ingroup gradle --uid 1000 --shell /bin/ash gradle \
&& mkdir /home/gradle/.gradle \
&& chown -R gradle:gradle /home/gradle \
&& chmod -R o+rwx /home/gradle \
\
&& echo "Symlinking root Gradle cache to gradle Gradle cache" \
&& ln -s /home/gradle/.gradle /root/.gradle
VOLUME /home/gradle/.gradle
WORKDIR /home/gradle
RUN set -o errexit -o nounset \
&& echo "Switching apk mirror to aliyun" \
&& sed -i 's|https\?://dl-cdn.alpinelinux.org/alpine|https://mirrors.aliyun.com/alpine|g' /etc/apk/repositories \
&& apk update \
\
&& apk add --no-cache \
curl \
make \
breezy \
py3-tzlocal \
git \
git-lfs \
mercurial \
subversion \
\
&& echo "Testing common utilities" \
&& which awk \
&& which curl \
&& which cut \
&& which grep \
&& which gunzip \
&& which sha256sum \
&& which sed \
&& which tar \
&& which tr \
&& which unzip \
&& which wget \
\
&& echo "Testing VCSes" \
&& which git \
&& which git-lfs \
&& which hg \
&& which svn
ENV GRADLE_VERSION=6.9.4
ARG GRADLE_DOWNLOAD_SHA256=3e240228538de9f18772a574e99a0ba959e83d6ef351014381acd9631781389a
RUN set -o errexit -o nounset \
&& echo "Downloading Gradle" \
&& wget --no-verbose --output-document=gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" \
\
&& echo "Checking Gradle download hash" \
&& echo "${GRADLE_DOWNLOAD_SHA256} *gradle.zip" | sha256sum -c - \
\
&& echo "Installing Gradle" \
&& unzip gradle.zip \
&& rm gradle.zip \
&& mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" \
&& ln -s "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle
USER gradle
RUN set -o errexit -o nounset \
&& echo "Testing Gradle installation" \
&& gradle --version
USER root
RUN set -eux; \
apk add nodejs npm
RUN set -eux; \
npm install -g coffee-script stylus
ADD ossutil /usr/local/bin/ossutil
RUN chmod +x /usr/local/bin/ossutil
ADD .ossutilconfig /root/.ossutilconfig
ADD init.gradle /root/.gradle/
ADD config.json /root/.docker/
-31
View File
@@ -1,31 +0,0 @@
{
"auths": {
"qa-wms-acr-registry.cn-shanghai.cr.aliyuncs.com": {
"auth": "c2hhbnl1bi5ndUBTSElOVEFDQ1FBUzAxOnNmakxqemZmRThEMCNWZE4="
},
"registry-vpc.cn-hangzhou.aliyuncs.com": {
"auth": "c3d1QGl0dHguY29tLmNuOml0dHgyMDE4"
},
"registry.cn-hangzhou.aliyuncs.com": {
"auth": "c3d1QGl0dHguY29tLmNuOml0dHgyMDE4"
},
"registry.cn-shanghai.aliyuncs.com": {
"auth": "Zy5zaGFueXVuQGdtYWlsLmNvbTpBYTExMTIzNA=="
},
"sh2-cnepb-acr-pd-epp-registry.cn-shanghai.cr.aliyuncs.com": {
"auth": "U2h1aHVpLlBFTkctQURNQDEwNjU1NTY0ODc1NDYzNDI6eWRCQ2QyWVdxVWhUdExqMSUzb0RzRWxQQDJ3UmdI"
},
"ttx-registry-vpc.cn-hangzhou.cr.aliyuncs.com": {
"auth": "Y2J0X2plbmtpbnNfY3JAMTU0MzYwMDc2MDE3NjU0MDpzYmhXUXJWSFBWUU11SyEz"
},
"ttx-registry.cn-hangzhou.cr.aliyuncs.com": {
"auth": "c3lndUAxNTQzNjAwNzYwMTc2NTQwOlR0eEAyMDI1"
},
"wms-acr-registry.cn-shanghai.cr.aliyuncs.com": {
"auth": "c2hhbnl1bi5ndUBTSElOVEFDQ1BSRDAxOkFhMTIzNDU2"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.1 (linux)"
}
}
+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/' }
}
}
}
-68
View File
@@ -1,68 +0,0 @@
buildscript {
repositories {
mavenLocal()
maven { url 'https://nexus.freeicu.top/repository/maven-public/' }
maven { url "https://repo.huaweicloud.com/repository/maven/huaweicloudsdk" }
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
maven {
url 'https://nexus.loghub.com/repository/public/'
credentials {
username = "developer"
password = "95bb05e9-1540-4caa"
}
}
}
}
allprojects {
buildscript {
repositories {
mavenLocal()
maven { url 'https://nexus.freeicu.top/repository/maven-public/' }
maven { url "https://repo.huaweicloud.com/repository/maven/huaweicloudsdk" }
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
maven {
url 'https://nexus.loghub.com/repository/public/'
credentials {
username = "developer"
password = "95bb05e9-1540-4caa"
}
}
}
}
repositories {
mavenLocal()
maven { url 'https://nexus.freeicu.top/repository/maven-public/' }
maven { url "https://repo.huaweicloud.com/repository/maven/huaweicloudsdk" }
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
maven {
url 'https://nexus.loghub.com/repository/public/'
credentials {
username = "developer"
password = "95bb05e9-1540-4caa"
}
}
}
}
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
mavenLocal()
maven { url 'https://nexus.freeicu.top/repository/maven-public/' }
maven { url "https://repo.huaweicloud.com/repository/maven/huaweicloudsdk" }
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
maven {
url 'https://nexus.loghub.com/repository/public/'
credentials {
username = "developer"
password = "95bb05e9-1540-4caa"
}
}
}
}
}
BIN
View File
Binary file not shown.