mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
35bb004c9e
a first test with github build scripts and a possible auto updater for the app bundle. This feature is really needed to ensure the user always has the latest version of the gui. Specially in the first phase of releasing the app, there are a lot of changes. This makes the overall usability hopefully easier! Everyone who's getting github notifictaions: this might cause a lot of emails now. Sorry for this..
160 lines
4.8 KiB
YAML
160 lines
4.8 KiB
YAML
name: Linux Nightly
|
|
on:
|
|
push:
|
|
#tags:
|
|
#- '*'
|
|
|
|
jobs:
|
|
build_linux_release:
|
|
name: Build Linux release
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-20.04]
|
|
include:
|
|
- os: ubuntu-20.04
|
|
zip_name: ubuntu_tnc
|
|
generator: Unix Makefiles
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
with:
|
|
ref: ls-leave-prototype
|
|
|
|
- name: Set up Python 3.9
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.9
|
|
|
|
|
|
|
|
- name: Install Linux dependencies
|
|
if: matrix.os == 'ubuntu-20.04'
|
|
run: |
|
|
sudo apt install portaudio19-dev libhamlib-dev libhamlib-utils build-essential cmake python3-libhamlib2
|
|
python -m pip install --upgrade pip
|
|
pip3 install pyaudio
|
|
pip3 install psutil
|
|
pip3 install crcengine
|
|
pip3 install pyinstaller
|
|
pip3 install ujson
|
|
pip3 install pyserial
|
|
pip3 install numpy
|
|
pip3 install structlog
|
|
|
|
|
|
#- name: Build Hamlib Python Binding
|
|
# if: matrix.os == 'ubuntu-latest'
|
|
# working-directory: tnc
|
|
# run: |
|
|
# sudo apt install wig libtool
|
|
# cd ~
|
|
# git clone https://github.com/Hamlib/Hamlib.git
|
|
# cd Hamlib
|
|
# ./bootstrap
|
|
# ./configure --with-python-binding PYTHON_VERSION='3.9' --prefix=$HOME/local
|
|
# make
|
|
# make install
|
|
|
|
|
|
|
|
|
|
- name: Build codec2 Linux
|
|
if: matrix.os == 'ubuntu-20.04'
|
|
working-directory: tnc
|
|
run: |
|
|
git clone https://github.com/drowe67/codec2.git
|
|
cd codec2 && mkdir build_linux && cd build_linux
|
|
cmake ../
|
|
make
|
|
|
|
|
|
- name: Build Linux Daemon
|
|
if: matrix.os == 'ubuntu-20.04'
|
|
working-directory: tnc
|
|
run: |
|
|
pyinstaller freedata.spec
|
|
|
|
- name: LIST ALL FILES
|
|
shell: bash
|
|
run: |
|
|
ls -R
|
|
|
|
|
|
- name: Compress Linux
|
|
shell: bash
|
|
run: |
|
|
cd ./tnc/dist
|
|
mkdir compressed
|
|
zip -r ./compressed/${{ matrix.zip_name }}.zip *
|
|
|
|
- name: Upload Ubuntu TNC artifacts
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: tnc-artifact
|
|
path: ./tnc/dist/compressed/*
|
|
|
|
- name: Copy TNC to GUI Linux
|
|
if: matrix.os == 'ubuntu-20.04'
|
|
run: |
|
|
cp -R ./tnc/dist/tnc ./gui/tnc
|
|
ls -R
|
|
|
|
- name: Install Node.js, NPM and Yarn
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: 16
|
|
|
|
|
|
- name: Build/release Electron app
|
|
uses: samuelmeuli/action-electron-builder@v1
|
|
with:
|
|
package_root: "./gui/"
|
|
github_token: ${{ secrets.github_token }}
|
|
# If the commit is tagged with a version (e.g. "v1.0.0"),
|
|
# release the app after building
|
|
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
|
|
|
- name: LIST ALL FILES
|
|
shell: bash
|
|
run: |
|
|
ls -R
|
|
|
|
- name: chmod +x
|
|
shell: bash
|
|
run: |
|
|
chmod +x ./gui/dist/*.AppImage
|
|
|
|
|
|
- name: Create app bundle
|
|
shell: bash
|
|
run: |
|
|
mkdir gui-bundle
|
|
cp ./gui/dist/*.AppImage gui-bundle
|
|
cp -R ./tnc/dist/tnc gui-bundle
|
|
chmod +x ./gui-bundle/tnc/tnc
|
|
chmod +x ./gui-bundle/tnc/daemon
|
|
cd ./gui-bundle
|
|
zip -r FreeDATA_linux.zip .
|
|
ls -R
|
|
|
|
- name: Upload Ubuntu GUI Bundle artifacts
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: gui-bundle-ubuntu-artifact
|
|
path: ./gui-bundle/FreeDATA_linux.zip
|
|
|
|
- name: Release
|
|
uses: WebFreak001/deploy-nightly@v1.1.0
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: https://uploads.github.com/repos/DJ2LS/FreeDATA/releases/48616289/assets{?name,label} # find out this value by opening https://api.github.com/repos/<owner>/<repo>/releases in your browser and copy the full "upload_url" value including the {?name,label} part
|
|
release_id: 48616289 # same as above (id can just be taken out the upload_url, it's used to find old releases)
|
|
asset_path: ./gui-bundle/FreeDATA_linux.zip # path to archive to upload
|
|
asset_name: FreeDATA_linux-nightly-$$.zip # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
|
|
asset_content_type: application/zip # required by GitHub API
|
|
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
|
|
|
|