移动到 ubuntu 20 后,在 Azure 构建管道中跳过了 Testcontainer junit 测试

Testcontainer junit test skipped in azure build pipeline after moving to ubuntu 20

我在我的项目中使用 testcontainer 进行了 junit 测试。

@Testcontainers(disabledWithoutDocker = true)
public class AutoHedgeDaoTest {

    @Container
    GenericContainer<?> mongoContainer = new GenericContainer<>("mongo:3.6.9").withExposedPorts(27017);

    MongoTemplate mongoTemplate;

...
}

我使用 azure devops 管道来构建我的项目

- task: Maven@3
          displayName: maven build
          inputs:
            mavenPomFile: 'fixByPassWeb/pom.xml'
            goals: 'clean install'
            options: ' -DbuildNumber=$(Build.BuildNumber)'
            publishJUnitResults: true
            testResultsFiles: '**/surefire-reports/TEST-*.xml'
            javaHomeOption: 'JDKVersion'
            jdkVersionOption: 1.11
            mavenVersionOption: 'Default'
            mavenAuthenticateFeed: false
            effectivePomSkip: false
            sonarQubeRunAnalysis: false

11 月,azure devops 使用 ubuntu 18,一切都很好。 这是日志的一部分

14:58:14.857 [main] DEBUG org.testcontainers.utility.TestcontainersConfiguration - 将从文件加载测试容器配置覆盖:/home/vsts/.testcontainers.properties
14:58:15.309 [ducttape-0] 调试 org.testcontainers.dockerclient.DockerClientProviderStrategy - Pinging docker 守护进程...
14:58:15.332 [ducttape-0] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
14:58:15.433 [main] 信息 org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy - 从环境
中找到 docker 客户端设置 14:58:15.434 [main] INFO org.testcontainers.dockerclient.DockerClientProviderStrategy - 找到 Docker 具有环境变量、系统属性和默认值的环境。已解决 dockerHost=unix:///var/run/docker.sock
14:58:15.434 [main] DEBUG org.testcontainers.dockerclient.DockerClientProviderStrategy - 检查 Docker OS 类型的环境变量、系统属性和默认值。已解决 dockerHost=unix:///var/run/docker.sock
14:58:15.436 [主要] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
14:58:15.623 [main] INFO org.testcontainers.DockerClientFactory - Docker 主机 IP 地址是 localhost
14:58:15.624 [主要] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
14:58:15.643 [主要] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
14:58:15.662 [main] 信息 org.testcontainers.DockerClientFactory - 连接到 docker:
服务器版本:19.03.13+azure
API版本:1.40
操作系统:Ubuntu 18.04.5 LTS
总内存:6927 MB

