首先, GitLab免费版中对服务或Docker容器有任何限制吗?它说我拥有GitLab Enterprise Edition 11.11.0-rc1-ee
我有以下内容:
.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 start),则一切正常。
有趣的是,我在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:我公开了我的存储库。这是一个大众运输包装器。只需在127.0.0.1上运行activemq实例即可执行所有单元/集成测试。
否则(特别是对于CI管道而言),必须编辑文件DiDrDe.MessageBus.Infra.MassTransit.IntegrationTests\TestSupport\ActiveMqTestsConstants.cs
,并且必须将HostName更改为将CI的activeMq容器旋转的任何值。
到目前为止,我已经尝试使用webcenter__activemq
,127.0.0.1
,0.0.0.0
,localhost
,activemq
(并为服务设置了相同的别名)< strong>但是没有运气
答案 0 :(得分:0)
我们一直在CI管道中使用服务,但从未使用过环回地址。您提到它确实有效,但是它可能是Shell运行程序,现在您可能正在使用Docker运行程序。
GitLab文档为clear guidelines提供了有关如何连接到服务的信息:
假设您需要一个Wordpress实例来测试某些API 与您的应用程序集成。
然后您可以在自己的广告中使用
tutum/wordpress
图片.gitlab-ci.yml
:services: - tutum/wordpress:latest
如果您未指定服务别名,则在运行作业时,
tutum/wordpress
将开始运行,您将可以从中访问它 您的构建容器有两个主机名可供选择:tutum-wordpress tutum__wordpress
您还可以使用我在第一句话中提到的服务别名,也可以作为文档中的 described。