Skip to content

Merge branch 'main' of github.com:snstac/AIS-catcher #13

Merge branch 'main' of github.com:snstac/AIS-catcher

Merge branch 'main' of github.com:snstac/AIS-catcher #13

Workflow file for this run

name: Build (Docker/Windows)
on:
push:
branches:
- 'main'
tags:
- '*'
pull_request:
workflow_dispatch:
jobs:
bakeHTML:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: main
- name: Install required tools
run: |
sudo apt-get update
sudo apt-get install gzip xxd minify -y
- name: Fetch git tags and run bake script
run: |
git fetch --prune --unshallow
TAG=$(git describe --tags)
./scripts/build-html.sh $TAG
- name: Update version in build.me
run: |
TAG=$(git describe --tags)
DEBIAN_TAG=$(echo $TAG | sed 's/^v//; s/-/~/')
sed -i "s/^package_version=.*/package_version=$DEBIAN_TAG/" scripts/build.sh
- name: Commit and push changes
run: |
if [[ -z $(git diff) ]]; then
echo "Nothing to commit, working tree clean"
exit 0
else
echo "There are changes to be committed"
fi
git add HTML/index_html.cpp
git add HTML/index_local.html
git add HTML/index_local_html.cpp
git add HTML/script_js.cpp
git add HTML/style_css.cpp
git add scripts/build.sh
git add Application/AIS-catcher.h
git config --local user.email "[email protected]"
git config --local user.name "Github Action"
git commit -m "Stamp version and bake index.html in HTML.cpp"
git push origin main
build_debian:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
needs: bakeHTML
runs-on: ubuntu-latest
strategy:
matrix:
codename: ['bookworm', 'bullseye', 'buster']
arch: ['amd64', 'armhf', 'arm64']
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
- name: Set filename
run: |
echo "filename=ais-catcher_debian_${{ matrix.codename }}_${{ matrix.arch }}.deb" >> $GITHUB_ENV
- name: Build Debian package
run: |
cp build-docker/bookworm/Dockerfile .
sed -i 's/FROM debian:bookworm/FROM debian:${{ matrix.codename }}/g' Dockerfile
sed -i 's/amd64/${{ matrix.arch }}/g' Dockerfile
sudo apt-get install qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker build --platform ${{ matrix.arch}} -t ais-catcher-builder-debian-${{ matrix.codename }}-${{ matrix.arch }} .
docker run --rm -v "$(pwd)/output:/output" ais-catcher-builder-debian-${{ matrix.codename }}-${{ matrix.arch }}
cp output/ais-catcher.deb ${{ env.filename }}
gh release upload 'Edge' ${{ env.filename }} --repo jvde-github/AIS-catcher --clobber
- name: Upload Debian package as artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.filename }}
path: ${{ env.filename }}
build_ubuntu:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
needs: bakeHTML
runs-on: ubuntu-latest
strategy:
matrix:
codename: ['focal', 'jammy', 'mantic', 'noble']
arch: ['amd64', 'arm64']
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
- name: Set filename
run: |
echo "filename=ais-catcher_ubuntu_${{ matrix.codename }}_${{ matrix.arch }}.deb" >> $GITHUB_ENV
- name: Build Ubuntu package
run: |
cp build-docker/bookworm/Dockerfile .
sed -i 's/FROM debian:bookworm/FROM ubuntu:${{ matrix.codename }}/g' Dockerfile
sed -i 's/amd64/${{ matrix.arch }}/g' Dockerfile
docker build -t ais-catcher-builder-ubuntu-${{ matrix.codename }}-${{ matrix.arch }} .
docker run --rm -v "$(pwd)/output:/output" ais-catcher-builder-ubuntu-${{ matrix.codename }}-${{ matrix.arch }}
cp output/ais-catcher.deb ${{ env.filename }}
gh release upload 'Edge' ${{ env.filename }} --repo jvde-github/AIS-catcher --clobber
- name: Upload Ubuntu package as artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.filename }}
path: ${{ env.filename }}
Docker:
runs-on: ubuntu-latest
needs: bakeHTML
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
- name: Calculate Container Metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=edge,branch=main
type=ref,event=tag
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push Images
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64, linux/386, linux/arm64, linux/arm/v6, linux/arm/v7
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
Windows:
runs-on: windows-2022
needs: bakeHTML
strategy:
matrix:
platform: [x86, x64]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: ${{matrix.platform}}
- name: Restore vcpkg packages
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
vcpkg integrate install
- name: Install vcpkg packages
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
vcpkg install libpq:${{matrix.platform}}-windows fftw3:${{matrix.platform}}-windows openssl:${{matrix.platform}}-windows libusb:${{matrix.platform}}-windows pthread:${{matrix.platform}}-windows zlib:${{matrix.platform}}-windows soxr:${{matrix.platform}}-windows zeromq:${{matrix.platform}}-windows
- name: Setting up directories
run: |
mkdir output; cd output; mkdir plugins; mkdir Licenses; cd ..; mkdir include; cd include; mkdir curl; mkdir openssl; cd ..; mkdir release; mkdir lib;
cp C:\vcpkg\installed\${{matrix.platform}}-windows\include\*.h include
cp C:\vcpkg\installed\${{matrix.platform}}-windows\include\openssl\*.h include\openssl
cp C:\vcpkg\installed\${{matrix.platform}}-windows\lib\*.lib lib
cp C:\vcpkg\installed\${{matrix.platform}}-windows\bin\*.dll release
- name: Create start.bat
run: |
cd output
echo "AIS-catcher -v 10 -X -u 127.0.0.1 10110 -N 8100 PLUGIN_DIR plugins`nPAUSE" |Out-File -FilePath start.bat -Encoding ascii
cd ..
- name: Building Libraries and AIS-catcher
run: |
echo "x64" > x64-a; echo "Win32" > x86-a; $msplatform = $(cat "${{matrix.platform}}-a")
$gen = "Visual Studio 17 2022"
$config = "Release"
$libusb_inc = "C:\vcpkg\installed\${{matrix.platform}}-windows\include\libusb-1.0"
$libusb_lib = "C:\vcpkg\installed\${{matrix.platform}}-windows\lib\libusb-1.0.lib"
$pthread_lib = "C:\vcpkg\installed\${{matrix.platform}}-windows\lib\pthreadVC3.lib"
$pthread_inc = "C:\vcpkg\installed\${{matrix.platform}}-windows\include"
$fftw3_lib = "C:\vcpkg\installed\${{matrix.platform}}-windows\lib\fftw3.lib"
$fftw3_inc = "C:\vcpkg\installed\${{matrix.platform}}-windows\include"
echo "RTLSDR"
git clone https://github.com/jvde-github/rtl-sdr.git
cd rtl-sdr; mkdir build; cd build
cmake .. -A $msplatform -G $gen -DLIBUSB_FOUND=1 -DLIBUSB_INCLUDE_DIRS="$libusb_inc"
msbuild /verbosity:quiet /m /p:Configuration=$config /p:Platform=$msplatform rtlsdr.sln
cd ..; cd ..
cp rtl-sdr\build\src\Release\*.dll release
cp rtl-sdr\build\src\Release\*.lib lib
cp rtl-sdr\include\*.h include
cp rtl-sdr\COPYING output\Licenses\RTLSDR
echo "AIRSPY HF+"
git clone https://github.com/airspy/airspyhf.git
git reset --hard b93deddfd05f8350b0adf75d671072e7fa7bec35
cd airspyhf; mkdir build; cd build
cmake .. -A $msplatform -G $gen -DLIBUSB_LIBRARIES="$libusb_lib" -DLIBUSB_INCLUDE_DIR="$libusb_inc" -DTHREADS_PTHREADS_WIN32_LIBRARY="$pthread_lib" -DTHREADS_PTHREADS_INCLUDE_DIR="$pthread_inc"
msbuild /verbosity:quiet /m /p:Configuration=$config /p:Platform=$msplatform airspyhf_all.sln
cd ..; cd ..
cp airspyhf\build\libairspyhf\src\Release\*.dll release
cp airspyhf\build\libairspyhf\src\Release\*.lib lib
cp airspyhf\libairspyhf\src\airspyhf.h include
cp airspyhf\LICENSE output\Licenses\AIRSPYHF
echo "AIRSPY"
git clone https://github.com/airspy/airspyone_host.git
git reset --hard b97309a6a24db161de990d6e4f0432fc94f72cd9
cd airspyone_host; mkdir build; cd build
cmake .. -A $msplatform -G $gen -DLIBUSB_LIBRARIES="$libusb_lib" -DLIBUSB_INCLUDE_DIR="$libusb_inc" -DTHREADS_PTHREADS_WIN32_LIBRARY="$pthread_lib" -DTHREADS_PTHREADS_INCLUDE_DIR="$pthread_inc"
msbuild /verbosity:quiet /m /p:Configuration=$config /p:Platform=$msplatform airspy_all.sln
cd ..; cd ..
cp airspyone_host\build\airspy-tools\src\*.dll release
cp airspyone_host\build\libairspy\src\Release\*.lib lib
cp airspyone_host\libairspy\src\*.h include
cp airspyone_host\airspy-tools\LICENSE.md output\Licenses\AIRSPY
echo "HACK RF"
git clone https://github.com/greatscottgadgets/hackrf.git
git reset --hard 34cbbe7330d1e11e7967f84da39d04a61bfdf4f1
cd hackrf; cd host; mkdir build; cd build
cmake .. -A $msplatform -G $gen -DLIBUSB_LIBRARIES="$libusb_lib" -DLIBUSB_INCLUDE_DIR="$libusb_inc" -DTHREADS_PTHREADS_WIN32_LIBRARY="$pthread_lib" -DTHREADS_PTHREADS_INCLUDE_DIR="$pthread_inc" -DFFTW_LIBRARIES="$fftw3_lib" -DFFTW_INCLUDES="$fftw3_inc"
msbuild /verbosity:quiet /m /p:Configuration=$config /p:Platform=$msplatform HackRF.sln
cd ..; cd ..; cd ..
cp hackrf\host\build\libhackrf\src\Release\*.dll release
cp hackrf\host\build\libhackrf\src\Release\*.lib lib
cp hackrf\host\libhackrf\src\*.h include
cp hackrf\COPYING output\Licenses\HACKRF
echo "AIS-catcher"
mkdir build; cd build
cmake .. -A $msplatform -G $gen -DPOTHOSSDR_INCLUDE_DIR=${{github.workspace}}\include -DPOTHOSSDR_LIBRARY_DIR=${{github.workspace}}\lib -DPOTHOSSDR_BINARY_DIR=${{github.workspace}}\release
msbuild /verbosity:quiet /m /p:Configuration=$config /p:Platform=$msplatform AIS-catcher.sln
cd ..
cp LICENSE output\Licenses\AIS-catcher
- name: Prepare output
run: cp build\*.dll output; cp build\Release\*.exe output; cp plugins\* output\plugins; cp README.md output;
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: "AIS-catcher ${{matrix.platform}}"
path: |
output
- name: Compress, upload, and delete ZIP file
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
Compress-Archive -Path output/* -DestinationPath "output/AIS-catcher ${{matrix.platform}}.zip"
bash -c "gh release upload 'Edge' './output/AIS-catcher ${{matrix.platform}}.zip' --repo jvde-github/AIS-catcher --clobber"
del "output\AIS-catcher ${{matrix.platform}}.zip"
- name: Download SDRPlay API
run: |
cd "C:/Program Files/"
Invoke-WebRequest -Uri " https://www.sdrplay.com/software/SDRplay_RSP_API-Windows-3.09.exe" -OutFile sdrplay.exe
choco install innoextract
innoextract sdrplay.exe
ren app SDRplay
- name: Building with SDRPlay support
run: |
cp "C:\Program Files\SDRplay\API\docs\SDRplay_RSP_API_Release_Notes_V3.09.pdf" output\Licenses\SDRPLAY.pdf
echo "x64" > x64-a; echo "Win32" > x86-a; $msplatform = $(cat "${{matrix.platform}}-a")
$gen = "Visual Studio 17 2022"
$config = "Release"
echo "AIS-catcher"
Remove-Item build -Recurse
mkdir build; cd build
cmake .. -A $msplatform -G $gen -DPOTHOSSDR_INCLUDE_DIR=${{github.workspace}}\include -DPOTHOSSDR_LIBRARY_DIR=${{github.workspace}}\lib -DPOTHOSSDR_BINARY_DIR=${{github.workspace}}\release
msbuild /verbosity:quiet /m /p:Configuration=$config /p:Platform=$msplatform AIS-catcher.sln
cd ..
cp LICENSE output\Licenses\AIS-catcher
- name: Prepare output SDRPLAY
run: cp build\*.dll output; cp build\Release\*.exe output; cp plugins\* output\plugins; cp README.md output;
- name: Upload Artifacts SDRPLAY
uses: actions/upload-artifact@v4
with:
name: "AIS-catcher SDRPLAY ${{matrix.platform}}"
path: |
output
- name: Compress, upload, and delete ZIP file
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
Compress-Archive -Path output/* -DestinationPath "output/AIS-catcher SDRPLAY ${{matrix.platform}}.zip"
bash -c "gh release upload 'Edge' './output/AIS-catcher SDRPLAY ${{matrix.platform}}.zip' --repo jvde-github/AIS-catcher --clobber"
del "output\AIS-catcher SDRPLAY ${{matrix.platform}}.zip"