From fa64871327c73e412e0218b2ed8c5fac61411a8f Mon Sep 17 00:00:00 2001 From: IlyStalker Date: Sun, 16 Aug 2026 22:13:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/nightly-build.yml | 170 +++++++++++++++++++++-------- Readme.md | 1 + 2 files changed, 127 insertions(+), 44 deletions(-) create mode 100644 Readme.md diff --git a/.gitea/workflows/nightly-build.yml b/.gitea/workflows/nightly-build.yml index 14c7582..dcca5ba 100644 --- a/.gitea/workflows/nightly-build.yml +++ b/.gitea/workflows/nightly-build.yml @@ -1,105 +1,187 @@ name: Nightly Build + on: schedule: - # 01:00 MSK = 22:00 UTC предыдущего дня - - cron: '0 22 * * *' - workflow_dispatch: # Ручной запуск для тестов + - cron: ${{ vars.CRON_SCHEDULE }} + workflow_dispatch: + +env: + PROJECT_NAME: ${{ vars.PROJECT_NAME }} + BUILD_CONFIG: ${{ vars.BUILD_CONFIGURATION }} + RETENTION_DAYS: ${{ vars.ARTIFACT_RETENTION_DAYS }} jobs: check-changes: runs-on: ubuntu-latest outputs: changed: ${{ steps.check.outputs.changed }} + commit_count: ${{ steps.check.outputs.commit_count }} 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" + echo "commit_count=$CHANGES" >> $GITHUB_OUTPUT else echo "changed=false" >> $GITHUB_OUTPUT - echo "No recent changes, skipping build" + echo "commit_count=0" >> $GITHUB_OUTPUT fi build-linux: needs: check-changes if: needs.check-changes.outputs.changed == 'true' - runs-on: ubuntu-runner # ← имя вашего Linux-раннера в Gitea + runs-on: ${{ vars.LINUX_RUNNER_LABEL }} timeout-minutes: 120 + env: + ENGINE_DIR: ${{ vars.UE5_ENGINE_PATH_LINUX }} steps: - uses: actions/checkout@v4 with: lfs: true - + - name: Pull LFS files run: git lfs pull - - - name: Build Linux Shipping + + - name: Verify engine path run: | - ENGINE_DIR="/opt/unreal-engine/UE-5.8.1" - PROJECT="$(pwd)/Game_2.uproject" - + if [ ! -d "$ENGINE_DIR" ]; then + echo "::error::Engine not found at $ENGINE_DIR" + exit 1 + fi + echo "Engine found: $ENGINE_DIR" + + - name: Build Linux ${{ env.BUILD_CONFIG }} + run: | + SHORT_SHA="${{ github.sha }}" + ARCHIVE_NAME="${PROJECT_NAME}-Linux-${SHORT_SHA::7}.tar.gz" + "$ENGINE_DIR/Engine/Build/BatchFiles/Linux/Build.sh" \ - YourGame Linux Shipping \ - -Project="$PROJECT" \ + "${PROJECT_NAME}" Linux "${BUILD_CONFIG}" \ + -Project="$(pwd)/${PROJECT_NAME}.uproject" \ -NoP4 -UTF8Output -Clean - - # Архивация билда - ARCHIVE_NAME="Game_2-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 - + "${PROJECT_NAME}-Linux-${BUILD_CONFIG}" \ + ../Content/Paks/* 2>/dev/null || true + + echo "ARCHIVE_NAME=$ARCHIVE_NAME" >> $GITHUB_ENV + - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: name: linux-build - path: ${{ env.LINUX_ARTIFACT }} - retention-days: 7 + path: ${{ env.ARCHIVE_NAME }} + retention-days: ${{ env.RETENTION_DAYS }} build-windows: needs: check-changes if: needs.check-changes.outputs.changed == 'true' - runs-on: windows-runner # ← имя вашего Windows-раннера в Gitea + runs-on: ${{ vars.WINDOWS_RUNNER_LABEL }} timeout-minutes: 180 + env: + ENGINE_DIR: ${{ vars.UE5_ENGINE_PATH_WINDOWS }} steps: - uses: actions/checkout@v4 with: lfs: true - + - name: Pull LFS files run: git lfs pull - - - name: Build Windows Shipping + + - name: Verify engine path shell: cmd run: | - set ENGINE_DIR=C:\Program Files\Epic Games\UE_5.8.1 - set PROJECT=%CD%\Game_2.uproject - + if not exist "%ENGINE_DIR%" ( + echo ::error::Engine not found at %ENGINE_DIR% + exit /b 1 + ) + echo Engine found: %ENGINE_DIR% + + - name: Build Windows ${{ env.BUILD_CONFIG }} + shell: cmd + run: | + set SHORT_SHA=%GITHUB_SHA:~0,7% + set ARCHIVE_NAME=%PROJECT_NAME%-Win64-%SHORT_SHA%.zip + call "%ENGINE_DIR%\Engine\Build\BatchFiles\Build.bat" ^ - YourGame Win64 Shipping ^ - -Project="%PROJECT%" ^ + %PROJECT_NAME% Win64 %BUILD_CONFIG% ^ + -Project="%CD%\%PROJECT_NAME%.uproject" ^ -NoP4 -UTF8Output -Clean - - :: Архивация - set ARCHIVE_NAME=Game_2-Win64-%GITHUB_SHA:~0,7%.zip - powershell Compress-Archive -Path "Binaries\Win64\*" -DestinationPath "%ARCHIVE_NAME%" - - echo LINUX_ARTIFACT=%ARCHIVE_NAME% >> %GITHUB_ENV% - + + powershell Compress-Archive ^ + -Path "Binaries\Win64\*" ^ + -DestinationPath "%ARCHIVE_NAME%" ^ + -Force + + echo ARCHIVE_NAME=%ARCHIVE_NAME%>> %GITHUB_ENV% + - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: name: windows-build - path: ${{ env.WINDOWS_ARTIFACT }} - retention-days: 7 \ No newline at end of file + path: ${{ env.ARCHIVE_NAME }} + retention-days: ${{ env.RETENTION_DAYS }} + + release: + needs: [build-linux, build-windows] + if: >- + always() && + needs.build-linux.result == 'success' && + needs.build-windows.result == 'success' + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + merge-multiple: true + + - name: Generate version info + id: version + run: | + DATE=$(date +'%Y%m%d') + SHA_SHORT="${{ github.sha }}" + TAG="nightly-${DATE}-${SHA_SHORT::7}" + echo "tag=$TAG" >> $GITHUB_OUTPUT + echo "date=$DATE" >> $GITHUB_OUTPUT + echo "sha_short=${SHA_SHORT::7}" >> $GITHUB_OUTPUT + + - name: List artifacts + run: ls -lah *.tar.gz *.zip 2>/dev/null || echo "No artifacts found" + + - name: Create Release & Upload Assets + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.version.outputs.tag }} + name: "🌙 Nightly ${{ steps.version.outputs.date }} (${{ steps.version.outputs.sha_short }})" + body: | + ## Nightly Build + + | Property | Value | + |----------|-------| + | Commit | `${{ github.sha }}` | + | Date | ${{ steps.version.outputs.date }} | + | Config | ${{ vars.BUILD_CONFIGURATION }} | + | Changes | ${{ needs.check-changes.outputs.commit_count }} commits | + + ### Downloads + - 🐧 **Linux:** `${{ vars.PROJECT_NAME }}-Linux-${{ steps.version.outputs.sha_short }}.tar.gz` + - 🪟 **Windows:** `${{ vars.PROJECT_NAME }}-Win64-${{ steps.version.outputs.sha_short }}.zip` + + --- + *⚠️ Auto-generated nightly build. May be unstable.* + draft: false + prerelease: true + files: | + *.tar.gz + *.zip + env: + GITHUB_TOKEN: ${{ secrets.UNREAL_TOKEN }} \ No newline at end of file diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..741a9be --- /dev/null +++ b/Readme.md @@ -0,0 +1 @@ +[![Nightly Build](https://gitea.ily-stalker.ru/ily_stalker/Game_2/actions/workflows/nightly-build.yml/badge.svg?branch=master)](https://gitea.ily-stalker.ru/ily_stalker/Game_2/actions?workflow=nightly-build.yml) \ No newline at end of file