Add BirdNET-Geomodel 3.0 #141
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| jobs: | |
| run-tests: | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: false | |
| timeout-minutes: 360 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| ubuntu-24.04, | |
| ubuntu-24.04-arm, | |
| macos-15, | |
| macos-15-intel, | |
| windows-2025, | |
| ] | |
| python-version: ["3.11", "3.12", "3.13"] | |
| exclude: | |
| - os: macos-15-intel | |
| python-version: "3.13" # no TF support | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 2 | |
| - name: Install audio system libs (Linux) | |
| if: startsWith(matrix.os, 'ubuntu') | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libsndfile1 | |
| - name: Install audio system libs (macOS) | |
| if: startsWith(matrix.os, 'macos') | |
| run: | | |
| brew update | |
| brew install libsndfile | |
| - name: Install audio system libs (Windows) | |
| if: startsWith(matrix.os, 'windows') | |
| run: | | |
| choco install libsndfile | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install uv --upgrade | |
| python -m uv pip install --system .[tests] | |
| - name: Run tests py311 | |
| if: matrix.python-version == '3.11' | |
| run: | | |
| python -m tox -e py311 | |
| - name: Run tests py312 | |
| if: matrix.python-version == '3.12' | |
| run: | | |
| python -m tox -e py312 | |
| - name: Run tests py313 | |
| if: matrix.python-version == '3.13' | |
| run: | | |
| python -m tox -e py313 | |
| - name: Run repro tests | |
| if: matrix.python-version == '3.12' && matrix.os != 'macos-15-intel' | |
| run: | | |
| python -m tox -e py312-repro | |
| - name: Run coverage tests | |
| if: matrix.os == 'ubuntu-24.04' && matrix.python-version == '3.12' | |
| run: | | |
| python -m tox -e py312-coverage | |
| - name: Upload results to Codecov | |
| if: matrix.os == 'ubuntu-24.04' && matrix.python-version == '3.12' | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| slug: birdnet-team/birdnet | |
| - name: Extract log path | |
| id: extract-log-path | |
| shell: pwsh | |
| run: | | |
| $logPaths = @() | |
| if (Test-Path output.log) { | |
| $output = Get-Content output.log -Raw | |
| $pattern = '(?<path>(?:[A-Za-z]:\\|/)[^\r\n]*?\.log)' | |
| $logPaths = [regex]::Matches($output, $pattern) | | |
| ForEach-Object { $_.Groups['path'].Value } | | |
| Sort-Object -Unique | | |
| Where-Object { Test-Path $_ -PathType Leaf } | |
| } | |
| if ($logPaths.Count -gt 0) { | |
| "log_paths<<EOF" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8 | |
| $logPaths | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8 | |
| "EOF" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8 | |
| } | |
| else { | |
| "log_paths=" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8 | |
| } | |
| - name: Upload log file | |
| if: failure() && steps.extract-log-path.outputs.log_paths != '' | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: birdnet-log | |
| path: ${{ steps.extract-log-path.outputs.log_paths }} |