Добавление readme
This commit is contained in:
@@ -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
|
||||
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 }}
|
||||
Reference in New Issue
Block a user