Files
wbokslag 9e057e7b15 Framework for Telemetry and Control APIs (#68)
Version 0.5.8:
* Added Telemetry and Control frameworks, running as separate threads in the stack.
  Telemetry can send event data to an external telemetry service, while Control allows the BS to receive Control commands from an external Control service.
* Currently, Telemetry events for MS (de)registration and group attach/detach are implemented. Control supports remote command for SDS sending. Try `sendsds 1 <your_ms_ssi> false 82042d014869`
* Provide sample systemd service file (#66) in /contrib/systemd

Further changes:
* Refactored brew jitter buffer into separate file
* Refactored websockets into a separate transport
* Removed obsolete tnmm example networked entity code
* Moved brew entity to net_brew entity to designate it's a networked component
* Renamed tetra-bluestation binary to bluestation-bs
* Added support for secret fields in config, that will not be printed through Display or Debug
2026-03-29 21:45:07 +02:00

114 lines
3.8 KiB
YAML

name: Build release binaries
on:
push:
branches:
- main
- feature/cross_compile
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
bin_path: target/x86_64-unknown-linux-gnu/release/bluestation-bs
build_cmd: cargo build --release --target x86_64-unknown-linux-gnu -p bluestation-bs --bin bluestation-bs
artifact_name: bluestation-bs-x86_64
- target: aarch64-unknown-linux-gnu
bin_path: target/aarch64-unknown-linux-gnu/release/bluestation-bs
build_cmd: cross build --release --target aarch64-unknown-linux-gnu -p bluestation-bs --bin bluestation-bs
artifact_name: bluestation-bs-aarch64-generic
- target: aarch64-unknown-linux-gnu
bin_path: target/aarch64-unknown-linux-gnu/release/bluestation-bs
build_cmd: cross build --release --target aarch64-unknown-linux-gnu -p bluestation-bs --bin bluestation-bs
artifact_name: bluestation-bs-rpi4
cpu_rustflags: "-C target-cpu=cortex-a72"
- target: aarch64-unknown-linux-gnu
bin_path: target/aarch64-unknown-linux-gnu/release/bluestation-bs
build_cmd: cross build --release --target aarch64-unknown-linux-gnu -p bluestation-bs --bin bluestation-bs
artifact_name: bluestation-bs-rpi5
cpu_rustflags: "-C target-cpu=cortex-a76"
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: ${{ matrix.target }}
- name: Install cross
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: cargo install cross --locked
- name: Apply CPU-specific RUSTFLAGS
if: matrix.cpu_rustflags != ''
run: echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS=${{ matrix.cpu_rustflags }}" >> "$GITHUB_ENV"
- name: Install native build dependencies (amd64)
if: matrix.target == 'x86_64-unknown-linux-gnu'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
git make g++ cmake pkg-config \
libsoapysdr-dev \
soapysdr-tools \
libasound2-dev \
clang llvm-dev libclang-dev
echo "PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig" >> "$GITHUB_ENV"
pkg-config --modversion SoapySDR
- name: Build
run: ${{ matrix.build_cmd }}
- name: Rename binary
run: cp ${{ matrix.bin_path }} ${{ matrix.artifact_name }}
- name: Upload binary
uses: actions/upload-artifact@v4.6.0
with:
name: ${{ matrix.artifact_name }}
path: ${{ matrix.artifact_name }}
release:
name: Publish latest release
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Read version from Cargo.toml
id: version
run: |
VERSION=$(grep '^version' Cargo.toml | head -1 | cut -d'"' -f2)
SHORT_SHA=$(git rev-parse --short HEAD)
echo "tag=v$VERSION-$SHORT_SHA" >> "$GITHUB_OUTPUT"
echo "name=v$VERSION-$SHORT_SHA" >> "$GITHUB_OUTPUT"
- name: Download all binaries
uses: actions/download-artifact@v4.2.1
with:
path: artifacts
merge-multiple: true
- name: Publish release
uses: softprops/action-gh-release@v2.3.2
with:
tag_name: ${{ steps.version.outputs.tag }}
name: ${{ steps.version.outputs.name }}
files: artifacts/*