刘光辉
昨天 bb638871a7fb692d80f1b7a758f991dc0879002c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env bash
# 把独立流程引擎 jar 暂存进构建上下文(context/ 不入 git)
# 取源规则:
#   - 默认:仓库自建工程 jnpf-flow-engine/target/ 的构建产物(`make flow-engine` 或
#     `mvn -f jnpf-flow-engine/pom.xml package` 生成)。产物不存在直接报错,**不静默降级黑盒**,
#     以免交付机把黑盒当自建引擎误发。
#   - 回滚黑盒:必须显式 `FLOWAPI_JAR=<黑盒jar路径>`(不再自动降级),杜绝"以为发的是自建、实际是黑盒"。
set -euo pipefail
 
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
CTX="${SCRIPT_DIR}/context"
 
ENGINE_JAR="${REPO_ROOT}/jnpf-flow-engine/target/jnpf-workflow-admin-1.0.0-RELEASE.jar"
 
if [ -n "${FLOWAPI_JAR:-}" ]; then
    JAR="${FLOWAPI_JAR}"
    ORIGIN="FLOWAPI_JAR 显式指定(回滚/自定义)"
elif [ -f "${ENGINE_JAR}" ]; then
    JAR="${ENGINE_JAR}"
    ORIGIN="仓库自建 jnpf-flow-engine(任务 B 重建工程)"
else
    echo "错误:未找到自建引擎产物 ${ENGINE_JAR}" >&2
    echo "  请先构建:make flow-engine(或 mvn -f jnpf-flow-engine/pom.xml clean package -DskipTests)" >&2
    echo "  如需回滚黑盒:FLOWAPI_JAR=~/Infra/jnpf/flowApi/jnpf-workflow-admin-1.0.0-RELEASE.jar $0" >&2
    exit 1
fi
 
[ -f "${JAR}" ] || { echo "错误:找不到 ${JAR}(可用 FLOWAPI_JAR 指定 jar 或先构建 jnpf-flow-engine)" >&2; exit 1; }
 
JAR_SIZE=$(wc -c < "${JAR}" | tr -d ' ')
[ "${JAR_SIZE}" -gt 30000000 ] || { echo "错误:${JAR} 只有 ${JAR_SIZE} 字节,疑似残缺" >&2; exit 1; }
 
# 原子替换:先拷到临时目录校验成功再挪,避免中途失败留下半成品/空上下文
TMP="${CTX}.tmp.$$"
rm -rf "${TMP}"
mkdir -p "${TMP}"
cp "${JAR}" "${TMP}/jnpf-workflow-admin-1.0.0-RELEASE.jar"
rm -rf "${CTX}"
mv "${TMP}" "${CTX}"
 
echo "取源:${ORIGIN}"
echo "  ${JAR}"
echo "已暂存到 ${CTX}:"
du -sh "${CTX}"/*.jar
echo "下一步:docker compose build cx-flow-engine"