【工具】提交工具

main
刘涛 2025-04-30 14:52:55 +08:00
parent f94e9a6919
commit 5475841e6b
4 changed files with 255 additions and 0 deletions

View File

@ -0,0 +1,51 @@
#!/bin/bash
# 自动上传dll脚本
# 当前目录在C:/Work/Projects/NLDClient/Tool/dll_tools
# 找到同级别C:/Work/Projects/NLDClient/ProjectNLD/Library/ScriptAssemblies/{0}.dll
# 复制到指定位置 C:/Work/Projects/NLDClient/WaitUpload
# 读取传入参数
if [ $# -eq 0 ]; then
echo "Usage: $0 <dll_name_without_extension>"
echo "No arguments provided"
exit 1
fi
if [ $# -gt 1 ]; then
echo "Too many arguments provided"
exit 1
fi
# 输出参数
echo "Need To Find: $1"
# 目标路径
TARGET_PATH="../../WaitUpload"
# 源路径
SOURCE_PATH="../../ProjectNLD/Library/ScriptAssemblies"
# 目标文件
TARGET_FILE="$TARGET_PATH/$1.dll"
# 源文件
SOURCE_FILE="$SOURCE_PATH/$1.dll"
# 检查源文件是否存在
if [ ! -f "$SOURCE_FILE" ]; then
echo "Source file does not exist: $SOURCE_FILE"
exit 1
fi
# 检查目标路径是否存在, 如果不存在则新建
if [ ! -d "$TARGET_PATH" ]; then
mkdir -p "$TARGET_PATH"
fi
# 检查目标文件是否存在, 如果存在则删除
if [ -f "$TARGET_FILE" ]; then
rm -f "$TARGET_FILE"
fi
# 复制文件
cp "$SOURCE_FILE" "$TARGET_FILE"
# 检查复制是否成功
if [ $? -ne 0 ]; then
echo "Failed to copy file"
exit 1
fi
# 输出结果
echo "File copied successfully to $TARGET_FILE"

View File

@ -0,0 +1,60 @@
pipeline {
agent any
stages {
stage('拉最新工程') {
steps {
script {
def currentPath = sh(script: 'pwd', returnStdout: true).trim()
echo "cd ${currentPath}"
//
def gitDirExists = sh(script: '[ -d ".git" ] && echo "true" || echo "false"', returnStdout: true).trim()
def scriptPathExists = fileExists("${WORKSPACE}/Tool/build_tools/git_revert_modules_modification.sh")
if (gitDirExists == 'true' && scriptPathExists)
{
sh "chmod +x $WORKSPACE/Tool/build_tools/git_revert_modules_modification.sh"
sh "$WORKSPACE/Tool/build_tools/git_revert_modules_modification.sh $WORKSPACE"
}
def remote = GetRemote();
echo "拉取分支:${remote}"
checkout scmGit(branches: [[name: "*/${remote}"]],
extensions: [checkoutOption(60), lfs(), cloneOption(noTags: false, reference: '', shallow: false, timeout: 120), submodule(recursiveSubmodules: true, reference: '', timeout: 1200)],
userRemoteConfigs: [[url: 'http://1.14.122.170:3000/PHXH/NLDClient.git']])
}
}
}
stage('设置环境') {
steps {
//
echo "copy local env file to $WORKSPACE"
sh "cp /Users/mayuanzheng/Builds/local_env.sh $WORKSPACE/Tool/build_tools/"
}
}
stage('打开unity工程') {
steps {
// dll_tools
// open_unity.sh
// auto_upload_dll.sh
// auto_upload_dll.sh dllName
// push_to_git.sh
//
sh "chmod +x $WORKSPACE/Tool/build_tools/dll_tools/*"
// unity
sh "cd $WORKSPACE/Tool/dll_tools && ./open_unity.sh"
// unity
sleep 10
// dll
sh "cd $WORKSPACE/Tool/dll_tools && ./auto_upload_dll.sh GamePlay"
//
sleep 10
//
sh "cd $WORKSPACE/Tool/dll_tools && ./push_to_git.sh"
}
}
}
}

View File

@ -0,0 +1,89 @@
#!/bin/bash
# 打开unity并等待编译完成后自动退出
# 当前目录在C:/Work/Projects/NLDClient/Tool/dll_tools
# 找到同级别C:/Work/Projects/NLDClient/ProjectNLD
# 打开unity
# 等待编译完成
# 退出unity
# 获取当前脚本所在目录的绝对路径
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 基于当前脚本位置计算PROJECT_PATH
# 当前目录是C:/Work/Projects/NLDClient/Tool/dll_tools
# 我们需要向上两级再进入ProjectNLD目录
PROJECT_PATH="$(dirname "$(dirname "$SCRIPT_DIR")")/ProjectNLD"
echo "Calculated PROJECT_PATH: $PROJECT_PATH"
# 检查PROJECT_PATH是否存在
if [ ! -d "$PROJECT_PATH" ]; then
echo "PROJECT_PATH does not exist: $PROJECT_PATH"
exit 1
fi
echo "PROJECT_PATH exists: $PROJECT_PATH"
# 检查本地是否有local_env.sh文件, 如果有则使用其中的路径, 里面定义了UNITY_PATH
# 如果没有则使用默认的unity地址
if [ -f ./local_env.sh ]; then
source ./local_env.sh
echo "found the local_env file"
else
# 没有则使用默认的unity地址
# UNITY_PATH="/Applications/Unity/Hub/Editor/2022.3.50f1c1/Unity.app/Contents/MacOS/Unity"
echo "local_env.sh not found, using default UNITY_PATH"
UNITY_PATH="/Applications/Unity/Hub/Editor/2022.3.50f1c1/Unity.app/Contents/MacOS/Unity"
fi
# 输出UNITY_PATH
echo "UNITY_PATH: $UNITY_PATH"
# 创建临时日志文件
LOG_FILE="unity_build_$(date +%Y%m%d_%H%M%S).log"
echo "Unity build log will be saved to $LOG_FILE"
# 创建一个临时的编辑器脚本用于在编译完成后退出Unity
TEMP_SCRIPT="$PROJECT_PATH/Assets/Editor/TempQuitAfterBuild.cs"
mkdir -p "$(dirname "$TEMP_SCRIPT")"
cat > "$TEMP_SCRIPT" << 'EOL'
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
public class QuitAfterBuild
{
static QuitAfterBuild()
{
EditorApplication.update += WaitForCompilation;
}
static void WaitForCompilation()
{
if (!EditorApplication.isCompiling)
{
Debug.Log("Compilation finished. Quitting Unity...");
EditorApplication.update -= WaitForCompilation;
EditorApplication.Exit(0);
}
}
}
EOL
echo "Starting Unity in batchmode..."
# 使用Unity的batchmode命令行参数打开项目
"$UNITY_PATH" -projectPath "$PROJECT_PATH" -logFile "$LOG_FILE" &
# 保存Unity进程ID
UNITY_PID=$!
echo "Unity started with PID: $UNITY_PID"
echo "Waiting for Unity to complete compilation and exit..."
# 等待Unity进程结束
wait $UNITY_PID
# 删除临时编辑器脚本
rm -f "$TEMP_SCRIPT"
echo "Unity process has exited."
echo "Build log available at: $LOG_FILE"

View File

@ -0,0 +1,55 @@
#!/bin/bash
# 自动把dll上传到git
# 当前目录在C:/Work/Projects/NLDClient/Tool/dll_tools
# 当前存档dll路径C:/Work/Projects/NLDClient/WaitUpload
# 找到绝对路径/Users/mayuanzheng/Documents/NoRemove/GamePlay_Dll
# 复制所有dll到绝对路径中并覆盖
# 使用git强制提交
# 获取dll所在路径
SRC_DLL_PATH="../../WaitUpload"
# 目标路径
TARGET_PATH="/Users/mayuanzheng/Documents/NoRemove/GamePlay_Dll"
# 检查源路径是否存在
if [ ! -d "$SRC_DLL_PATH" ]; then
echo "Source path does not exist: $SRC_DLL_PATH"
exit 1
fi
# 检查目标路径是否存在
if [ ! -d "$TARGET_PATH" ]; then
echo "Target path does not exist: $TARGET_PATH"
exit 1
fi
# 拷贝所有dll到目标路径
cp -rf "$SRC_DLL_PATH"/*.dll "$TARGET_PATH"
# 检查拷贝是否成功
if [ $? -ne 0 ]; then
echo "Failed to copy dll files"
exit 1
fi
# 输出结果
echo "Dll files copied successfully to $TARGET_PATH"
# 进入目标路径
cd "$TARGET_PATH"
# 检查是否进入成功
if [ $? -ne 0 ]; then
echo "Failed to change directory to $TARGET_PATH"
exit 1
fi
# 强制提交
git add .
# 添加时间戳到提交信息
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
git commit -m "Auto upload dll - $TIMESTAMP"
git push --force
# 检查提交是否成功
if [ $? -ne 0 ]; then
echo "Failed to push to git"
exit 1
fi
# 输出结果
echo "Dll files pushed to git successfully"