Skip to content

feat(subsonic): capability-driven sidebar refresh (Phase 19 step 16) #171

feat(subsonic): capability-driven sidebar refresh (Phase 19 step 16)

feat(subsonic): capability-driven sidebar refresh (Phase 19 step 16) #171

Workflow file for this run

name: CI
on:
push:
branches: [main]
paths-ignore:
- "**.md"
- "docs/**"
- "website/**"
- ".github/ISSUE_TEMPLATE/**"
- ".github/PULL_REQUEST_TEMPLATE/**"
pull_request:
branches: [main]
paths-ignore:
- "**.md"
- "docs/**"
- "website/**"
- ".github/ISSUE_TEMPLATE/**"
- ".github/PULL_REQUEST_TEMPLATE/**"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-test:
name: Build & Test
runs-on: macos-26
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Select Xcode 26
run: sudo xcode-select -s /Applications/Xcode_26.5.app
- name: Cache SPM packages
uses: actions/cache@v5
with:
path: |
~/Library/Developer/Xcode/DerivedData/**/SourcePackages
~/.swiftpm
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
restore-keys: |
${{ runner.os }}-spm-
- name: Install Brewfile dependencies
run: brew bundle
- name: Set pkg-config path for FFmpeg and TagLib
run: |
echo "PKG_CONFIG_PATH=/opt/homebrew/opt/ffmpeg/lib/pkgconfig:/opt/homebrew/opt/taglib/lib/pkgconfig" >> $GITHUB_ENV
- name: Stub Secrets.xcconfig (xcodegen requires it)
env:
ACOUSTID_API_KEY: ${{ secrets.ACOUSTID_API_KEY }}
BOCAN_LASTFM_API_KEY: ${{ secrets.BOCAN_LASTFM_API_KEY }}
BOCAN_LASTFM_SHARED_SECRET: ${{ secrets.BOCAN_LASTFM_SHARED_SECRET }}
run: |
if [[ ! -f Secrets.xcconfig ]]; then
cp Secrets.xcconfig.template Secrets.xcconfig
fi
# Inject CI-provided values when present (otherwise template defaults stay).
if [[ -n "${ACOUSTID_API_KEY:-}" ]]; then
/usr/bin/sed -i '' "s|^ACOUSTID_API_KEY.*|ACOUSTID_API_KEY = ${ACOUSTID_API_KEY}|" Secrets.xcconfig
fi
if [[ -n "${BOCAN_LASTFM_API_KEY:-}" ]]; then
/usr/bin/sed -i '' "s|^BOCAN_LASTFM_API_KEY.*|BOCAN_LASTFM_API_KEY = ${BOCAN_LASTFM_API_KEY}|" Secrets.xcconfig
fi
if [[ -n "${BOCAN_LASTFM_SHARED_SECRET:-}" ]]; then
/usr/bin/sed -i '' "s|^BOCAN_LASTFM_SHARED_SECRET.*|BOCAN_LASTFM_SHARED_SECRET = ${BOCAN_LASTFM_SHARED_SECRET}|" Secrets.xcconfig
fi
- name: Doctor (print tool versions)
run: make doctor
- name: Bundle fpcalc + FFmpeg dylibs into Resources/
run: make bundle-fpcalc
- name: Generate Xcode project
run: make generate
- name: Lint (SwiftLint + SwiftFormat)
run: make lint && make format-check
- name: Build & Test with coverage
run: make test-coverage 2>&1 | xcbeautify
- name: Test AudioEngine package
run: make test-audio-engine
- name: Test Persistence package
run: make test-persistence
- name: Test Metadata package
run: make test-metadata
- name: Test Library package
run: make test-library
- name: Test UI package
run: make test-ui
- name: Upload test results
uses: actions/upload-artifact@v7
if: always()
with:
name: TestResults-${{ github.run_id }}
path: build/TestResults.xcresult
retention-days: 7