无法从GitLab CI/CD中的测试访问主动MQ服务



首先, Gitlab免费版中有任何有关服务或Docker容器的限制吗?-ee

我有以下内容:

  • 我个人存储库的Gitlab的免费帐户
  • 一个包裹MassTransit并将ActiveMQ用作传输层的项目
  • gitlab .gitlab-ci.yml,可恢复,构建代码并运行单元,集成测试并旋转服务webcenter/activemq:5.14.3以执行集成测试。

我的集成测试无法连接到活动MQ的旋转容器。是否尝试使用主机名" 127.0.0.1"或" localhost"或" 0.0.0.0"都没关系。我一直看到ActiveMQ Connect Failed: NMSConnectionException

如果我在本地运行的测试使用本地ActiveMQ服务器(我只是下载了二进制文件,设置Java_home变量并运行bin/activemq启动(,一切都很好。

有趣的是,我在Gitlab Enterprise Edition 11.10.4-EE中进行了相同的测试和相同的代码,并且一切顺利进行,并且我的测试正确地指向" Localhost"服务器名称和也使用webcenter/activemq:5.14.3服务。

更新1 :这是我的.gitlab-ci.yml

#Stages
stages:
  - ci
  - pack
#Global variables
variables:
  GITLAB_RUNNER_DOTNET_CORE: mcr.microsoft.com/dotnet/core/sdk:2.2
  NUGET_REPOSITORY: $NEXUS_NUGET_REPOSITORY
  NUGET_API_KEY: $NEXUS_API_KEY
  NUGET_FOLDER_NAME: nupkgs
#Docker image
image: $GITLAB_RUNNER_DOTNET_CORE
#Jobs
ci:
  stage: ci
  services:
    - webcenter/activemq:5.14.3
  script:
    - dotnet restore --no-cache --force
    - dotnet build --configuration Release
    - dotnet vstest *Tests/bin/Release/**/*Tests.dll
pack-beta-nuget:
  stage: pack
  script:
    - export VERSION_SUFFIX=beta$CI_PIPELINE_ID
    - dotnet pack *.sln --configuration Release --output $NUGET_FOLDER_NAME --version-suffix $VERSION_SUFFIX --include-source --include-symbols -p:SymbolPackageFormat=snupkg
    - dotnet nuget push **/*.nupkg --api-key $NUGET_API_KEY --source $NUGET_REPOSITORY
  except:
    - master
pack-nuget:
  stage: pack
  script:
    - dotnet restore
    - dotnet pack *.sln --configuration Release --output $NUGET_FOLDER_NAME
    - dotnet nuget push **/*.nupkg --api-key $NUGET_API_KEY --source $NUGET_REPOSITORY
  only:
    - master

更新2 :我将以下设置与massTransit.activemq 5.3.2

一起使用
HostName = "localhost"; //I have tried 127.0.0.1 and 0.0.0.0 also. Same result
Username = "admin";
Password = "admin";
Port = 61616;
UseSsl = false;
AutoDelete = true;

更新3 :如果我将别名activemq设置为服务,然后使用HostName = "activemq"也不会连接。如果我不设置任何别名,但是使用自动化的webcenter__activemq,我遇到了同样的问题,它无法连接。

Starting test execution, please wait...
ActiveMQ Connect Failed: NMSConnectionException
ActiveMQ Connect Failed: NMSConnectionException
ActiveMQ Connect Failed: NMSConnectionException

更新4:我公开了我的存储库。它是MassTransit包装纸。所有单位/集成测试都可以通过简单地在127.0.0.1上运行ActiveMQ实例来执行。否则(尤其是对于CI管道(,必须对文件DiDrDe.MessageBus.Infra.MassTransit.IntegrationTestsTestSupportActiveMqTestsConstants.cs进行编辑,并且必须将主机名更改为CI的ActiveMQ容器的任何值。

到目前为止,我已经尝试使用webcenter__activemq127.0.0.10.0.0.0localhostactivemq(并将相同的别名设置为服务(,但没有运气

我们一直在CI管道中使用服务,但是我们从未使用过回环地址。您提到它有效,但它可能是Shell Runner,现在您可能正在使用Docker Runner。

gitlab文档提供了有关如何连接到服务的明确指南:

假设您需要一个WordPress实例来测试某些API 与您的应用程序集成。

然后,您可以使用例如在您的tutum/wordpress图像中使用 .gitlab-ci.yml

services:
- tutum/wordpress:latest

如果您没有指定服务别名,则在运行工作时, tutum/wordpress将启动,您将可以从 您的构建容器在两个主机名下可供选择:

tutum-wordpress
tutum__wordpress

您也可以使用我在我的第一个评论中提到的服务别名,如文档中所述的

最新更新