3 votes

Problème lors de l'exécution d'une tâche de pipeline Gitlab CI exécutant un test d'intégration avec Testcontainers

J'ai un test d'application Spring Boot qui utilise des TestContainers ( https://www.testcontainers.org ) pour exécuter des tests d'intégration contre un KafkaContainer. Lors de l'exécution locale, tout va bien, mais lors de l'exécution des tests d'intégration dans un pipeline GitlabCI, le conteneur ne peut pas démarrer. Voici le journal du travail :

> org.testcontainers.containers.ContainerLaunchException: Container
> startup failed Caused by:
> org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with
> exception Caused by:
> org.testcontainers.containers.ContainerLaunchException: Could not
> create/start container Caused by:
> org.testcontainers.containers.ContainerLaunchException: Timed out
> waiting for container port to open (docker ports: [32776, 32778]
> should be listening)

Ici Gitlab CI conf :

image: docker:git
services:
  - docker:dind

stages:
  - test
  - push
  - deploy

variables:
  MAVEN_CLI_OPTS: "--batch-mode -Dmaven.repo.local=/.m2"
  DOCKER_HOST: "tcp://docker:2375"
  DOCKER_DRIVER: overlay2

.test_template: &java_test
  image: maven:3.5.3-jdk-8
  stage: test
  tags:
    - test

 myapp-api_test:
   <<: *java_test
   services:
     - docker:dind
   variables:
     DOCKER_HOST: "tcp://docker:2375"
     DOCKER_DRIVER: overlay2
   script:
    - cd myapp-api
    - mvn $MAVEN_CLI_OPTS package

Ici Runner conf :

executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "alpine:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/.m2", 
         "/var/run/docker.sock:/var/run/docker.sock"]
    shm_size = 0
    output_limit = 8192

Une aide ? Merci

0voto

Runar Halse Points 3212

Je sais que vous avez probablement déjà trouvé la solution, mais je vous donne une réponse pour référence future au cas où d'autres personnes se trouveraient dans le même genre de problème.

J'avais des problèmes similaires, et je les ai résolus en ajoutant une stratégie d'attente personnalisée et/ou un délai d'attente personnalisé pour mes conteneurs. Localement, sur ma machine, cela fonctionnait bien, mais sur les runners partagés de gitlab.com, plus lents, le délai d'attente était dépassé.

Wait.forHttp("/health").withStartupTimeout(Duration.ofMinutes(5L))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X