#!/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"
|