Update build script to newer version which works better

This commit is contained in:
csd4ni3l
2025-12-13 14:38:16 +01:00
parent d6530600fa
commit d59b6c3726

View File

@@ -8,7 +8,13 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest, windows-latest, macos-latest] include:
- os: ubuntu-22.04
platform: linux
python-version: "3.11"
- os: windows-latest
platform: windows
python-version: "3.11"
steps: steps:
- name: Check-out repository - name: Check-out repository
@@ -35,58 +41,78 @@ jobs:
disable-plugins: tk-inter,dill-compat,eventlet,gevent,pyqt5,pyqt6,pyside2,pyside6,delvewheel,pywebview,matplotlib,spacy,enum-compat,pbr-compat,gevent,pmw-freezer,transformers,upx,kivy,options-nanny,multiprocessing,gi disable-plugins: tk-inter,dill-compat,eventlet,gevent,pyqt5,pyqt6,pyside2,pyside6,delvewheel,pywebview,matplotlib,spacy,enum-compat,pbr-compat,gevent,pmw-freezer,transformers,upx,kivy,options-nanny,multiprocessing,gi
include-data-dir: assets=assets include-data-dir: assets=assets
include-data-files: CREDITS=CREDITS include-data-files: CREDITS=CREDITS
mode: standalone mode: onefile
output-file: AimTrainer output-file: AimTrainer
- name: Zip Build Output - name: Locate and rename executable (Linux)
shell: bash if: matrix.os == 'ubuntu-22.04'
run: | run: |
mkdir -p zip_output set -euo pipefail
if [ "${{ runner.os }}" = "Windows" ]; then echo "Searching for built Linux binary..."
powershell.exe -Command "Compress-Archive -Path 'build/run.dist/*' -DestinationPath 'zip_output/AimTrainer-${{ runner.os }}.zip'" # List to help debugging when paths change
else ls -laR . | head -n 500 || true
cd build/run.dist BIN=$(find . -maxdepth 4 -type f -name 'AimTrainer*' -perm -u+x | head -n1 || true)
zip -r "../../zip_output/AimTrainer-${{ runner.os }}.zip" . if [ -z "${BIN}" ]; then
echo "ERROR: No Linux binary found after build"
exit 1
fi fi
echo "Found: ${BIN}"
mkdir -p build_output
cp "${BIN}" build_output/AimTrainer.bin
chmod +x build_output/AimTrainer.bin
echo "Executable ready: build_output/AimTrainer.bin"
shell: bash
- name: Upload Zipped Build Artifact - name: Locate and rename executable (Windows)
if: matrix.os == 'windows-latest'
run: |
Write-Host "Searching for built Windows binary..."
Get-ChildItem -Recurse -File -Filter 'AimTrainer*.exe' | Select-Object -First 1 | ForEach-Object {
Write-Host ("Found: " + $_.FullName)
New-Item -ItemType Directory -Force -Path build_output | Out-Null
Copy-Item $_.FullName "build_output\AimTrainer.exe"
Write-Host "Executable ready: build_output\AimTrainer.exe"
}
if (!(Test-Path build_output\AimTrainer.exe)) {
Write-Error "ERROR: No Windows binary found after build"
exit 1
}
shell: pwsh
- name: Upload build artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: AimTrainer-${{ runner.os }}.zip name: ${{ matrix.platform }}
path: zip_output/AimTrainer-${{ runner.os }}.zip path: build_output/AimTrainer.*
release: release:
name: Create GitHub Release
needs: build
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: build
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Download All Zipped Builds - name: Download All Build Artifacts
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
path: downloads path: downloads
- name: Delete Old Release (if exists) - name: Create release (if missing) and upload artifacts to tag
continue-on-error: true
run: gh release delete latest -y
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Delete Git tag (if exists)
continue-on-error: true
run: | run: |
git push origin :refs/tags/latest set -euo pipefail
git tag -d latest TAG="latest"
echo "Target release tag: $TAG"
- name: Recreate Git tag at HEAD if gh release view "$TAG" >/dev/null 2>&1; then
run: | echo "Release $TAG already exists; will upload assets with --clobber"
git tag latest else
git push origin latest gh release create "$TAG" \
--title "$TAG" \
- name: Create the new release --notes "Automated build for $TAG"
run: gh release create latest downloads/**/AimTrainer-*.zip --title "Latest Build" --notes "Most recent multi-platform builds of AimTrainer" fi
env: # Upload the executables directly (no zip files)
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} gh release upload "$TAG" downloads/linux/AimTrainer.bin --clobber
gh release upload "$TAG" downloads/windows/AimTrainer.exe --clobber