2525 release_version : ${{ steps.meta.outputs.release_version }}
2626 release_tag : ${{ steps.meta.outputs.release_tag }}
2727 source_ref : ${{ steps.meta.outputs.source_ref }}
28+ is_prerelease : ${{ steps.meta.outputs.is_prerelease }}
29+ docker_tags : ${{ steps.meta.outputs.docker_tags }}
2830 chains_dev_jars_repository : ${{ steps.manifest.outputs.chains_dev_jars_repository }}
2931 chains_dev_jars_ref : ${{ steps.manifest.outputs.chains_dev_jars_ref }}
3032 java_echo_generator_repository : ${{ steps.manifest.outputs.java_echo_generator_repository }}
@@ -54,10 +56,24 @@ jobs:
5456 if [ -z "$SOURCE_REF" ]; then
5557 SOURCE_REF="$RELEASE_TAG"
5658 fi
59+ if [[ "$VERSION" == *-* ]]; then
60+ IS_PRERELEASE="true"
61+ else
62+ IS_PRERELEASE="false"
63+ fi
5764
5865 echo "release_version=$VERSION" >> "$GITHUB_OUTPUT"
5966 echo "release_tag=$RELEASE_TAG" >> "$GITHUB_OUTPUT"
6067 echo "source_ref=$SOURCE_REF" >> "$GITHUB_OUTPUT"
68+ echo "is_prerelease=$IS_PRERELEASE" >> "$GITHUB_OUTPUT"
69+ {
70+ echo "docker_tags<<EOF"
71+ echo "javachains/javachains:${VERSION}"
72+ if [ "$IS_PRERELEASE" != "true" ]; then
73+ echo "javachains/javachains:latest"
74+ fi
75+ echo "EOF"
76+ } >> "$GITHUB_OUTPUT"
6177
6278 - name : Read Release Manifest
6379 id : manifest
@@ -254,12 +270,12 @@ jobs:
254270 go build -trimpath -ldflags="-s -w" -o "../release_base/mcp-binaries/${output}" ./cmd/mcp-go
255271 }
256272
257- build_mcp linux amd64 mcp-go -linux-amd64
258- build_mcp linux arm64 mcp-go- linux-aarch64
259- build_mcp windows amd64 mcp-go -windows-amd64.exe
260- build_mcp windows arm64 mcp-go -windows-arm64.exe
261- build_mcp darwin amd64 mcp-go -macos-amd64
262- build_mcp darwin arm64 mcp-go- macos-aarch64
273+ build_mcp linux amd64 java-chains-mcp -linux-amd64
274+ build_mcp linux arm64 java-chains-mcp- linux-arm64
275+ build_mcp windows amd64 java-chains-mcp -windows-amd64.exe
276+ build_mcp windows arm64 java-chains-mcp -windows-arm64.exe
277+ build_mcp darwin amd64 java-chains-mcp -macos-amd64
278+ build_mcp darwin arm64 java-chains-mcp- macos-arm64
263279
264280 - name : Prepare Base Artifacts
265281 run : |
@@ -275,11 +291,10 @@ jobs:
275291 fi
276292
277293 if [ -f "$SERVER_JAR" ]; then
278- echo "Found Server Jar: $SERVER_JAR"
294+ echo "Found Server Jar: $(basename "$ SERVER_JAR") "
279295 cp "$SERVER_JAR" release_base/java-chains.jar
280296 else
281297 echo "Error: java-chains jar not found in root directory"
282- ls -la
283298 exit 1
284299 fi
285300
@@ -290,11 +305,10 @@ jobs:
290305 fi
291306
292307 if [ -f "$CLI_JAR" ]; then
293- echo "Found CLI Jar: $CLI_JAR"
308+ echo "Found CLI Jar: $(basename "$ CLI_JAR") "
294309 cp "$CLI_JAR" release_base/cli-chains.jar
295310 else
296311 echo "Error: cli-chains jar not found"
297- find cli-chains -maxdepth 3 -type f | sort
298312 exit 1
299313 fi
300314
@@ -307,6 +321,37 @@ jobs:
307321 cp -r chains-config/mcp/. release_base/chains-config/mcp/
308322 fi
309323
324+ # ── 源码防泄漏:销毁所有源码,确保 artifact 只含编译产物 ──
325+ - name : Purge Source Code
326+ if : always()
327+ run : |
328+ rm -rf release-deps
329+ rm -rf ~/.m2/repository
330+
331+ # 确认 release_base 中没有源码文件
332+ if find release_base -type f \( \
333+ -name "*.java" -o -name "*.go" -o -name "*.ts" -o -name "*.tsx" \
334+ -o -name "*.vue" -o -name "*.jsx" -o -name "*.py" \
335+ -o -name "*-sources.jar" -o -name "*-javadoc.jar" \
336+ -o -name ".git" -o -name ".gitignore" \
337+ -o -name "pom.xml" -o -name "package.json" -o -name "go.mod" \
338+ \) | grep -q .; then
339+ echo "ERROR: Source code files detected in release artifacts!"
340+ find release_base -type f \( \
341+ -name "*.java" -o -name "*.go" -o -name "*.ts" -o -name "*.tsx" \
342+ -o -name "*.vue" -o -name "*.jsx" -o -name "*.py" \
343+ -o -name "*-sources.jar" -o -name "*-javadoc.jar" \
344+ -o -name ".git" -o -name ".gitignore" \
345+ -o -name "pom.xml" -o -name "package.json" -o -name "go.mod" \
346+ \)
347+ exit 1
348+ fi
349+
350+ find release_base -type d -name ".git" -exec rm -rf {} + 2>/dev/null || true
351+
352+ echo "Artifact contents:"
353+ find release_base -type f | sort
354+
310355 - name : Upload Base Artifacts
311356 uses : actions/upload-artifact@v4
312357 with :
@@ -330,6 +375,7 @@ jobs:
330375 RELEASE_VERSION="${{ needs.resolve_release_meta.outputs.release_version }}"
331376 SOURCE_REF="${{ needs.resolve_release_meta.outputs.source_ref }}"
332377 SOURCE_SHA="${{ needs.build.outputs.source_sha }}"
378+ IS_PRERELEASE="${{ needs.resolve_release_meta.outputs.is_prerelease }}"
333379
334380 if gh release view "$RELEASE_TAG" --repo "$GITHUB_REPOSITORY" > /dev/null 2>&1; then
335381 echo "Release $RELEASE_TAG already exists, skip creation."
@@ -344,11 +390,19 @@ jobs:
344390 Source commit: ${SOURCE_SHA}
345391 EOF
346392
347- gh release create "$RELEASE_TAG" \
348- --draft \
349- --title "Release $RELEASE_TAG" \
350- --repo "$GITHUB_REPOSITORY" \
393+ ARGS=(
394+ "$RELEASE_TAG"
395+ --draft
396+ --title "Release $RELEASE_TAG"
397+ --repo "$GITHUB_REPOSITORY"
351398 --notes-file release-notes.txt
399+ )
400+
401+ if [ "$IS_PRERELEASE" = "true" ]; then
402+ ARGS+=(--prerelease)
403+ fi
404+
405+ gh release create "${ARGS[@]}"
352406
353407 # ====================================================
354408 # Job 3: 矩阵打包 (主程序 + 对应平台 MCP)
@@ -364,38 +418,38 @@ jobs:
364418 arch_api : x64
365419 suffix : linux-amd64
366420 ext : tar.gz
367- mcp_binary : mcp-go -linux-amd64
368- mcp_target : mcp-go
421+ mcp_binary : java-chains-mcp -linux-amd64
422+ mcp_target : java-chains-mcp
369423 - os_api : linux
370424 arch_api : aarch64
371425 suffix : linux-aarch64
372426 ext : tar.gz
373- mcp_binary : mcp-go- linux-aarch64
374- mcp_target : mcp-go
427+ mcp_binary : java-chains-mcp- linux-arm64
428+ mcp_target : java-chains-mcp
375429 - os_api : windows
376430 arch_api : x64
377431 suffix : windows-amd64
378432 ext : zip
379- mcp_binary : mcp-go -windows-amd64.exe
380- mcp_target : mcp-go .exe
433+ mcp_binary : java-chains-mcp -windows-amd64.exe
434+ mcp_target : java-chains-mcp .exe
381435 - os_api : windows
382436 arch_api : arm64
383437 suffix : windows-arm64
384438 ext : zip
385- mcp_binary : mcp-go -windows-arm64.exe
386- mcp_target : mcp-go .exe
439+ mcp_binary : java-chains-mcp -windows-arm64.exe
440+ mcp_target : java-chains-mcp .exe
387441 - os_api : mac
388442 arch_api : x64
389443 suffix : macos-intel
390444 ext : tar.gz
391- mcp_binary : mcp-go -macos-amd64
392- mcp_target : mcp-go
445+ mcp_binary : java-chains-mcp -macos-amd64
446+ mcp_target : java-chains-mcp
393447 - os_api : mac
394448 arch_api : aarch64
395449 suffix : macos-m-series
396450 ext : tar.gz
397- mcp_binary : mcp-go- macos-aarch64
398- mcp_target : mcp-go
451+ mcp_binary : java-chains-mcp- macos-arm64
452+ mcp_target : java-chains-mcp
399453
400454 steps :
401455 - uses : actions/download-artifact@v4
@@ -467,7 +521,7 @@ jobs:
467521
468522 echo '#!/bin/bash' > start-mcp.sh
469523 echo 'BASE_DIR=$(cd "$(dirname "$0")" && pwd)' >> start-mcp.sh
470- echo 'exec "$BASE_DIR/mcp-go " "$@"' >> start-mcp.sh
524+ echo 'exec "$BASE_DIR/java-chains-mcp " "$@"' >> start-mcp.sh
471525 chmod +x start-mcp.sh
472526 else
473527 echo '@echo off' > start.bat
@@ -477,7 +531,7 @@ jobs:
477531
478532 echo '@echo off' > start-mcp.bat
479533 echo 'set "BASE_DIR=%~dp0"' >> start-mcp.bat
480- echo '"%BASE_DIR%mcp-go .exe" %*' >> start-mcp.bat
534+ echo '"%BASE_DIR%java-chains-mcp .exe" %*' >> start-mcp.bat
481535 fi
482536
483537 - name : Compress and Upload
@@ -517,8 +571,8 @@ jobs:
517571 tar -czvf "java-chains-${RELEASE_VERSION}.tar.gz" java-chains.jar chains-config
518572 gh release upload "$RELEASE_TAG" "java-chains-${RELEASE_VERSION}.tar.gz" --clobber --repo "$GITHUB_REPOSITORY"
519573
520- tar -czvf "mcp-go -${RELEASE_VERSION}-binaries.tar.gz" mcp-binaries
521- gh release upload "$RELEASE_TAG" "mcp-go -${RELEASE_VERSION}-binaries.tar.gz" --clobber --repo "$GITHUB_REPOSITORY"
574+ tar -czvf "java-chains-mcp -${RELEASE_VERSION}-binaries.tar.gz" mcp-binaries
575+ gh release upload "$RELEASE_TAG" "java-chains-mcp -${RELEASE_VERSION}-binaries.tar.gz" --clobber --repo "$GITHUB_REPOSITORY"
522576
523577 mkdir cli_dist
524578 cp cli-chains.jar cli_dist/
@@ -540,10 +594,16 @@ jobs:
540594 name : base-artifacts
541595 path : .
542596
543- - name : Clean up release extras for Docker context
597+ - name : Prepare Docker MCP binary names
544598 run : |
545599 rm -f cli-chains.jar
546- rm -rf mcp-binaries
600+
601+ - name : Verify Docker MCP Binaries
602+ run : |
603+ test -d mcp-binaries
604+ test -f mcp-binaries/java-chains-mcp-linux-amd64
605+ test -f mcp-binaries/java-chains-mcp-linux-arm64
606+ ls -la mcp-binaries
547607
548608 - uses : docker/setup-qemu-action@v3
549609 - uses : docker/setup-buildx-action@v3
@@ -558,6 +618,4 @@ jobs:
558618 context : .
559619 platforms : linux/amd64,linux/arm64
560620 push : true
561- tags : |
562- javachains/javachains:${{ needs.resolve_release_meta.outputs.release_version }}
563- javachains/javachains:latest
621+ tags : ${{ needs.resolve_release_meta.outputs.docker_tags }}
0 commit comments