FreeDATA/.github/workflows/build-project-linux.yml
dj2ls 35bb004c9e v0.0.1-alpha
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..
2022-02-22 11:06:22 +01:00

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