14:58:15.662 [main] DEBUG org.testcontainers.DockerClientFactory - Ryuk 已启用
14:58:15.670 [main] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: ListImagesCmdImpl[imageNameFilter=testcontainersofficial/ryuk:0.3.0,showAll=false,filters=com.github.dockerjava.core.util.FiltersBuilder@0]
14:58:15.726 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - 在注册表中查找图像的身份验证配置:testcontainersofficial/ryuk:0.3.0:index.docker.io
14:58:15.728 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - RegistryAuthLocator 具有配置文件:/home/vsts/.docker/config.json(存在)和 commandPathPrefix:
14:58:15.737 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - registryName [index.docker.io] for dockerImageName [testcontainersofficial/ryuk:0.3.0]
14:58:15.748 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - 找到现有的身份验证配置 [AuthConfig{username=githubactions, password=hidden non-blank value, auth=hidden non-blank value, email=null, registryAddress= https://index.docker.io/v1/, registryToken=blank}]
14:58:15.750 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - 发现缓存身份验证:[AuthConfig{username=githubactions, password=hidden non-blank value, auth=hidden non-blank value, email=null, registryAddress= https://index.docker.io/v1/, registryToken=blank}]
14:58:15.751 [main] DEBUG org.testcontainers.dockerclient.auth.AuthDelegatingDockerClientConfig - 有效的 auth 配置 [AuthConfig{username=githubactions, password=hidden non-blank value, auth=hidden non-blank value, email=null, registryAddress=https ://index.docker.io/v1/, registryToken=空白}] 14:58:16.929 [tc-okhttp-stream-559050604] 信息 org.testcontainers.DockerClientFactory - 开始拉取图像
14:58:16.942 [tc-okhttp-stream-559050604] DEBUG com.github.dockerjava.core.command.PullImageResultCallback - ResponseItem(stream=null, status=Pulling from testcontainersofficial/ryuk, progressDetail=null, progress=null, id=0.3 .0, from=null, time=null, errorDetail=null, error=null, aux=null)
14:58:16.950 [tc-okhttp-stream-559050604] 信息 org.testcontainers.DockerClientFactory - 拉取图像层:0 个待处理,0 个下载,0 个提取,(0 bytes/0 字节)
……………….
[信息] 运行 com.AutoHedgeDaoTest
………………
14:58:32.725 [main] 信息 com.rencap.fo.fixbypass.web.AutoHedgeDaoTest - 连接到 mongodb://localhost:32769
……………………..
14:58:33.592 [main] DEBUG org.testcontainers.utility.ResourceReaper - 删除的容器和关联的卷:mongo:3.6.9
[INFO] 测试 运行:1,失败:0,错误:0,跳过:0, 已用时间:15.047 秒 - com.AutoHedgeDaoTest

但现在 azure devops 使用 ubuntu 20。目前跳过了测试。

18:16:28.143 [主要] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
18:16:28.295 [main] INFO org.testcontainers.DockerClientFactory - Docker 主机 IP 地址是 localhost
18:16:28.297 [主要] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
18:16:28.315 [主要] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
18:16:28.333 [main] 信息 org.testcontainers.DockerClientFactory - 连接到 docker:
服务器版本:20.10.2+azure
API版本:1.41
操作系统:Ubuntu 20.04.2 LTS
总内存:6954 MB

18:16:28.334 [main] DEBUG org.testcontainers.DockerClientFactory - Ryuk 已启用
18:16:28.338 [main] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: ListImagesCmdImpl[imageNameFilter=testcontainersofficial/ryuk:0.3.0,showAll=false,filters=com.github.dockerjava.core.util.FiltersBuilder@0]
18:16:28.374 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - 在注册表中查找图像的身份验证配置:testcontainersofficial/ryuk:0.3.0:index.docker.io
18:16:28.376 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - RegistryAuthLocator 具有配置文件:/home/vsts/.docker/config.json(存在)和 commandPathPrefix:
18:16:28.381 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - registryName [index.docker.io] for dockerImageName [testcontainersofficial/ryuk:0.3.0]
18:16:28.392 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - 找到现有的身份验证配置 [AuthConfig{username=githubactions, password=hidden non-blank value, auth=hidden non-blank value, email=null, registryAddress= https://index.docker.io/v1/, registryToken=blank}]
18:16:28.392 [main] DEBUG org.testcontainers.utility.RegistryAuthLocator - 发现缓存身份验证:[AuthConfig{username=githubactions, password=hidden non-blank value, auth=hidden non-blank value, email=null, registryAddress= https://index.docker.io/v1/, registryToken=blank}]
18:16:28.392 [main] DEBUG org.testcontainers.dockerclient.auth.AuthDelegatingDockerClientConfig - 有效的 auth 配置 [AuthConfig{username=githubactions, password=hidden non-blank value, auth=hidden non-blank value, email=null, registryAddress=https ://index.docker.io/v1/, registryToken=blank}]
18:16:28.419 [主要] 调试 com.github.dockerjava.core.command.AbstrDockerCmd - Cmd:
com.github.dockerjava.core.command.CreateContainerCmdImpl@70925b45[name=testcontainers-ryuk-0dd3967c-ded1-45bb-9174-5710ca968be4,hostName=,domainName=,user=,attachStdin=,attachStdout=,attachStderr=,portSpecs=,tty=,stdinOpen= ,stdInOnce=,env=,cmd=,healthcheck=,argsEscaped=,entrypoint=,image=testcontainersofficial/ryuk:0.3.0,volumes=com.github.dockerjava.api.model.Volumes@4263b080,workingDir=,macAddress=,onBuild=, networkDisabled=,exposedPorts=com.github.dockerjava.api.model.ExposedPorts@2af616d3,stopSignal=,stopTimeout=,hostConfig=HostConfig(binds=[//var/run/docker.sock:/var/run/docker.sock:rw], blkioWeight=null, blkioWeightDevice=null,blkioDeviceReadBps=null,blkioDeviceWriteBps=null,blkioDeviceReadIOps=null,blkioDeviceWriteIOps=null,memorySwappiness=null,nanoCPUs=null,capAdd=null,capDrop=null,containerIDFile=null,cpuPeriod=null,cpuRealtime,run=retimernull空,cpuShares=null,cpuQuota=null,cpusetCpus=null,cpusetMems=null,devices=null,deviceCgroupRules=null,deviceRequests=null,diskQuota=null,dns=null,dnsOptions=null,dnsSearch=null,extraHosts=null, groupAdd=null, ipcMode=null, cgroup=null, links=[], logConfi g=com.github.dockerjava.api.model.LogConfig@5910de75, lxcConf=null, memory=null, memorySwap=null, memoryReservation=null, kernelMemory=null, networkMode=null, oomKillDisable=null, init=null, autoRemove=true, oomScoreAdj=null, portBindings=null,privileged=false,publishAllPorts=true,readonlyRootfs=null,restartPolicy=null,ulimits=null,cpuCount=null,cpuPercent=null,ioMaximumIOps=null,ioMaximumBandwidth=null,volumesFrom=null,mounts=null,pidMode= null,isolation=null,securityOpts=null,storageOpt=null,cgroupParent=null,volumeDriver=null,shmSize=null,pidsLimit=null,运行time=null,tmpFs=null,utSMode=null,usernsMode=null , sysctls=null, consoleSize=null),labels={org.testcontainers=true},shell=,networkingConfig=,ipv4Address=,ipv6Address=,aliases=,authConfig=AuthConfig(用户名=githubactions, 密码=3d6472b9-3d49-4d17-9fc9-90d24258043b, email=null, registryAddress=https://index.docker.io/v1/, auth=Z2l0aHViYWN0aW9uczozZDY0NzJiOS0zZDQ5LTRkMTctOWZj[=219NMDI=]01ODAQy=01ODAQy=Z2l0aHViYWN0aW9uczozZDY0NzJiOS , registrytoken=null, identitytoken=null, stac kOrchestrator=null)]
[信息] 运行 com.AutoHedgeDaoTest [警告] 测试 运行:1,失败:0,错误:0,跳过:1,已用时间:0.006 秒 - com.AutoHedgeDaoTest

从上面的错误日志来看,正在使用旧版本的 testcontainers。

正在将 testcontainers 依赖项升级到最新版本 1.15.2 以解决上述问题。