Merge pull request #29 from mgxv/fix/stream-observer-registration-race #196
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: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| lint: | |
| name: SwiftFormat | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install SwiftFormat (if missing) | |
| run: command -v swiftformat >/dev/null || brew install swiftformat | |
| - name: Show versions | |
| run: swiftformat --version | |
| - name: Lint Sources/ + Tests/ | |
| run: swiftformat --lint Sources/ Tests/ | |
| actionlint: | |
| name: actionlint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Run actionlint | |
| run: | | |
| bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) | |
| ./actionlint -color | |
| shellcheck: | |
| name: ShellCheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Run ShellCheck on scripts/ | |
| uses: ludeeus/action-shellcheck@master | |
| with: | |
| scandir: ./scripts | |
| severity: warning | |
| links: | |
| name: Markdown link check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Run lychee on README.md | |
| uses: lycheeverse/lychee-action@v2 | |
| with: | |
| args: --no-progress --max-concurrency 4 README.md | |
| fail: true | |
| formula: | |
| name: Formula audit | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: brew style Formula/houdini.rb | |
| run: brew style Formula/houdini.rb | |
| - name: brew audit Formula/houdini.rb | |
| run: | | |
| brew tap-new --no-git local/ci | |
| cp Formula/houdini.rb "$(brew --repo local/ci)/Formula/houdini.rb" | |
| brew audit --strict --new local/ci/houdini | |
| build: | |
| name: Build | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Show toolchain | |
| run: | | |
| xcode-select -p | |
| swift --version | |
| - name: SwiftPM build | |
| run: swift build | |
| - name: scripts/build.sh | |
| run: ./scripts/build.sh | |
| - name: Adapter framework smoke test | |
| run: perl vendor/mediaremote-adapter/bin/mediaremote-adapter.pl "$PWD/MediaRemoteAdapter.framework" get --no-artwork > /dev/null | |
| - name: Smoke test | |
| run: | | |
| ./houdini help | |
| ./houdini version | |
| tests: | |
| name: Tests | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Show toolchain | |
| run: swift --version | |
| - name: swift test | |
| run: swift test -Xswiftc -swift-version -Xswiftc 6 -Xswiftc -strict-concurrency=complete -Xswiftc -warnings-as-errors | |
| periphery: | |
| name: Periphery | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Show toolchain | |
| run: swift --version | |
| - name: Install Periphery | |
| run: brew install peripheryapp/periphery/periphery | |
| - name: Periphery scan | |
| run: periphery scan | |
| sanitize: | |
| name: ${{ matrix.name }} | |
| runs-on: macos-15 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: Thread sanitizer | |
| args: -Xswiftc -sanitize=thread | |
| - name: Address sanitizer | |
| args: -Xswiftc -sanitize=address | |
| - name: Release (warnings-as-errors) | |
| args: -c release -Xswiftc -warnings-as-errors | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Show toolchain | |
| run: swift --version | |
| - name: swift build | |
| run: swift build ${{ matrix.args }} -Xswiftc -swift-version -Xswiftc 6 -Xswiftc -strict-concurrency=complete |