错误:将图像作为容器执行时,GitLab CI/CD Pipeline 不支持链接

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

我有下一个 .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 文件。

是我做错了什么还是与跑步者有关?我错过了什么?

docker gitlab continuous-integration containers continuous-deployment
1个回答
0
投票

这是因为您的运行器主机配置不正确。例如,无法在 gitlab.com 共享运行器上重现此问题。

不幸的是,我无权访问我的 GitLab 运行程序的 config.toml 文件

您需要提供有关运行程序的详细信息,并有权访问运行程序服务器和配置,以便能够识别和解决此问题。

在无法查看配置的情况下,我的评估是,此问题可能是因为您的运行程序配置为使用 podman,但如 GitLab podman 配置文档中所述 podman 不支持链接。

要使用 Podman 作为执行器运行服务,请启用

FF_NETWORK_PER_BUILD
功能标志。 Docker 容器链接是旧版的,Podman 不支持。对于创建网络别名的服务,您必须安装
podman-plugins
软件包。

如果这种预感是正确的,您应该能够通过在作业中启用

FF_NETWORK_PER_BUILD
功能标志(理想情况下,如果是这种情况,应该在您的运行程序配置中设置)来解决此问题:

variables:
  FF_NETWORK_PER_BUILD: 1

如果这不起作用,可能是因为您的运行器主机缺少

podman-plugins
包。

© www.soinside.com 2019 - 2024. All rights reserved.