无法从GitLab CI/CD中的测试访问活动mq服务
首先,关于服务或docker容器,GitLab free edition中有任何限制吗?它说我有GitLab Enterprise edition 11.11.0-rc1-ee 我有以下资料:无法从GitLab CI/CD中的测试访问活动mq服务,gitlab,gitlab-ci-runner,masstransit,Gitlab,Gitlab Ci Runner,Masstransit,首先,关于服务或docker容器,GitLab free edition中有任何限制吗?它说我有GitLab Enterprise edition 11.11.0-rc1-ee 我有以下资料: 我个人回购的免费gitlab账户 包装MassTransit并使用ActiveMq作为传输层的项目 一个GitLab.GitLab ci.yml,用于恢复、生成代码、运行单元测试和集成测试,并启动服务webcenter/activemq:5.14.3,以执行集成测试 我的集成测试无法连接到活动mq的启
- 我个人回购的免费gitlab账户
- 包装MassTransit并使用ActiveMq作为传输层的项目
- 一个GitLab
,用于恢复、生成代码、运行单元测试和集成测试,并启动服务.GitLab ci.yml
,以执行集成测试webcenter/activemq:5.14.3
ActiveMQ连接失败: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\uuu 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.masstTransit.IntegrationTests\TestSupport\ActiveMqTestsConstants.cs
,并且必须将主机名更改为CI的activeMq容器启动时的任何值
到目前为止,我已经尝试过使用
webcenter\uuuu-activemq
,127.0.0.1
,0.0.0
,localhost
,activemq
(并将相同的别名设置为服务)但运气不佳我们一直在CI管道中使用服务,但从未使用环回地址。您提到它是有效的,但它可能是shell runner,现在您可能正在使用Docker runner
GitLab文档介绍了如何连接到服务:
假设您需要一个Wordpress实例来测试一些API
与应用程序集成
然后,您可以在您的应用程序中使用例如tutum/wordpress
图像
.gitlab ci.yml
:
services:
- tutum/wordpress:latest
如果未指定服务别名,则在作业运行时,
tutum/wordpress
将启动,您可以从
两个主机名下的生成容器可供选择:
tutum-wordpress
tutum__wordpress
您还可以使用我在第一篇评论中提到的服务别名,文档中也有提到。您需要使用服务别名,然后将其用作主机名。使用
localhost
永远不会起作用。127.0.0.1可以在另一个Gitlab的帐户管道中工作,但不能在我的Gitlab帐户中工作。您知道我可以为docker映像设置哪个变量,以便我的主机名可以指向它吗?如果我在本地运行容器,并将MassTransit主机名设置为“192.168.99.1”,它会工作,因为这是我的virtualbox适配器IP(我在Windows中使用docker toolbox)。很抱歉提出这么多问题,但我在这里有点困惑,我怀疑Gitlab与某些帐户中处理同一图像的方式有关。我将给出答案谢谢。我已经用结果更新了问题。不幸的是,肯定还涉及到其他方面,因为我仍然无法通过引用activemq来连接到管道中的activemqalias@diegosasw-您是否尝试使用自动生成的主机名在没有别名的情况下进行连接?@beechovsky我没有尝试任何自动生成的主机名,但我使用了别名,这对docker runner很有效。