name: Build and Publish Release on: release: types: [published] jobs: build-linux: name: Build Linux runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install system dependencies (Tkinter) # В Ubuntu для работы Tkinter необходим системный пакет python3-tk run: sudo apt-get update && sudo apt-get install -y python3-tk - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install pyinstaller - name: Build Linux executable # Флаг --windowed убирает консоль, --onefile собирает все в один файл run: pyinstaller --onefile --windowed --name factorio-mod-sync-linux main.py - name: Upload Linux artifact uses: actions/upload-artifact@v3 with: name: linux-build path: dist/factorio-mod-sync-linux build-windows: name: Build Windows runs-on: ubuntu-latest # Используем контейнер с настроенным Wine и Python 3.11 под Windows container: image: tobix/pywine:3.11 steps: - name: Install Node.js and Git (required for Actions) run: apt-get update && apt-get install -y nodejs git - name: Checkout code uses: actions/checkout@v3 - name: Install Python dependencies (Windows) run: | wine python -m pip install --upgrade pip wine pip install -r requirements.txt wine pip install pyinstaller - name: Build Windows executable run: wine pyinstaller --onefile --windowed --name factorio-mod-sync-windows.exe main.py - name: Upload Windows artifact uses: actions/upload-artifact@v3 with: name: windows-build path: dist/factorio-mod-sync-windows.exe release-assets: name: Upload Assets to Release needs: [build-linux, build-windows] runs-on: ubuntu-latest steps: - name: Download all artifacts uses: actions/download-artifact@v3 - name: Add files to Forgejo Release uses: softprops/action-gh-release@v1 with: files: | linux-build/factorio-mod-sync-linux windows-build/factorio-mod-sync-windows.exe env: # В Forgejo GITHUB_TOKEN автоматически мапится на внутренний токен доступа GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}