Добавление readme

This commit is contained in:
IlyStalker
2026-08-16 22:13:20 +03:00
parent 8a4e8420a1
commit fa64871327
2 changed files with 127 additions and 44 deletions
+126 -44
View File
@@ -1,105 +1,187 @@
name: Nightly Build name: Nightly Build
on: on:
schedule: schedule:
# 01:00 MSK = 22:00 UTC предыдущего дня - cron: ${{ vars.CRON_SCHEDULE }}
- cron: '0 22 * * *' workflow_dispatch:
workflow_dispatch: # Ручной запуск для тестов
env:
PROJECT_NAME: ${{ vars.PROJECT_NAME }}
BUILD_CONFIG: ${{ vars.BUILD_CONFIGURATION }}
RETENTION_DAYS: ${{ vars.ARTIFACT_RETENTION_DAYS }}
jobs: jobs:
check-changes: check-changes:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
changed: ${{ steps.check.outputs.changed }} changed: ${{ steps.check.outputs.changed }}
commit_count: ${{ steps.check.outputs.commit_count }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
fetch-depth: 2 fetch-depth: 2
- name: Check for changes in last 24h - name: Check for changes in last 24h
id: check id: check
run: | run: |
# Проверяем, были ли коммиты за последние 24 часа
CHANGES=$(git log --since="24 hours ago" --oneline | wc -l) CHANGES=$(git log --since="24 hours ago" --oneline | wc -l)
if [ "$CHANGES" -gt 0 ]; then if [ "$CHANGES" -gt 0 ]; then
echo "changed=true" >> $GITHUB_OUTPUT echo "changed=true" >> $GITHUB_OUTPUT
echo "Found $CHANGES commits in last 24h" echo "commit_count=$CHANGES" >> $GITHUB_OUTPUT
else else
echo "changed=false" >> $GITHUB_OUTPUT echo "changed=false" >> $GITHUB_OUTPUT
echo "No recent changes, skipping build" echo "commit_count=0" >> $GITHUB_OUTPUT
fi fi
build-linux: build-linux:
needs: check-changes needs: check-changes
if: needs.check-changes.outputs.changed == 'true' if: needs.check-changes.outputs.changed == 'true'
runs-on: ubuntu-runner # ← имя вашего Linux-раннера в Gitea runs-on: ${{ vars.LINUX_RUNNER_LABEL }}
timeout-minutes: 120 timeout-minutes: 120
env:
ENGINE_DIR: ${{ vars.UE5_ENGINE_PATH_LINUX }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
lfs: true lfs: true
- name: Pull LFS files - name: Pull LFS files
run: git lfs pull run: git lfs pull
- name: Build Linux Shipping - name: Verify engine path
run: | run: |
ENGINE_DIR="/opt/unreal-engine/UE-5.8.1" if [ ! -d "$ENGINE_DIR" ]; then
PROJECT="$(pwd)/Game_2.uproject" 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" \ "$ENGINE_DIR/Engine/Build/BatchFiles/Linux/Build.sh" \
YourGame Linux Shipping \ "${PROJECT_NAME}" Linux "${BUILD_CONFIG}" \
-Project="$PROJECT" \ -Project="$(pwd)/${PROJECT_NAME}.uproject" \
-NoP4 -UTF8Output -Clean -NoP4 -UTF8Output -Clean
# Архивация билда
ARCHIVE_NAME="Game_2-Linux-${{ github.sha::7 }}.tar.gz"
tar -czf "$ARCHIVE_NAME" \ tar -czf "$ARCHIVE_NAME" \
-C Binaries/Linux \ -C Binaries/Linux \
YourGame-Linux-Shipping \ "${PROJECT_NAME}-Linux-${BUILD_CONFIG}" \
../Content/Paks/* ../Content/Paks/* 2>/dev/null || true
echo "LINUX_ARTIFACT=$ARCHIVE_NAME" >> $GITHUB_ENV echo "ARCHIVE_NAME=$ARCHIVE_NAME" >> $GITHUB_ENV
- name: Upload Linux artifact - name: Upload Linux artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: linux-build name: linux-build
path: ${{ env.LINUX_ARTIFACT }} path: ${{ env.ARCHIVE_NAME }}
retention-days: 7 retention-days: ${{ env.RETENTION_DAYS }}
build-windows: build-windows:
needs: check-changes needs: check-changes
if: needs.check-changes.outputs.changed == 'true' if: needs.check-changes.outputs.changed == 'true'
runs-on: windows-runner # ← имя вашего Windows-раннера в Gitea runs-on: ${{ vars.WINDOWS_RUNNER_LABEL }}
timeout-minutes: 180 timeout-minutes: 180
env:
ENGINE_DIR: ${{ vars.UE5_ENGINE_PATH_WINDOWS }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
lfs: true lfs: true
- name: Pull LFS files - name: Pull LFS files
run: git lfs pull run: git lfs pull
- name: Build Windows Shipping - name: Verify engine path
shell: cmd shell: cmd
run: | run: |
set ENGINE_DIR=C:\Program Files\Epic Games\UE_5.8.1 if not exist "%ENGINE_DIR%" (
set PROJECT=%CD%\Game_2.uproject 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" ^ call "%ENGINE_DIR%\Engine\Build\BatchFiles\Build.bat" ^
YourGame Win64 Shipping ^ %PROJECT_NAME% Win64 %BUILD_CONFIG% ^
-Project="%PROJECT%" ^ -Project="%CD%\%PROJECT_NAME%.uproject" ^
-NoP4 -UTF8Output -Clean -NoP4 -UTF8Output -Clean
:: Архивация powershell Compress-Archive ^
set ARCHIVE_NAME=Game_2-Win64-%GITHUB_SHA:~0,7%.zip -Path "Binaries\Win64\*" ^
powershell Compress-Archive -Path "Binaries\Win64\*" -DestinationPath "%ARCHIVE_NAME%" -DestinationPath "%ARCHIVE_NAME%" ^
-Force
echo LINUX_ARTIFACT=%ARCHIVE_NAME% >> %GITHUB_ENV%
echo ARCHIVE_NAME=%ARCHIVE_NAME%>> %GITHUB_ENV%
- name: Upload Windows artifact - name: Upload Windows artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: windows-build name: windows-build
path: ${{ env.WINDOWS_ARTIFACT }} path: ${{ env.ARCHIVE_NAME }}
retention-days: 7 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 }}
+1
View File
@@ -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)