Skip to content

Merge pull request #29 from mgxv/fix/stream-observer-registration-race #196

Merge pull request #29 from mgxv/fix/stream-observer-registration-race

Merge pull request #29 from mgxv/fix/stream-observer-registration-race #196

Workflow file for this run

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