I已将硬件连接到我的GitLab Runner(使用Docker Executor)。 GitLab Runner是PC。我用它来运行与硬件有关的自动测试。 这些测试涉及发送和接收跑步者生成的音频信号。这些测试确实在本地工作,但在Gitlab Runner环境中不起作用。 我假设它与没有音频所需权限的Docker环境有关。我该如何给我的Gitlab跑步者提供音频权限?
这个是一个可复制的例子:
stages:
- test
test_audio_playback:
image: ubuntu:latest
stage: test
before_script:
- apt-get update
- apt-get install -y pulseaudio-utils pulseaudio dbus-x11 sudo alsa-utils
- useradd -m pulseuser
- mkdir -p /run/user/1000/pulse
- chown pulseuser:pulseuser /run/user/1000/pulse
- export PULSE_SERVER=unix:/run/user/1000/pulse/native
- ln -s /run/user/1000/pulse /tmp/pulse
script:
- sudo -u pulseuser pulseaudio --start --exit-idle-time=-1
- ls /usr/share/sounds/alsa/
- sudo -u pulseuser paplay /usr/share/sounds/alsa/Front_Center.wav
这里是我的基本可再现代码。目前,即使工作过去,我也无法听到声音。如果我能够听到声音,我相信这将解决我的硬件测试问题。 这是我在/etc/gitlab-runner/config.toml上安装的内容
volumes = ["/cache", "/dev:/dev:rw", "/ratatat/config:/ratatat/config:ro"]
,我能够听到声音
paplay /usr/share/sounds/alsa/Front_Center.wav
I还在Docker图像中测试了本地的音频。这是一个非常简单的Dockerfile,可以复制测试:
FROM ubuntu:latest
RUN apt-get update && \
apt-get install -y pulseaudio alsa-utils
CMD ["/bin/bash"]
正常构建图像,然后运行:
sudo docker run -it --rm -e PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native -v ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native -v ~/.config/pulse/cookie:/root/.config/pulse/cookie <your-image-name>
,然后在此Dockerfile中运行:
paplay /usr/share/sounds/alsa/Front_Center.wav
您将能够清楚地听到声音。
在这里,我允许机器上的其他用户(包括Docker容器用户)访问音频:
pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
env PULSE_SERVER=tcp:127.0.0.1:4713 pactl info