我有下一个 .gitlab-ci.yml 文件,我在其中尝试使用 Redis 映像作为服务,从中创建一个容器,然后执行我的应用程序的单元测试。 Redis 映像已注册到我的 GitLab 运行程序中。
stages:
- test
before_script:
- export several environment variables and configurations needed
cache:
paths:
- .gradle/caches
build-job:
stage: test
script:
- echo "Building...."
- gradle build -x test --info $GRADLE_PARAMETERS
- echo "END of Build...."
artifacts:
paths:
- build/libs/*
expire_in: 1 day
unit-tests-job:
stage: test
services:
- redis:7.2.1
variables:
REDIS_PORT: 6379
REDIS_HOST: redis
REDIS_URL: redis://redis:6379/0
script:
- echo "Starting execution of unit tests...."
- gradle libertyStart --info $GRADLE_PARAMETERS
- sleep 30
- gradle test --info $GRADLE_PARAMETERS
- echo "Execution of unit tests finished...."
但是,在提交并推送到 GitLab 存储库后,我从管道中收到以下堆栈跟踪:
错误:作业失败(系统故障):准备环境:守护程序的错误响应:错误的参数:不支持链接(docker.go:659:0s)。检查 https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading 了解更多信息
根据我的研究,我发现
--link
标志已被弃用。我尝试按照 Docker 的建议使用用户定义的网络,但仍然收到相同的错误。我通过在顶层移动服务和别名来更改 .gitlab-ci.yml。别名为用户定义网络中的 Redis 容器提供主机名。
services:
- name: redis:latest
alias: redis
variables:
REDIS_PORT: 6379
REDIS_HOST: redis
REDIS_URL: redis://redis:6379/0
不幸的是,到目前为止我无法访问我的 GitLab 运行程序的 config.toml 文件。
是我做错了什么还是与跑步者有关?我错过了什么?
这是因为您的运行器主机配置不正确。例如,无法在 gitlab.com 共享运行器上重现此问题。
不幸的是,我无权访问我的 GitLab 运行程序的 config.toml 文件
您需要提供有关运行程序的详细信息,并有权访问运行程序服务器和配置,以便能够识别和解决此问题。
在无法查看配置的情况下,我的评估是,此问题可能是因为您的运行程序配置为使用 podman,但如 GitLab podman 配置文档中所述 podman 不支持链接。
要使用 Podman 作为执行器运行服务,请启用
功能标志。 Docker 容器链接是旧版的,Podman 不支持。对于创建网络别名的服务,您必须安装FF_NETWORK_PER_BUILD
软件包。podman-plugins
FF_NETWORK_PER_BUILD
功能标志(理想情况下,如果是这种情况,应该在您的运行程序配置中设置)来解决此问题:
variables:
FF_NETWORK_PER_BUILD: 1
如果这不起作用,可能是因为您的运行器主机缺少
podman-plugins
包。