name: build_server on: [push] jobs: build_i686_x64_release: name: Build FreeDATA packages runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-20.04, macos-latest, windows-latest] include: - os: ubuntu-20.04 zip_name: ubuntu_modem generator: Unix Makefiles modem_binary_name: freedata-server - os: macos-latest zip_name: macos_modem generator: Unix Makefiles modem_binary_name: freedata-server - os: windows-latest zip_name: windows_modem generator: Visual Studio 16 2019 modem_binary_name: freedata-server.exe steps: - name: Checkout code for ${{ matrix.platform.name }} uses: actions/checkout@v4 with: repository: DJ2LS/FreeDATA - name: Set up Python 3.11 uses: actions/setup-python@v4 with: python-version: "3.11" - name: Create modem/dist working-directory: modem run: | mkdir -p dist - name: Create modem/dist/modem working-directory: modem run: | mkdir -p dist/modem - name: Install Linux dependencies # if: matrix.os == 'ubuntu-20.04' if: ${{startsWith(matrix.os, 'ubuntu')}} run: | sudo apt install -y portaudio19-dev libhamlib-dev libhamlib-utils build-essential cmake python3-libhamlib2 patchelf - name: Install MacOS pyAudio if: ${{startsWith(matrix.os, 'macos')}} run: | brew install portaudio python -m pip install --upgrade pip pip3 install pyaudio - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Add MacOS certs if: ${{startsWith(matrix.os, 'macos')}} run: chmod +x add-osx-cert.sh && ./add-osx-cert.sh env: CERTIFICATE_OSX_APPLICATION: ${{ secrets.CERTIFICATE_OSX_APPLICATION }} CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }} - name: Build binaries working-directory: modem run: | python3 -m nuitka --enable-plugin=numpy --remove-output --assume-yes-for-downloads --standalone server.py - name: Download Portaudio binaries Linux macOS if: ${{!startsWith(matrix.os, 'windows')}} working-directory: modem run: | if ! test -d "server.dist/modem/_sounddevice_data"; then git clone https://github.com/spatialaudio/portaudio-binaries dist/modem/_sounddevice_data/portaudio-binaries fi - name: Download Portaudio binaries Windows if: ${{startsWith(matrix.os, 'windows')}} working-directory: modem run: | if(Test-Path -Path "server.dist/modem/_sounddevice_data"){ echo "sounddevice folder already exists" } else { git clone https://github.com/spatialaudio/portaudio-binaries dist/modem/_sounddevice_data/portaudio-binaries } - name: LIST ALL FILES run: ls -R - name: cleanup on macos before code signing if: ${{startsWith(matrix.os, 'macos')}} run: | ls -l # find . -type d -name .git -exec rm -r {} \; find . -type d -o -name ".git" -delete - name: Compress Modem uses: thedoctor0/zip-release@master with: type: 'zip' filename: '${{ matrix.zip_name }}.zip' directory: ./modem/server.dist path: . # exclusions: '*.git* /*node_modules/* .editorconfig' - name: Release Modem uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/v') with: draft: true files: ./modem/server.dist/${{ matrix.zip_name }}.zip - name: LIST ALL FILES run: ls -R