Skip to content

BirdNET-Go Nightly Build #60

BirdNET-Go Nightly Build

BirdNET-Go Nightly Build #60

Workflow file for this run

name: BirdNET-Go Nightly Build
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
env:
ACTIONS_RUNNER_DEBUG: true
ACTIONS_STEP_DEBUG: true
permissions:
contents: write
packages: write
jobs:
nightly:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
goos: [linux, windows]
goarch: [amd64, arm64]
exclude:
- goarch: arm64
goos: windows
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.23'
check-latest: true
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential pkg-config gcc-aarch64-linux-gnu gcc-mingw-w64-x86-64
- name: Build BirdNET-Go
run: |
# Build the application
make ${{ matrix.goos }}_${{ matrix.goarch }}
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
CGO_ENABLED: 1
- name: Create Release Artifacts
run: |
# Create artifacts directory
mkdir -p artifacts
# Set binary name based on OS
BINARY_NAME=birdnet-go
if [ "${{ matrix.goos }}" = "windows" ]; then
BINARY_NAME=birdnet-go.exe
fi
# Copy binary
cp bin/$BINARY_NAME artifacts/
# Copy required library files based on OS and architecture
if [ "${{ matrix.goos }}" = "linux" ]; then
if [ "${{ matrix.goarch }}" = "amd64" ]; then
cp /usr/lib/libtensorflowlite_c.so artifacts/
elif [ "${{ matrix.goarch }}" = "arm64" ]; then
cp /usr/aarch64-linux-gnu/lib/libtensorflowlite_c.so artifacts/
fi
elif [ "${{ matrix.goos }}" = "windows" ]; then
cp /usr/x86_64-w64-mingw32/lib/tensorflowlite_c.dll artifacts/
fi
# Create tarball
cd artifacts
tar czf ../birdnet-go-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz *
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: birdnet-go-${{ matrix.goos }}-${{ matrix.goarch }}
path: birdnet-go-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz
# Optional: Create a GitHub release for tagged builds
- name: Create Release
if: github.event_name == 'workflow_dispatch'
run: |
DATE=$(date +'%Y%m%d')
echo "RELEASE_DATE=$DATE" >> $GITHUB_ENV
- name: Create GitHub Release
if: github.event_name == 'workflow_dispatch'
uses: softprops/action-gh-release@v1
with:
files: birdnet-go-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz
tag_name: nightly-${{ env.RELEASE_DATE }}
name: "Nightly Build ${{ env.RELEASE_DATE }}"
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Delete old releases
uses: dev-drprasad/[email protected]
with:
keep_latest: 14
delete_tags: true
delete_tag_pattern: ^nightly-
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}