diff --git a/.gitea/workflows/unreal-build.yml b/.gitea/workflows/unreal-build.yml index 834d9f1b..1241697d 100644 --- a/.gitea/workflows/unreal-build.yml +++ b/.gitea/workflows/unreal-build.yml @@ -3,52 +3,10 @@ name: Unreal Engine Build on: push: branches: [ main, develop ] - pull_request: - branches: [ main, develop ] jobs: - # windows-build: - # runs-on: windows - # steps: - # - name: Checkout repository - # uses: actions/checkout@v3 - # with: - # lfs: true - # fetch-depth: 0 # Get all history to properly handle UE dependencies - - # - name: Setup Unreal Engine - # run: | - # # Ensure Unreal Engine is installed and set up - # # This assumes you have Unreal Engine installed on your runner - # # If not, you can add installation steps here - - # # Set environment variables for Unreal Engine - # echo "UE_ROOT=C:\Program Files\Epic Games\UE_5.2" >> $GITHUB_ENV - - # - name: Build Unreal Project - # run: | - # # Find your .uproject file (adjust path as needed) - # $UPROJECT_PATH = Get-ChildItem -Path . -Filter "*.uproject" -Recurse | Select-Object -First 1 -ExpandProperty FullName - # Write-Host "Building project: $UPROJECT_PATH" - - # # Use Unreal Automation Tool to build the project - # & "$env:UE_ROOT\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun ` - # -project="$UPROJECT_PATH" ` - # -noP4 ` - # -platform=Win64 ` - # -clientconfig=Development ` - # -cook -build -stage -pak -archive ` - # -archivedirectory="$PWD\Build" - - # - name: Upload build artifacts - # uses: actions/upload-artifact@v3 - # with: - # name: windows-build - # path: Build/ - # retention-days: 7 - - macos-build: - runs-on: macos + windows-build: + runs-on: windows steps: - name: Checkout repository uses: actions/checkout@v3 @@ -56,72 +14,170 @@ jobs: lfs: true fetch-depth: 0 - - name: Setup Unreal Engine + - name: Set Unreal Engine Path run: | - # Use the correct path where Unreal Engine is installed - UE_PATH="/Users/Shared/Epic Games/UE_5.5" + echo "UE_ROOT=F:\LuckyRobots\LuckyRobots\Engine" >> $Env:GITHUB_ENV + echo "DOTNET_CLI_HOME=$env:TEMP" >> $Env:GITHUB_ENV + echo "MSBUILDDISABLENODEREUSE=1" >> $Env:GITHUB_ENV + echo "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1" >> $Env:GITHUB_ENV + echo "DOTNET_CLI_TELEMETRY_OPTOUT=1" >> $Env:GITHUB_ENV + echo "DOTNET_BUILD_OUTPUT_DIR=$env:TEMP\dotnet-build" >> $Env:GITHUB_ENV + + - name: Set up build environment + run: | + # Create a custom build output directory in temp + $buildRoot = Join-Path $env:TEMP "unreal-build" + $dotnetBuildDir = Join-Path $buildRoot "dotnet-build" + $buildOutputDir = Join-Path $buildRoot "output" - if [ ! -d "$UE_PATH" ]; then - echo "Error: Unreal Engine is not installed in the expected location" - echo "Please ensure Unreal Engine is installed at $UE_PATH" - exit 1 - fi + # Create directories with full permissions + foreach ($dir in @($buildRoot, $dotnetBuildDir, $buildOutputDir)) { + New-Item -ItemType Directory -Force -Path $dir + icacls $dir /grant Everyone:F /T + $acl = Get-Acl $dir + $acl.SetAccessRuleProtection($false, $true) + Set-Acl $dir $acl + } - # Set environment variable with the correct Engine path - echo "UE_ROOT=$UE_PATH/Engine" >> $GITHUB_ENV - echo "Using Unreal Engine 5.5" - + # Set environment variables for build paths + echo "DOTNET_BUILD_OUTPUT_DIR=$dotnetBuildDir" >> $Env:GITHUB_ENV + echo "DOTNET_CLI_HOME=$dotnetBuildDir" >> $Env:GITHUB_ENV + echo "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1" >> $Env:GITHUB_ENV + echo "DOTNET_CLI_TELEMETRY_OPTOUT=1" >> $Env:GITHUB_ENV + echo "DOTNET_USE_POLLING_FILE_WATCHER=true" >> $Env:GITHUB_ENV + echo "MSBUILDDISABLENODEREUSE=1" >> $Env:GITHUB_ENV + echo "DOTNET_RUNTIME_ID=win-x64" >> $Env:GITHUB_ENV + + # Clean any existing build artifacts + Remove-Item -Path "$dotnetBuildDir\*" -Recurse -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$buildOutputDir\*" -Recurse -Force -ErrorAction SilentlyContinue + + # Set up global.json to use the correct SDK version + $globalJson = @" + { + "sdk": { + "version": "8.0.300", + "rollForward": "latestFeature" + } + } + "@ + Set-Content -Path "global.json" -Value $globalJson + + # Create a custom Directory.Build.props file to set output paths + $buildProps = @" + + + + $(DOTNET_BUILD_OUTPUT_DIR) + $(DOTNET_BUILD_OUTPUT_DIR)\obj + $(BaseOutputPath)\bin\$(Configuration)\$(TargetFramework) + + + "@ + Set-Content -Path "Directory.Build.props" -Value $buildProps + + - name: Locate .uproject file + run: | + $UPROJECT_PATH = Get-ChildItem -Path "UNREAL_PROJECTS" -Filter "*.uproject" -Recurse | Select-Object -First 1 -ExpandProperty FullName + echo "UPROJECT_PATH=$UPROJECT_PATH" >> $Env:GITHUB_ENV + Write-Host "Found project file: $UPROJECT_PATH" + - name: Build Unreal Project run: | - # Debug information - echo "=== Environment Information ===" - echo "macOS Version:" - sw_vers - echo "Current working directory: $(pwd)" - ls -la # List all files in current directory + # Create and set permissions for build output directory + $buildOutputDir = Join-Path $env:TEMP "unreal-build\output" + New-Item -ItemType Directory -Force -Path $buildOutputDir + icacls $buildOutputDir /grant Everyone:F - echo "=== Unreal Engine Information ===" - ls -la "$UE_ROOT/Build/BatchFiles" + # Run the build using cmd.exe + $uatPath = Join-Path $Env:UE_ROOT "Build\BatchFiles\RunUAT.bat" + $arguments = "BuildCookRun -project=`"$Env:UPROJECT_PATH`" -noP4 -platform=Win64 -clientconfig=Development -cook -build -stage -pak -archive -archivedirectory=`"$buildOutputDir`"" - echo "=== Project Information ===" - # Detailed search for the project file - echo "Searching for .uproject files:" - find . -name "*.uproject" -type f - - # Get the absolute path of the project file - UPROJECT_PATH=$(find . -name "*.uproject" -type f | head -1) - if [ -z "$UPROJECT_PATH" ]; then - echo "Error: Could not find .uproject file" - exit 1 - fi - - # Convert to absolute path and verify file exists - UPROJECT_ABSOLUTE_PATH=$(realpath "$UPROJECT_PATH") - echo "Project absolute path: $UPROJECT_ABSOLUTE_PATH" - - if [ ! -f "$UPROJECT_ABSOLUTE_PATH" ]; then - echo "Error: Project file does not exist at: $UPROJECT_ABSOLUTE_PATH" - exit 1 - fi - - echo "Using Unreal Engine at: $UE_ROOT" - - # Make the project file readable and executable - chmod 755 "$UPROJECT_ABSOLUTE_PATH" - - # Run the build using absolute paths - chmod +x "$UE_ROOT/Build/BatchFiles/RunUAT.sh" - "$UE_ROOT/Build/BatchFiles/RunUAT.sh" BuildCookRun \ - -project="$UPROJECT_ABSOLUTE_PATH" \ - -noP4 \ - -platform=Mac \ - -clientconfig=Development \ - -cook -build -stage -pak -archive \ - -archivedirectory="$(pwd)/Build" - + # Use cmd.exe to run the batch file + cmd.exe /c "`"$uatPath`" $arguments" + - name: Upload build artifacts uses: actions/upload-artifact@v3 with: - name: macos-build - path: Build/ - retention-days: 7 \ No newline at end of file + name: windows-build + path: BuildOutput/ + retention-days: 7 + + # macos-build: + # runs-on: macos + # steps: + # - name: Checkout repository + # uses: actions/checkout@v3 + # with: + # lfs: true + # fetch-depth: 0 + + # - name: Setup Unreal Engine + # run: | + # # Use the correct path where Unreal Engine is installed + # UE_PATH="/Users/Shared/Epic Games/UE_5.5" + + # if [ ! -d "$UE_PATH" ]; then + # echo "Error: Unreal Engine is not installed in the expected location" + # echo "Please ensure Unreal Engine is installed at $UE_PATH" + # exit 1 + # fi + + # # Set environment variable with the correct Engine path + # echo "UE_ROOT=$UE_PATH/Engine" >> $GITHUB_ENV + # echo "Using Unreal Engine 5.5" + + # - name: Build Unreal Project + # run: | + # # Debug information + # echo "=== Environment Information ===" + # echo "macOS Version:" + # sw_vers + # echo "Current working directory: $(pwd)" + # ls -la # List all files in current directory + + # echo "=== Unreal Engine Information ===" + # ls -la "$UE_ROOT/Build/BatchFiles" + + # echo "=== Project Information ===" + # # Detailed search for the project file + # echo "Searching for .uproject files:" + # find . -name "*.uproject" -type f + + # # Get the absolute path of the project file + # UPROJECT_PATH=$(find . -name "*.uproject" -type f | head -1) + # if [ -z "$UPROJECT_PATH" ]; then + # echo "Error: Could not find .uproject file" + # exit 1 + # fi + + # # Convert to absolute path and verify file exists + # UPROJECT_ABSOLUTE_PATH=$(realpath "$UPROJECT_PATH") + # echo "Project absolute path: $UPROJECT_ABSOLUTE_PATH" + + # if [ ! -f "$UPROJECT_ABSOLUTE_PATH" ]; then + # echo "Error: Project file does not exist at: $UPROJECT_ABSOLUTE_PATH" + # exit 1 + # fi + + # echo "Using Unreal Engine at: $UE_ROOT" + + # # Make the project file readable and executable + # chmod 755 "$UPROJECT_ABSOLUTE_PATH" + + # # Run the build using absolute paths + # chmod +x "$UE_ROOT/Build/BatchFiles/RunUAT.sh" + # "$UE_ROOT/Build/BatchFiles/RunUAT.sh" BuildCookRun \ + # -project="$UPROJECT_ABSOLUTE_PATH" \ + # -noP4 \ + # -platform=Mac \ + # -clientconfig=Development \ + # -cook -build -stage -pak -archive \ + # -archivedirectory="$(pwd)/Build" + + # - name: Upload build artifacts + # uses: actions/upload-artifact@v3 + # with: + # name: macos-build + # path: Build/ + # retention-days: 7 \ No newline at end of file