2023-12-31 12:23:48 +00:00
|
|
|
name: build_server
|
2023-12-31 12:22:54 +00:00
|
|
|
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
|