如何为Docker执行人Gitlab Runner

问题描述 投票:0回答:1

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
docker gitlab continuous-integration automated-tests
1个回答
0
投票
(在Docker的情况下,您显然需要不同的IP地址)


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.