优化构建工作流和脚本,增加0.16.9.40087的Managed
This commit is contained in:
232
.github/workflows/BuildLauncher.yml
vendored
232
.github/workflows/BuildLauncher.yml
vendored
@@ -1,31 +1,229 @@
|
|||||||
name: 构建启动器
|
name: 构建启动器
|
||||||
on: workflow_dispatch
|
on:
|
||||||
|
workflow_dispatch: # 允许手动触发
|
||||||
|
inputs:
|
||||||
|
build_modules:
|
||||||
|
description: '构建 Modules'
|
||||||
|
required: true
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
build_launcher:
|
||||||
|
description: '构建 Launcher'
|
||||||
|
required: true
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
managed_zip_url:
|
||||||
|
description: 'Managed.zip 文件路径'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
type: string
|
||||||
|
|
||||||
|
env:
|
||||||
|
MODULES_BRANCH: master
|
||||||
|
LAUNCHER_BRANCH: master
|
||||||
|
BUILD_BRANCH: main
|
||||||
|
COMPRESS: true
|
||||||
|
BUILD_SCRIPT_DIR: /tmp/build
|
||||||
|
BUILD_SCRIPT_OUTPUT_DIR: ${{ env.BUILD_SCRIPT_DIR }}/output
|
||||||
|
MANAGED_ZIP_FILE: Managed.zip
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-launcher:
|
build-spt:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-latest
|
||||||
|
container: refringe/spt-build-dotnet:2.1.0
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- id: checkout
|
- name: 克隆代码
|
||||||
name: checkout
|
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- id: build
|
- name: 配置环境
|
||||||
name: build launcher
|
|
||||||
run: |
|
run: |
|
||||||
chmod a+x ./bin/*
|
# 安装必要工具
|
||||||
chmod a+x build-launcher.sh
|
echo "安装zip和unzip"
|
||||||
./build-launcher.sh -l -c
|
chmod a+x bin/*
|
||||||
|
cp bin/* /usr/bin/
|
||||||
|
|
||||||
|
# 创建脚本目录和输出目录
|
||||||
|
echo "创建脚本目录${{ env.BUILD_SCRIPT_DIR }}和输出目录${{ env.BUILD_SCRIPT_OUTPUT_DIR }}"
|
||||||
|
mkdir -p ${{ env.BUILD_SCRIPT_DIR }}
|
||||||
|
mkdir -p ${{ env.BUILD_SCRIPT_OUTPUT_DIR }}
|
||||||
|
|
||||||
- id: get-filename
|
# 构建脚本允许执行
|
||||||
name: get zip filename
|
echo "执行脚本赋权,并复制到${{ env.BUILD_SCRIPT_DIR }}"
|
||||||
|
chmod a+x build.sh
|
||||||
|
# 复制构建脚本
|
||||||
|
cp build.sh ${{ env.BUILD_SCRIPT_DIR }}
|
||||||
|
|
||||||
|
- name: 获取Managed.zip
|
||||||
|
id: managed
|
||||||
|
if: ${{ github.event.inputs.build_modules == 'true' }}
|
||||||
run: |
|
run: |
|
||||||
ZIP_FILE=$(ls build-output/*.zip)
|
MANAGED_URL="${{ github.event.inputs.managed_zip_url }}"
|
||||||
|
|
||||||
|
# 检查输入是否为空
|
||||||
|
if [ -z "$MANAGED_URL" ]; then
|
||||||
|
echo "错误:未提供 Managed.zip 路径或URL"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "输入的 Managed.zip 路径: $MANAGED_URL"
|
||||||
|
|
||||||
|
# 检查是否是本地文件路径(以 /、./、../ 开头,或者是文件名)
|
||||||
|
if [[ "$MANAGED_URL" =~ ^/.* ]] || [[ "$MANAGED_URL" =~ ^\./.* ]] || [[ "$MANAGED_URL" =~ ^\.\./.* ]] || [[ ! "$MANAGED_URL" =~ ^https?:// ]]; then
|
||||||
|
echo "检测到本地文件路径"
|
||||||
|
|
||||||
|
# 检查文件是否存在
|
||||||
|
if [ ! -f "$MANAGED_URL" ]; then
|
||||||
|
echo "错误:本地文件 $MANAGED_URL 不存在"
|
||||||
|
echo "当前目录文件列表:"
|
||||||
|
ls -la
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "找到本地文件: $(ls -la "$MANAGED_URL")"
|
||||||
|
|
||||||
|
# 复制本地文件到工作目录
|
||||||
|
cp "$MANAGED_URL" ${{ env.MANAGED_ZIP_FILE }}
|
||||||
|
echo "本地文件复制成功"
|
||||||
|
else
|
||||||
|
# 如果是URL,则下载
|
||||||
|
echo "检测到URL,开始下载..."
|
||||||
|
wget -O ${{ env.MANAGED_ZIP_FILE }} "$MANAGED_URL"
|
||||||
|
|
||||||
|
# 验证下载是否成功
|
||||||
|
if [ ! -f "${{ env.MANAGED_ZIP_FILE }}" ]; then
|
||||||
|
echo "错误:Managed.zip 下载失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Managed.zip 下载成功"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 复制到构建目录
|
||||||
|
echo "复制文件到构建目录..."
|
||||||
|
cp ${{ env.MANAGED_ZIP_FILE }} ${{ env.BUILD_SCRIPT_DIR }}
|
||||||
|
|
||||||
|
FINAL_PATH="${{ env.BUILD_SCRIPT_DIR }}/${{ env.MANAGED_ZIP_FILE }}"
|
||||||
|
echo "文件准备完成,最终路径: $FINAL_PATH"
|
||||||
|
echo "final_path=$FINAL_PATH" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: 获取版本信息
|
||||||
|
id: versions
|
||||||
|
run: |
|
||||||
|
# 设置版本信息
|
||||||
|
DATE_TIME=$(date +%Y%m%d)
|
||||||
|
echo "date_time=$DATE_TIME" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# 获取 SPT 版本
|
||||||
|
SPT_VERSION=$(git ls-remote --tags "https://github.com/sp-tarkov/server-csharp.git" | awk -F'/' '{print $NF}' | grep -v '\^{}' | sort -V | tail -1)
|
||||||
|
SPT_VERSION=$(echo "$SPT_VERSION" | cut -d'-' -f1)
|
||||||
|
echo "spt_version=$SPT_VERSION" >> $GITHUB_OUTPUT
|
||||||
|
echo "SPT Version: $SPT_VERSION"
|
||||||
|
|
||||||
|
# 获取客户端版本
|
||||||
|
CLIENT_VERSION=$(wget -qO- "https://raw.githubusercontent.com/sp-tarkov/server-csharp/develop/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/core.json" | jq -r '.compatibleTarkovVersion')
|
||||||
|
echo "client_version=$CLIENT_VERSION" >> $GITHUB_OUTPUT
|
||||||
|
echo "Client Version: $CLIENT_VERSION"
|
||||||
|
|
||||||
|
# 获取 Modules Commit ID
|
||||||
|
MODULES_COMMIT_ID=$(git ls-remote "https://github.com/sp-tarkov/modules.git" "refs/heads/master" | awk '{print $1}')
|
||||||
|
MODULES_COMMIT_ID=${MODULES_COMMIT_ID:0:8}
|
||||||
|
echo "modules_commit=$MODULES_COMMIT_ID" >> $GITHUB_OUTPUT
|
||||||
|
echo "Modules Commit: $MODULES_COMMIT_ID"
|
||||||
|
|
||||||
|
# 获取 Launcher Commit ID
|
||||||
|
LAUNCHER_COMMIT_ID=$(git ls-remote "https://github.com/sp-tarkov/launcher.git" "refs/heads/master" | awk '{print $1}')
|
||||||
|
LAUNCHER_COMMIT_ID=${LAUNCHER_COMMIT_ID:0:8}
|
||||||
|
echo "launcher_commit=$LAUNCHER_COMMIT_ID" >> $GITHUB_OUTPUT
|
||||||
|
echo "Launcher Commit: $LAUNCHER_COMMIT_ID"
|
||||||
|
|
||||||
|
- name: 生成构建参数
|
||||||
|
id: params
|
||||||
|
run: |
|
||||||
|
# 是否构建modules
|
||||||
|
BUILD_MODULES="${{ github.event.inputs.build_modules || 'true' }}"
|
||||||
|
echo "build_modules=$BUILD_MODULES" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# 是否构建启动器
|
||||||
|
BUILD_LAUNCHER="${{ github.event.inputs.build_launcher || 'true' }}"
|
||||||
|
echo "build_launcher=$BUILD_LAUNCHER" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# 构建后是否压缩为zip
|
||||||
|
COMPRESS="${{ env.COMPRESS }}"
|
||||||
|
echo "compress=$COMPRESS" >> $GITHUB_OUTPUT
|
||||||
|
echo "COMPRESS: $COMPRESS"
|
||||||
|
|
||||||
|
# 生成压缩文件名称
|
||||||
|
DATE_TIME="${{ steps.versions.outputs.date_time }}"
|
||||||
|
SPT_VERSION="${{ steps.versions.outputs.spt_version }}"
|
||||||
|
CLIENT_VERSION="${{ steps.versions.outputs.client_version }}"
|
||||||
|
MODULES_COMMIT="${{ steps.versions.outputs.modules_commit }}"
|
||||||
|
LAUNCHER_COMMIT="${{ steps.versions.outputs.launcher_commit }}"
|
||||||
|
if [ "$BUILD_MODULES" = "true" ] && [ "$BUILD_LAUNCHER" = "true" ]; then
|
||||||
|
ARCHIVE_NAME="SPT-Launcher-${SPT_VERSION}-$DATE_TIME-${CLIENT_VERSION}-L${LAUNCHER_COMMIT}-M${MODULES_COMMIT}.zip"
|
||||||
|
elif [ "$BUILD_MODULES" = "true" ]; then
|
||||||
|
ARCHIVE_NAME="SPT-Modules-${SPT_VERSION}-$DATE_TIME-${CLIENT_VERSION}-${MODULES_COMMIT}.zip"
|
||||||
|
else
|
||||||
|
ARCHIVE_NAME="SPT-Launcher-${SPT_VERSION}-$DATE_TIME-${CLIENT_VERSION}-${LAUNCHER_COMMIT}.zip"
|
||||||
|
fi
|
||||||
|
echo "archive_name=$ARCHIVE_NAME" >> $GITHUB_OUTPUT
|
||||||
|
echo "Archive Name: $ARCHIVE_NAME"
|
||||||
|
|
||||||
|
# 构建modules时的Manage.zip文件路径
|
||||||
|
MANAGED_ZIP_FILE="${{ steps.managed.outputs.final_path }}"
|
||||||
|
echo "managed_zip_file=$MANAGED_ZIP_FILE" >> $GITHUB_OUTPUT
|
||||||
|
echo "MANAGED_ZIP_FILE: $MANAGED_ZIP_FILE"
|
||||||
|
|
||||||
|
# 构建modules的分支
|
||||||
|
MODULES_BRANCH="${{ env.MODULES_BRANCH }}"
|
||||||
|
echo "modules_branch=$MODULES_BRANCH" >> $GITHUB_OUTPUT
|
||||||
|
echo "MODULES_BRANCH: $MODULES_BRANCH"
|
||||||
|
|
||||||
|
# 构建launcher的分支
|
||||||
|
LAUNCHER_BRANCH="${{ env.LAUNCHER_BRANCH }}"
|
||||||
|
echo "launcher_branch=$LAUNCHER_BRANCH" >> $GITHUB_OUTPUT
|
||||||
|
echo "LAUNCHER_BRANCH: $LAUNCHER_BRANCH"
|
||||||
|
|
||||||
|
# 打包时使用的build的分支
|
||||||
|
BUILD_BRANCH="${{ env.BUILD_BRANCH }}"
|
||||||
|
echo "build_branch=$BUILD_BRANCH" >> $GITHUB_OUTPUT
|
||||||
|
echo "BUILD_BRANCH: $BUILD_BRANCH"
|
||||||
|
|
||||||
|
- name: 构建编译
|
||||||
|
run: |
|
||||||
|
# 执行构建脚本
|
||||||
|
${{ env.BUILD_SCRIPT_DIR }}/build.sh \
|
||||||
|
"${{ steps.versions.outputs.date_time }}" \
|
||||||
|
"${{ steps.versions.outputs.spt_version }}" \
|
||||||
|
"${{ steps.versions.outputs.client_version }}" \
|
||||||
|
"${{ steps.versions.outputs.modules_commit }}" \
|
||||||
|
"${{ steps.versions.outputs.launcher_commit }}" \
|
||||||
|
"${{ steps.params.outputs.build_modules }}" \
|
||||||
|
"${{ steps.params.outputs.build_launcher }}" \
|
||||||
|
"${{ steps.params.outputs.compress }}" \
|
||||||
|
"${{ steps.params.outputs.archive_name }}" \
|
||||||
|
"${{ steps.params.outputs.managed_zip_file }}" \
|
||||||
|
"${{ steps.params.outputs.modules_branch }}" \
|
||||||
|
"${{ steps.params.outputs.launcher_branch }}" \
|
||||||
|
"${{ steps.params.outputs.build_branch }}"
|
||||||
|
|
||||||
|
- name: 获取上传文件名称
|
||||||
|
id: filename
|
||||||
|
run: |
|
||||||
|
if [ ! -d "${{ env.BUILD_SCRIPT_OUTPUT_DIR }}" ]; then
|
||||||
|
echo "错误:输出目录 ${{ env.BUILD_SCRIPT_OUTPUT_DIR }} 不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
ZIP_FILE=$(ls "${{ env.BUILD_SCRIPT_OUTPUT_DIR }}"/*.zip 2>/dev/null | head -1)
|
||||||
|
if [ -z "$ZIP_FILE" ]; then
|
||||||
|
echo "错误:在 ${{ env.BUILD_SCRIPT_OUTPUT_DIR }} 中未找到 zip 文件"
|
||||||
|
ls -la "${{ env.BUILD_SCRIPT_OUTPUT_DIR }}" || echo "目录内容无法列出"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
echo "zip_file=$ZIP_FILE" >> $GITHUB_OUTPUT
|
echo "zip_file=$ZIP_FILE" >> $GITHUB_OUTPUT
|
||||||
echo "artifact_name=$(basename $ZIP_FILE)" >> $GITHUB_OUTPUT
|
echo "artifact_name=$(basename $ZIP_FILE)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- id: upload
|
- name: 上传
|
||||||
name: upload
|
|
||||||
uses: https://github.com/christopherHX/gitea-upload-artifact@v4
|
uses: https://github.com/christopherHX/gitea-upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.get-filename.outputs.artifact_name }}
|
name: ${{ steps.filename.outputs.artifact_name }}
|
||||||
path: ${{ steps.get-filename.outputs.zip_file }}
|
path: ${{ steps.filename.outputs.zip_file }}
|
||||||
BIN
Managed-0.16.9.40087.zip
Normal file
BIN
Managed-0.16.9.40087.zip
Normal file
Binary file not shown.
@@ -146,243 +146,12 @@ echo "=================="
|
|||||||
rm -rf "$OUTPUT_DIR"
|
rm -rf "$OUTPUT_DIR"
|
||||||
mkdir -p "$OUTPUT_DIR"
|
mkdir -p "$OUTPUT_DIR"
|
||||||
|
|
||||||
# 创建构建脚本
|
|
||||||
BUILD_SCRIPT="/tmp/spt-build-$$.sh"
|
|
||||||
cat > "$BUILD_SCRIPT" << 'SCRIPT_EOF'
|
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# 参数
|
|
||||||
DATE_TIME="$1"
|
|
||||||
SPT_VERSION="$2"
|
|
||||||
CLIENT_VERSION="$3"
|
|
||||||
MODULES_COMMIT_ID="$4"
|
|
||||||
LAUNCHER_COMMIT_ID="$5"
|
|
||||||
BUILD_MODULES="$6"
|
|
||||||
BUILD_LAUNCHER="$7"
|
|
||||||
COMPRESS="$8"
|
|
||||||
ARCHIVE_NAME="$9"
|
|
||||||
MANAGED_ZIP_FILE="${10}"
|
|
||||||
SPT_MODULES_BRANCH="${11}"
|
|
||||||
SPT_LAUNCHER_BRANCH="${12}"
|
|
||||||
SPT_BUILD_BRANCH="${13}"
|
|
||||||
echo "开始执行构建脚本..."
|
|
||||||
|
|
||||||
# 工作目录
|
|
||||||
WORKSPACE="/tmp/build"
|
|
||||||
mkdir -p "$WORKSPACE"
|
|
||||||
cd "$WORKSPACE"
|
|
||||||
|
|
||||||
echo "工作目录: $(pwd)"
|
|
||||||
|
|
||||||
# 保存版本信息
|
|
||||||
cat > "version.info" << VER_EOF
|
|
||||||
构建时间: $DATE_TIME
|
|
||||||
SPT版本: $SPT_VERSION
|
|
||||||
客户端版本: $CLIENT_VERSION
|
|
||||||
VER_EOF
|
|
||||||
|
|
||||||
# 根据编译的组件添加相应信息
|
|
||||||
if [ "$BUILD_MODULES" = "true" ]; then
|
|
||||||
cat >> "version.info" << VER_EOF
|
|
||||||
Modules分支: $SPT_MODULES_BRANCH
|
|
||||||
Modules Commit: $MODULES_COMMIT_ID
|
|
||||||
VER_EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$BUILD_LAUNCHER" = "true" ]; then
|
|
||||||
cat >> "version.info" << VER_EOF
|
|
||||||
Launcher分支: $SPT_LAUNCHER_BRANCH
|
|
||||||
Launcher Commit: $LAUNCHER_COMMIT_ID
|
|
||||||
VER_EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "版本信息已保存"
|
|
||||||
|
|
||||||
# 编译 Modules
|
|
||||||
if [ "$BUILD_MODULES" = "true" ]; then
|
|
||||||
echo "=== 开始编译 Modules ==="
|
|
||||||
|
|
||||||
# 克隆 Modules 仓库
|
|
||||||
echo "克隆 Modules 仓库..."
|
|
||||||
git clone https://github.com/sp-tarkov/modules.git --branch "$SPT_MODULES_BRANCH" --depth 1 modules
|
|
||||||
|
|
||||||
# 解压 Managed.zip 文件
|
|
||||||
echo "解压 Managed.zip 文件..."
|
|
||||||
mkdir -p modules/project/Shared/Managed
|
|
||||||
cd modules/project/Shared/Managed
|
|
||||||
unzip -q -o "$MANAGED_ZIP_FILE"
|
|
||||||
echo "Managed.zip 解压完毕."
|
|
||||||
|
|
||||||
# 检查解压后是否有子目录,如果有则移动文件到当前目录
|
|
||||||
if [ "$(ls -A | wc -l)" -eq 1 ] && [ -d "$(ls)" ]; then
|
|
||||||
SUBDIR="$(ls)"
|
|
||||||
echo "检测到子目录: $SUBDIR,移动文件到当前目录..."
|
|
||||||
mv "$SUBDIR"/* . 2>/dev/null || true
|
|
||||||
rmdir "$SUBDIR" 2>/dev/null || true
|
|
||||||
echo "文件移动完成"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 编译 Modules
|
|
||||||
echo "编译 Modules..."
|
|
||||||
cd "$WORKSPACE/modules/project"
|
|
||||||
dotnet build -c Release -p:Version="$SPT_VERSION"
|
|
||||||
echo "Modules 编译完成!"
|
|
||||||
|
|
||||||
# 复制编译结果
|
|
||||||
echo "复制编译结果..."
|
|
||||||
if [ -d 'Build' ]; then
|
|
||||||
cp -r Build /output/modules
|
|
||||||
echo "复制 Build 目录到 /output/modules"
|
|
||||||
else
|
|
||||||
mkdir -p /output/modules
|
|
||||||
find bin/Release -name '*.dll' -o -name '*.exe' -o -name '*.config' | xargs -I {} cp --parents {} /output/modules/ 2>/dev/null || true
|
|
||||||
echo "复制 bin/Release 文件到 /output/modules"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd "$WORKSPACE"
|
|
||||||
echo "=== Modules 编译完成 ==="
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 编译 Launcher
|
|
||||||
if [ "$BUILD_LAUNCHER" = "true" ]; then
|
|
||||||
echo "=== 开始编译 Launcher ==="
|
|
||||||
|
|
||||||
# 克隆 Launcher 仓库
|
|
||||||
echo "克隆 Launcher 仓库..."
|
|
||||||
git clone https://github.com/sp-tarkov/launcher.git --branch "$SPT_LAUNCHER_BRANCH" --depth 1 launcher
|
|
||||||
|
|
||||||
# 编译 Launcher
|
|
||||||
echo "编译 Launcher..."
|
|
||||||
cd launcher/project
|
|
||||||
dotnet build -c Release
|
|
||||||
echo "Launcher 编译完成!"
|
|
||||||
|
|
||||||
# 复制编译结果
|
|
||||||
echo "复制编译结果..."
|
|
||||||
if [ -d 'Build' ]; then
|
|
||||||
cp -r Build /output/launcher
|
|
||||||
echo "复制 Build 目录到 /output/launcher"
|
|
||||||
else
|
|
||||||
mkdir -p /output/launcher
|
|
||||||
find bin/Release -name '*.dll' -o -name '*.exe' -o -name '*.config' | xargs -I {} cp --parents {} /output/launcher/ 2>/dev/null || true
|
|
||||||
echo "复制 bin/Release 文件到 /output/launcher"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir /output/launcher/SPT
|
|
||||||
mv /output/launcher/SPT_Data /output/launcher/SPT/SPT_Data
|
|
||||||
mv /output/launcher/SPT.Launcher.exe /output/launcher/SPT/SPT.Launcher.exe
|
|
||||||
mv /output/launcher/LICENSE-Launcher.txt /output/launcher/SPT/LICENSE-Launcher.txt
|
|
||||||
|
|
||||||
cd "$WORKSPACE"
|
|
||||||
echo "=== Launcher 编译完成 ==="
|
|
||||||
|
|
||||||
echo "=== 克隆 build 仓库并复制静态资源 ==="
|
|
||||||
|
|
||||||
# 克隆 build 仓库
|
|
||||||
echo "克隆 build 仓库..."
|
|
||||||
git clone https://github.com/sp-tarkov/build.git --branch "$SPT_BUILD_BRANCH" --depth 1 build-repo
|
|
||||||
|
|
||||||
# 复制整个 static-assets-csharp 目录到 launcher
|
|
||||||
if [ -d "build-repo/static-assets-csharp" ]; then
|
|
||||||
echo "复制 static-assets-csharp 到 launcher..."
|
|
||||||
cp -r build-repo/static-assets-csharp/* /output/launcher/
|
|
||||||
echo "静态资源复制完成"
|
|
||||||
else
|
|
||||||
echo "警告: static-assets-csharp 目录不存在"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd "$WORKSPACE"
|
|
||||||
echo "=== 静态资源复制完成 ==="
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 复制版本信息
|
|
||||||
echo "复制版本信息文件..."
|
|
||||||
cp "version.info" /output/
|
|
||||||
|
|
||||||
# 如果是构建全部,将 Modules 整合到 Launcher 中
|
|
||||||
if [ "$BUILD_MODULES" = "true" ] && [ "$BUILD_LAUNCHER" = "true" ]; then
|
|
||||||
echo "=== 整合 Modules 到 Launcher ==="
|
|
||||||
cd /output
|
|
||||||
|
|
||||||
# 如果存在 launcher 目录,将 modules 内容复制到 launcher 中
|
|
||||||
if [ -d "launcher" ] && [ -d "modules" ]; then
|
|
||||||
echo "将 Modules 文件整合到 Launcher 中..."
|
|
||||||
|
|
||||||
# 复制 Modules 的所有文件到 launcher/Modules
|
|
||||||
cp -r modules/* launcher/
|
|
||||||
|
|
||||||
echo "Modules 文件已整合到 Launcher 目录"
|
|
||||||
|
|
||||||
# 删除原始的 modules 目录
|
|
||||||
rm -rf modules
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 如果启用压缩,使用整合后的 launcher 目录进行压缩
|
|
||||||
if [ "$COMPRESS" = "true" ]; then
|
|
||||||
echo "=== 开始压缩整合后的文件 ==="
|
|
||||||
cd /output
|
|
||||||
echo "压缩目录: $(pwd)"
|
|
||||||
echo "压缩文件: $ARCHIVE_NAME"
|
|
||||||
|
|
||||||
zip -r -9 "$ARCHIVE_NAME" .
|
|
||||||
|
|
||||||
# 计算文件信息
|
|
||||||
FILE_SIZE=$(stat -c %s "$ARCHIVE_NAME")
|
|
||||||
FILE_SIZE_MB=$(awk "BEGIN {printf \"%.2f\", $FILE_SIZE / 1024 / 1024}")
|
|
||||||
FILE_HASH=$(md5sum "$ARCHIVE_NAME" | awk '{print $1}' | xxd -r -p | base64)
|
|
||||||
|
|
||||||
echo "压缩完成: $ARCHIVE_NAME"
|
|
||||||
echo "文件大小: ${FILE_SIZE_MB} MB"
|
|
||||||
echo "文件哈希: $FILE_HASH"
|
|
||||||
|
|
||||||
# 清理未压缩的文件
|
|
||||||
echo "清理原始文件..."
|
|
||||||
find . -maxdepth 1 ! -name "$ARCHIVE_NAME" -type f -delete
|
|
||||||
rm -rf launcher
|
|
||||||
echo "=== 压缩完成 ==="
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# 单个组件压缩
|
|
||||||
if [ "$COMPRESS" = "true" ]; then
|
|
||||||
echo "=== 开始压缩 ==="
|
|
||||||
cd /output
|
|
||||||
echo "压缩目录: $(pwd)"
|
|
||||||
echo "压缩文件: $ARCHIVE_NAME"
|
|
||||||
|
|
||||||
zip -r -9 "$ARCHIVE_NAME" .
|
|
||||||
|
|
||||||
# 计算文件信息
|
|
||||||
FILE_SIZE=$(stat -c %s "$ARCHIVE_NAME")
|
|
||||||
FILE_SIZE_MB=$(awk "BEGIN {printf \"%.2f\", $FILE_SIZE / 1024 / 1024}")
|
|
||||||
FILE_HASH=$(md5sum "$ARCHIVE_NAME" | awk '{print $1}' | xxd -r -p | base64)
|
|
||||||
|
|
||||||
echo "压缩完成: $ARCHIVE_NAME"
|
|
||||||
echo "文件大小: ${FILE_SIZE_MB} MB"
|
|
||||||
echo "文件哈希: $FILE_HASH"
|
|
||||||
|
|
||||||
# 清理未压缩的文件
|
|
||||||
echo "清理原始文件..."
|
|
||||||
find . -maxdepth 1 ! -name "$ARCHIVE_NAME" -type f -delete
|
|
||||||
rm -rf modules launcher
|
|
||||||
echo "=== 压缩完成 ==="
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "所有操作完成!"
|
|
||||||
SCRIPT_EOF
|
|
||||||
|
|
||||||
# 设置脚本权限
|
|
||||||
chmod +x "$BUILD_SCRIPT"
|
|
||||||
|
|
||||||
echo "临时构建脚本已创建: $BUILD_SCRIPT"
|
|
||||||
|
|
||||||
# 构建 Docker 命令
|
# 构建 Docker 命令
|
||||||
DOCKER_CMD="docker run --rm"
|
DOCKER_CMD="docker run --rm"
|
||||||
|
|
||||||
# 添加必要的卷挂载
|
# 添加必要的卷挂载
|
||||||
DOCKER_CMD="$DOCKER_CMD -v \"$(pwd)/$OUTPUT_DIR:/output\""
|
DOCKER_CMD="$DOCKER_CMD -v \"$(pwd)/$OUTPUT_DIR:/tmp/build/output\""
|
||||||
DOCKER_CMD="$DOCKER_CMD -v \"$BUILD_SCRIPT:/build.sh:ro\""
|
DOCKER_CMD="$DOCKER_CMD -v \"./build.sh:/build.sh:ro\""
|
||||||
DOCKER_CMD="$DOCKER_CMD -v \"./bin/zip:/usr/bin/zip:ro\""
|
DOCKER_CMD="$DOCKER_CMD -v \"./bin/zip:/usr/bin/zip:ro\""
|
||||||
DOCKER_CMD="$DOCKER_CMD -v \"./bin/unzip:/usr/bin/unzip:ro\""
|
DOCKER_CMD="$DOCKER_CMD -v \"./bin/unzip:/usr/bin/unzip:ro\""
|
||||||
|
|
||||||
@@ -397,6 +166,9 @@ else
|
|||||||
MANAGED_ZIP_ARG=""
|
MANAGED_ZIP_ARG=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# zip和unzip权限设置为可执行
|
||||||
|
chmod a+x bin/*
|
||||||
|
|
||||||
# 添加容器镜像和构建脚本
|
# 添加容器镜像和构建脚本
|
||||||
DOCKER_CMD="$DOCKER_CMD refringe/spt-build-dotnet:2.1.0"
|
DOCKER_CMD="$DOCKER_CMD refringe/spt-build-dotnet:2.1.0"
|
||||||
DOCKER_CMD="$DOCKER_CMD /build.sh"
|
DOCKER_CMD="$DOCKER_CMD /build.sh"
|
||||||
@@ -420,9 +192,9 @@ eval $DOCKER_CMD
|
|||||||
|
|
||||||
# 最终脚本示例
|
# 最终脚本示例
|
||||||
#docker run --rm \
|
#docker run --rm \
|
||||||
# -v "$(pwd)/$OUTPUT_DIR:/output" \
|
# -v "$(pwd)/$OUTPUT_DIR:/tmp/build/output" \
|
||||||
# -v "$(realpath $MANAGED_ZIP_FILE):/Managed.zip:ro" \
|
# -v "$(realpath $MANAGED_ZIP_FILE):/Managed.zip:ro" \
|
||||||
# -v "$BUILD_SCRIPT:/build.sh:ro" \
|
# -v "./build.sh:/build.sh:ro" \
|
||||||
# -v "./bin/zip:/usr/bin/zip:ro" \
|
# -v "./bin/zip:/usr/bin/zip:ro" \
|
||||||
# -v "./bin/unzip:/usr/bin/unzip:ro" \
|
# -v "./bin/unzip:/usr/bin/unzip:ro" \
|
||||||
# refringe/spt-build-dotnet:2.1.0 \
|
# refringe/spt-build-dotnet:2.1.0 \
|
||||||
@@ -442,10 +214,6 @@ eval $DOCKER_CMD
|
|||||||
# "$SPT_BUILD_BRANCH"
|
# "$SPT_BUILD_BRANCH"
|
||||||
|
|
||||||
|
|
||||||
# 清理临时脚本
|
|
||||||
rm -f "$BUILD_SCRIPT"
|
|
||||||
echo "临时构建脚本已清理"
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== 构建完成 ==="
|
echo "=== 构建完成 ==="
|
||||||
if [ "$COMPRESS" = true ]; then
|
if [ "$COMPRESS" = true ]; then
|
||||||
|
|||||||
221
build.sh
Executable file
221
build.sh
Executable file
@@ -0,0 +1,221 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 参数
|
||||||
|
DATE_TIME="$1"
|
||||||
|
SPT_VERSION="$2"
|
||||||
|
CLIENT_VERSION="$3"
|
||||||
|
MODULES_COMMIT_ID="$4"
|
||||||
|
LAUNCHER_COMMIT_ID="$5"
|
||||||
|
BUILD_MODULES="$6"
|
||||||
|
BUILD_LAUNCHER="$7"
|
||||||
|
COMPRESS="$8"
|
||||||
|
ARCHIVE_NAME="$9"
|
||||||
|
MANAGED_ZIP_FILE="${10}"
|
||||||
|
SPT_MODULES_BRANCH="${11}"
|
||||||
|
SPT_LAUNCHER_BRANCH="${12}"
|
||||||
|
SPT_BUILD_BRANCH="${13}"
|
||||||
|
echo "开始执行构建脚本..."
|
||||||
|
|
||||||
|
# 工作目录
|
||||||
|
WORKSPACE="/tmp/build"
|
||||||
|
mkdir -p "$WORKSPACE"
|
||||||
|
cd "$WORKSPACE"
|
||||||
|
|
||||||
|
echo "工作目录: $(pwd)"
|
||||||
|
|
||||||
|
# 保存版本信息
|
||||||
|
cat > "version.info" << VER_EOF
|
||||||
|
构建时间: $DATE_TIME
|
||||||
|
SPT版本: $SPT_VERSION
|
||||||
|
客户端版本: $CLIENT_VERSION
|
||||||
|
VER_EOF
|
||||||
|
|
||||||
|
# 根据编译的组件添加相应信息
|
||||||
|
if [ "$BUILD_MODULES" = "true" ]; then
|
||||||
|
cat >> "version.info" << VER_EOF
|
||||||
|
Modules分支: $SPT_MODULES_BRANCH
|
||||||
|
Modules Commit: $MODULES_COMMIT_ID
|
||||||
|
VER_EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$BUILD_LAUNCHER" = "true" ]; then
|
||||||
|
cat >> "version.info" << VER_EOF
|
||||||
|
Launcher分支: $SPT_LAUNCHER_BRANCH
|
||||||
|
Launcher Commit: $LAUNCHER_COMMIT_ID
|
||||||
|
VER_EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "版本信息已保存"
|
||||||
|
|
||||||
|
# 编译 Modules
|
||||||
|
if [ "$BUILD_MODULES" = "true" ]; then
|
||||||
|
echo "=== 开始编译 Modules ==="
|
||||||
|
|
||||||
|
# 克隆 Modules 仓库
|
||||||
|
echo "克隆 Modules 仓库..."
|
||||||
|
git clone https://github.com/sp-tarkov/modules.git --branch "$SPT_MODULES_BRANCH" --depth 1 modules
|
||||||
|
|
||||||
|
# 解压 Managed.zip 文件
|
||||||
|
echo "解压 Managed.zip 文件..."
|
||||||
|
mkdir -p modules/project/Shared/Managed
|
||||||
|
cd modules/project/Shared/Managed
|
||||||
|
unzip -q -o "$MANAGED_ZIP_FILE"
|
||||||
|
echo "Managed.zip 解压完毕."
|
||||||
|
|
||||||
|
# 检查解压后是否有子目录,如果有则移动文件到当前目录
|
||||||
|
if [ "$(ls -A | wc -l)" -eq 1 ] && [ -d "$(ls)" ]; then
|
||||||
|
SUBDIR="$(ls)"
|
||||||
|
echo "检测到子目录: $SUBDIR,移动文件到当前目录..."
|
||||||
|
mv "$SUBDIR"/* . 2>/dev/null || true
|
||||||
|
rmdir "$SUBDIR" 2>/dev/null || true
|
||||||
|
echo "文件移动完成"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 编译 Modules
|
||||||
|
echo "编译 Modules..."
|
||||||
|
cd "$WORKSPACE/modules/project"
|
||||||
|
dotnet build -c Release -p:Version="$SPT_VERSION"
|
||||||
|
echo "Modules 编译完成!"
|
||||||
|
|
||||||
|
# 复制编译结果
|
||||||
|
echo "复制编译结果..."
|
||||||
|
if [ -d 'Build' ]; then
|
||||||
|
cp -r Build "$WORKSPACE/output/modules"
|
||||||
|
echo "复制 Build 目录到 $WORKSPACE/output/modules"
|
||||||
|
else
|
||||||
|
mkdir -p "$WORKSPACE/output/modules"
|
||||||
|
find bin/Release -name '*.dll' -o -name '*.exe' -o -name '*.config' | xargs -I {} cp --parents {} "$WORKSPACE/output/modules/" 2>/dev/null || true
|
||||||
|
echo "复制 bin/Release 文件到 $WORKSPACE/output/modules"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$WORKSPACE"
|
||||||
|
echo "=== Modules 编译完成 ==="
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 编译 Launcher
|
||||||
|
if [ "$BUILD_LAUNCHER" = "true" ]; then
|
||||||
|
echo "=== 开始编译 Launcher ==="
|
||||||
|
|
||||||
|
# 克隆 Launcher 仓库
|
||||||
|
echo "克隆 Launcher 仓库..."
|
||||||
|
git clone https://github.com/sp-tarkov/launcher.git --branch "$SPT_LAUNCHER_BRANCH" --depth 1 launcher
|
||||||
|
|
||||||
|
# 编译 Launcher
|
||||||
|
echo "编译 Launcher..."
|
||||||
|
cd launcher/project
|
||||||
|
dotnet build -c Release
|
||||||
|
echo "Launcher 编译完成!"
|
||||||
|
|
||||||
|
# 复制编译结果
|
||||||
|
echo "复制编译结果..."
|
||||||
|
if [ -d 'Build' ]; then
|
||||||
|
cp -r Build "$WORKSPACE/output/launcher"
|
||||||
|
echo "复制 Build 目录到 $WORKSPACE/output/launcher"
|
||||||
|
else
|
||||||
|
mkdir -p "$WORKSPACE/output/launcher"
|
||||||
|
find bin/Release -name '*.dll' -o -name '*.exe' -o -name '*.config' | xargs -I {} cp --parents {} "$WORKSPACE/output/launcher/" 2>/dev/null || true
|
||||||
|
echo "复制 bin/Release 文件到 $WORKSPACE/output/launcher"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir "$WORKSPACE/output/launcher/SPT"
|
||||||
|
mv "$WORKSPACE/output/launcher/SPT_Data" "$WORKSPACE/output/launcher/SPT/SPT_Data"
|
||||||
|
mv "$WORKSPACE/output/launcher/SPT.Launcher.exe" "$WORKSPACE/output/launcher/SPT/SPT.Launcher.exe"
|
||||||
|
mv "$WORKSPACE/output/launcher/LICENSE-Launcher.txt" "$WORKSPACE/output/launcher/SPT/LICENSE-Launcher.txt"
|
||||||
|
|
||||||
|
cd "$WORKSPACE"
|
||||||
|
echo "=== Launcher 编译完成 ==="
|
||||||
|
|
||||||
|
echo "=== 克隆 build 仓库并复制静态资源 ==="
|
||||||
|
|
||||||
|
# 克隆 build 仓库
|
||||||
|
echo "克隆 build 仓库..."
|
||||||
|
git clone https://github.com/sp-tarkov/build.git --branch "$SPT_BUILD_BRANCH" --depth 1 build-repo
|
||||||
|
|
||||||
|
# 复制整个 static-assets-csharp 目录到 launcher
|
||||||
|
if [ -d "build-repo/static-assets-csharp" ]; then
|
||||||
|
echo "复制 static-assets-csharp 到 launcher..."
|
||||||
|
cp -r build-repo/static-assets-csharp/* "$WORKSPACE/output/launcher/"
|
||||||
|
echo "静态资源复制完成"
|
||||||
|
else
|
||||||
|
echo "警告: static-assets-csharp 目录不存在"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$WORKSPACE"
|
||||||
|
echo "=== 静态资源复制完成 ==="
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 复制版本信息
|
||||||
|
echo "复制版本信息文件..."
|
||||||
|
cp "version.info" "$WORKSPACE/output/"
|
||||||
|
|
||||||
|
# 如果是构建全部,将 Modules 整合到 Launcher 中
|
||||||
|
if [ "$BUILD_MODULES" = "true" ] && [ "$BUILD_LAUNCHER" = "true" ]; then
|
||||||
|
echo "=== 整合 Modules 到 Launcher ==="
|
||||||
|
cd "$WORKSPACE/output"
|
||||||
|
|
||||||
|
# 如果存在 launcher 目录,将 modules 内容复制到 launcher 中
|
||||||
|
if [ -d "launcher" ] && [ -d "modules" ]; then
|
||||||
|
echo "将 Modules 文件整合到 Launcher 中..."
|
||||||
|
|
||||||
|
# 复制 Modules 的所有文件到 launcher/Modules
|
||||||
|
cp -r modules/* launcher/
|
||||||
|
|
||||||
|
echo "Modules 文件已整合到 Launcher 目录"
|
||||||
|
|
||||||
|
# 删除原始的 modules 目录
|
||||||
|
rm -rf modules
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 如果启用压缩,使用整合后的 launcher 目录进行压缩
|
||||||
|
if [ "$COMPRESS" = "true" ]; then
|
||||||
|
echo "=== 开始压缩整合后的文件 ==="
|
||||||
|
cd "$WORKSPACE/output"
|
||||||
|
echo "压缩目录: $(pwd)"
|
||||||
|
echo "压缩文件: $ARCHIVE_NAME"
|
||||||
|
|
||||||
|
zip -r -9 "$ARCHIVE_NAME" .
|
||||||
|
|
||||||
|
# 计算文件信息
|
||||||
|
FILE_SIZE=$(stat -c %s "$ARCHIVE_NAME")
|
||||||
|
FILE_SIZE_MB=$(awk "BEGIN {printf \"%.2f\", $FILE_SIZE / 1024 / 1024}")
|
||||||
|
FILE_HASH=$(md5sum "$ARCHIVE_NAME" | awk '{print $1}' | xxd -r -p | base64)
|
||||||
|
|
||||||
|
echo "压缩完成: $ARCHIVE_NAME"
|
||||||
|
echo "文件大小: ${FILE_SIZE_MB} MB"
|
||||||
|
echo "文件哈希: $FILE_HASH"
|
||||||
|
|
||||||
|
# 清理未压缩的文件
|
||||||
|
echo "清理原始文件..."
|
||||||
|
find . -maxdepth 1 ! -name "$ARCHIVE_NAME" -type f -delete
|
||||||
|
rm -rf launcher
|
||||||
|
echo "=== 压缩完成 ==="
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# 单个组件压缩
|
||||||
|
if [ "$COMPRESS" = "true" ]; then
|
||||||
|
echo "=== 开始压缩 ==="
|
||||||
|
cd "$WORKSPACE/output"
|
||||||
|
echo "压缩目录: $(pwd)"
|
||||||
|
echo "压缩文件: $ARCHIVE_NAME"
|
||||||
|
|
||||||
|
zip -r -9 "$ARCHIVE_NAME" .
|
||||||
|
|
||||||
|
# 计算文件信息
|
||||||
|
FILE_SIZE=$(stat -c %s "$ARCHIVE_NAME")
|
||||||
|
FILE_SIZE_MB=$(awk "BEGIN {printf \"%.2f\", $FILE_SIZE / 1024 / 1024}")
|
||||||
|
FILE_HASH=$(md5sum "$ARCHIVE_NAME" | awk '{print $1}' | xxd -r -p | base64)
|
||||||
|
|
||||||
|
echo "压缩完成: $ARCHIVE_NAME"
|
||||||
|
echo "文件大小: ${FILE_SIZE_MB} MB"
|
||||||
|
echo "文件哈希: $FILE_HASH"
|
||||||
|
|
||||||
|
# 清理未压缩的文件
|
||||||
|
echo "清理原始文件..."
|
||||||
|
find . -maxdepth 1 ! -name "$ARCHIVE_NAME" -type f -delete
|
||||||
|
rm -rf modules launcher
|
||||||
|
echo "=== 压缩完成 ==="
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "所有操作完成!"
|
||||||
Reference in New Issue
Block a user