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