Skip to content

Commit 3a07067

Browse files
committed
add nightly.yml
1 parent 89e97f1 commit 3a07067

3 files changed

Lines changed: 558 additions & 36 deletions

File tree

.github/workflows/build-and-release.yml

Lines changed: 93 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ jobs:
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

Comments
 (0)