name: Nightly Build on: schedule: # 01:00 MSK = 22:00 UTC предыдущего дня - cron: '0 22 * * *' workflow_dispatch: # Ручной запуск для тестов jobs: check-changes: runs-on: ubuntu-latest outputs: changed: ${{ steps.check.outputs.changed }} steps: - uses: actions/checkout@v4 with: fetch-depth: 2 - name: Check for changes in last 24h id: check run: | # Проверяем, были ли коммиты за последние 24 часа CHANGES=$(git log --since="24 hours ago" --oneline | wc -l) if [ "$CHANGES" -gt 0 ]; then echo "changed=true" >> $GITHUB_OUTPUT echo "Found $CHANGES commits in last 24h" else echo "changed=false" >> $GITHUB_OUTPUT echo "No recent changes, skipping build" fi build-linux: needs: check-changes if: needs.check-changes.outputs.changed == 'true' runs-on: ubuntu-runner # ← имя вашего Linux-раннера в Gitea timeout-minutes: 120 steps: - uses: actions/checkout@v4 with: lfs: true - name: Pull LFS files run: git lfs pull - name: Build Linux Shipping run: | ENGINE_DIR="/opt/unreal-engine/UE-5.8.1" PROJECT="$(pwd)/YourGame.uproject" "$ENGINE_DIR/Engine/Build/BatchFiles/Linux/Build.sh" \ YourGame Linux Shipping \ -Project="$PROJECT" \ -NoP4 -UTF8Output -Clean # Архивация билда ARCHIVE_NAME="YourGame-Linux-${{ github.sha::7 }}.tar.gz" tar -czf "$ARCHIVE_NAME" \ -C Binaries/Linux \ YourGame-Linux-Shipping \ ../Content/Paks/* echo "LINUX_ARTIFACT=$ARCHIVE_NAME" >> $GITHUB_ENV - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: name: linux-build path: ${{ env.LINUX_ARTIFACT }} retention-days: 7 build-windows: needs: check-changes if: needs.check-changes.outputs.changed == 'true' runs-on: windows-runner # ← имя вашего Windows-раннера в Gitea timeout-minutes: 180 steps: - uses: actions/checkout@v4 with: lfs: true - name: Pull LFS files run: git lfs pull - name: Build Windows Shipping shell: cmd run: | set ENGINE_DIR=C:\Program Files\Epic Games\UE_5.8.1 set PROJECT=%CD%\YourGame.uproject call "%ENGINE_DIR%\Engine\Build\BatchFiles\Build.bat" ^ YourGame Win64 Shipping ^ -Project="%PROJECT%" ^ -NoP4 -UTF8Output -Clean :: Архивация set ARCHIVE_NAME=YourGame-Win64-%GITHUB_SHA:~0,7%.zip powershell Compress-Archive -Path "Binaries\Win64\*" -DestinationPath "%ARCHIVE_NAME%" echo LINUX_ARTIFACT=%ARCHIVE_NAME% >> %GITHUB_ENV% - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: name: windows-build path: ${{ env.WINDOWS_ARTIFACT }} retention-days: 7