Skip to content

Server lifecycle events #1222

Server lifecycle events

Server lifecycle events #1222

Workflow file for this run

name: Test
on:
pull_request:
branches:
- main
push:
branches:
- main
schedule:
- cron: "0 0 * * 0"
env:
SC_ORIGIN: https://github.com/supercollider/supercollider.git
SC_BRANCH: Version-3.13.0
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
docs:
name: Build docs
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.11"]
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "**/pyproject.toml"
- name: Install APT deps
shell: bash
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update --yes
sudo apt-get install --yes \
espeak \
ffmpeg \
graphviz \
lame
- name: Install SuperCollider
uses: ./.github/actions/supercollider
with:
branch: ${{ env.SC_BRANCH }}
origin: ${{ env.SC_ORIGIN }}
- name: Install Supriya
run: pip install -e .[docs]
- name: Build docs
run: make docs
- name: Check for FailWarning
run: "! grep -R ': FailWarning: ' *"
working-directory: docs/build/html
lint:
name: Lint Supriya
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.12"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "**/pyproject.toml"
- name: Install Supriya
run: pip install -e .[ipython,test]
- name: Run Black
run: make black-check
- name: Run docstrfmt
run: |
make docstrfmt || true
make docstrfmt || true
git status
git diff
- name: Run Flake8
run: make flake8
- name: Run Mypy
run: make mypy
package:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/[email protected]
test:
name: Test Supriya
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
include:
# - os: macos-latest
# python-version: "3.12"
- os: windows-latest
python-version: "3.12"
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "**/pyproject.toml"
- name: Upgrade pip
run: python3 -m pip install -U pip
- name: Install Supriya
run: pip install -e .
- name: Install SuperCollider (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
uses: ./.github/actions/supercollider
with:
branch: ${{ env.SC_BRANCH }}
origin: ${{ env.SC_ORIGIN }}
- name: Install SuperCollider (Windows)
if: ${{ matrix.os == 'windows-latest' }}
run: |
choco install supercollider
mkdir C:\Users\runneradmin\AppData\Local\SuperCollider\synthdefs
- name: Setup audio (Windows) # https://github.com/actions/runner-images/issues/2528#issuecomment-934857719
# No powershell!
if: ${{ matrix.os == 'windows-latest' }}
run: net start audiosrv
- name: Setup audio (Windows) # https://github.com/actions/runner-images/issues/2528#issuecomment-934857719
# No powershell!
if: ${{ matrix.os == 'windows-latest' }}
run: |
Set-Service -Name vmictimesync -Status stopped -StartupType disabled
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\W32Time\Parameters -Name 'Type' -Value 'NoSync'
net stop w32time; Set-Date (Get-Date "2023-07-04 12:00:00")
- name: Setup audio (Windows) # https://github.com/actions/runner-images/issues/2528#issuecomment-934857719
env:
VERSION: '4.0'
if: ${{ matrix.os == 'windows-latest' }}
# TODO: Remove the time workaround when virtual audio device certificate is valid again, refs:
# https://github.com/duncanthrax/scream/issues/202
run: |
Invoke-WebRequest https://github.com/duncanthrax/scream/releases/download/${{ env.VERSION }}/Scream${{ env.VERSION }}.zip -OutFile Scream${{ env.VERSION }}.zip
Expand-Archive -Path Scream${{ env.VERSION }}.zip -DestinationPath Scream
Import-Certificate -FilePath Scream\Install\driver\x64\scream.cat -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
Scream\Install\helpers\devcon-x64.exe install Scream\Install\driver\x64\Scream.inf *Scream
shell: powershell
timeout-minutes: 1
- name: Setup audio (Windows) # https://github.com/actions/runner-images/issues/2528#issuecomment-934857719
# No powershell!
if: ${{ matrix.os == 'windows-latest' }}
run: |
Set-Service -Name vmictimesync -Status running -StartupType automatic
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\W32Time\Parameters -Name 'Type' -Value 'NTP'
net start w32time; w32tm /resync /force; $currentDate = Get-Date; Write-Host "Current System Date: $currentDate";
- name: Sanity-check Supriya
run: |
python -c "import logging, supriya; logging.getLogger('supriya').setLevel(logging.INFO); logging.basicConfig(); server = supriya.Server().boot(); exit()"
python -c "from supriya.utils._intervals import IntervalTreeDriverEx; print(IntervalTreeDriverEx)"
- name: Sanity-check Supriya SHM (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
run: python -c "from supriya.contexts.shm import ServerSHM; print(ServerSHM)"
- name: Check for stray processes (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
run: |
! ( ps aux | grep scsynth | grep -v grep )
! ( ps aux | grep supernova | grep -v grep )
- name: Install Supriya test dependencies
run: pip install -e .[test]
- name: Install ffmpeg
uses: FedericoCarboni/setup-ffmpeg@v3
- name: Install additional packages
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update --yes
sudo apt-get install --yes espeak graphviz lame
elif [ "$RUNNER_OS" == "macOS" ]; then
brew update
brew install [email protected] || true
brew install graphviz
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install graphviz lame
fi
- name: Run Pytest
run: pytest --cov supriya --showlocals
timeout-minutes: 15
- name: Check for stray processes (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
run: |
! ( ps aux | grep scsynth | grep -v grep )
! ( ps aux | grep supernova | grep -v grep )