Skip to content

fix job

fix job #211

Workflow file for this run

name: Java Audio Setup Check
on:
push:
branches:
- main
workflow_dispatch:
jobs:
check-audio:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17.0.6'
distribution: 'temurin'
- name: Install PulseAudio on Ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y pulseaudio alsa-utils xvfb
pulseaudio --check || pulseaudio --start
pactl load-module module-null-sink sink_name=vspeaker sink_properties=device.description=virtual_speaker
pactl load-module module-remap-source master=vspeaker.monitor source_name=vmic source_properties=device.description=virtual_mic
Xvfb :99 -screen 0 1024x768x24 &
sleep 5
export DISPLAY=:99
# Verify PulseAudio setup
pulseaudio --check
pactl list modules
aplay -l
- name: Create and run Java audio test on Ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
echo 'import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;
public class AudioTest {
public static void main(String[] args) {
try {
File audioFile = new File("src/test/resources/test.wav");
if (!audioFile.exists()) {
System.out.println("Audio file not found.");
return;
}
AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
Clip clip = AudioSystem.getClip();
clip.open(audioStream);
System.out.println("Audio system initialized and clip loaded successfully.");
} catch (LineUnavailableException | UnsupportedAudioFileException | IOException e) {
e.printStackTrace();
}
}
}' > AudioTest.java
javac AudioTest.java
java AudioTest
- name: Build with Gradle and run audio setup test on Ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
./gradlew clean test --tests "com.github.natche.cyderutils.audio.AudioSetupTest" --info --stacktrace --no-daemon
env:
DISPLAY: ":99"
- name: Install BlackHole on macOS
if: matrix.os == 'macos-latest'
run: |
brew install --cask blackhole-2ch
sudo launchctl kickstart -kp system/com.apple.audio.coreaudiod
ls /Library/Audio/Plug-Ins/HAL/
- name: Install Scream on Windows
if: matrix.os == 'windows-latest'
shell: powershell
run: |
Invoke-WebRequest https://github.com/duncanthrax/scream/releases/download/4.0/Scream4.0.zip -OutFile Scream4.0.zip
Expand-Archive -Path Scream4.0.zip -DestinationPath Scream
openssl req -batch -verbose -x509 -newkey rsa -keyout ScreamCertificate.pvk -out ScreamCertificate.cer -nodes -extensions v3_req
openssl pkcs12 -export -nodes -in ScreamCertificate.cer -inkey ScreamCertificate.pvk -out ScreamCertificate.pfx -passout pass:
- name: Setup MSVC Dev Cmd
if: matrix.os == 'windows-latest'
uses: ilammy/msvc-dev-cmd@v1
- name: Sign and Install Scream Driver on Windows
if: matrix.os == 'windows-latest'
shell: powershell
run: |
$env:PATH += ';C:\Program Files (x86)\Windows Kits\10\bin\x64'
signtool sign /v /fd SHA256 /f ScreamCertificate.pfx Scream\Install\driver\x64\Scream.cat
Import-Certificate -FilePath ScreamCertificate.cer -CertStoreLocation Cert:\LocalMachine\root
Import-Certificate -FilePath ScreamCertificate.cer -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
Scream\Install\helpers\devcon-x64.exe install Scream\Install\driver\x64\Scream.inf *Scream
timeout-minutes: 5
- name: Start Windows Audio Service
if: matrix.os == 'windows-latest'
run: net start audiosrv
shell: powershell
- name: Build with Gradle and run audio setup test on Windows
run: ./gradlew clean test --tests "com.github.natche.cyderutils.audio.AudioSetupTest" --info --stacktrace --no-daemon