!!! Od 1.6.2022 jsem zaměstnán na HPP. Kde? To tady nemůžu napsat (kvůli Compliance). Ale na mém Linkedin účtu (nick: Jirka Pinkas) to určitě najdete. 😁 V současnosti mám volných 10 dní, které mohu alokovat na školení 😊

Testcontainers & Gitlab runner

publikováno: 27.1.2021

Je zapotřebí zaregistrovat runner jako privileged!

sudo gitlab-runner register -n \
--url https://gitlab.com/ \
--registration-token 4cwPkysLcMzEmDPsQsXM \
--executor docker \
--description "privileged" \
--docker-image "docker:19.03.12" \
--docker-privileged \
--docker-volumes "/certs/client" \
  --tag-list "privileged"

Možná zavolat & restartovat hosta (to jsem zavolal když jsem byl zoufalý a nic mi nefungovalo, musím ještě ověřit jestli to je skutečně nutné nebo ne):

sudo usermod -aG docker gitlab-runner

Nastavení v .gitlab-ci.yml:

Použití v testu:

GenericContainer container = new GenericContainer(
  new ImageFromDockerfile()
// je nutné dovnitř namapovat aplikaci a Dockerfile
// String je kam se to dovnitř kontejneru uloží
// Path je kde se nachází soubory na hostu
      .withFileFromPath("target/app.jar", Path.of("./target/app.jar"))
      .withFileFromPath("Dockerfile", Path.of("./Dockerfile"))
);

container
// uvnitř aplikace běží na portu 8080
  .withExposedPorts(8080)
// cokoli se vypíše na stdout a errout, tak se vypisuje do logu (na třídě je @Slf4j)
  .withLogConsumer(new Slf4jLogConsumer(log))
  .withStartupTimeout(Duration.ofMinutes(10)) // výchozí je 60 vteřin
  .start();
// získá na jaký port hosta se namapovalo cokoli co je na portu 8080
Integer containerMappedPort = container.getMappedPort(8080);
// získá IP adresu hosta (může to být localhost, ale nemusí)
String containerIpAddress = container.getContainerIpAddress();

Dockerfile:

FROM adoptopenjdk/maven-openjdk11
WORKDIR /app
COPY target/app.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=test"]

 

Reference

Školení mi pomohlo ujasnit si jak má správně probíhat testování kódu, představilo užitečné knihovny a nástroje. Vše bylo podáno zábavnou formou, takže nebyl problém udržet pozornost. Navíc byl výhodou dostatek

Certicon
David

Jedno z nejlepších školení za poslední roky. Kromě seznámení se Springem apod. mě velmi příjemně překvapila hluboká znalost probírané látky a schopnost ji srozumitelně vysvětlit v případě ad hoc dotazů.

Jaroslav

Přestože jsem Cčkař, tak jsem se na školení JUnit dozvěděl nové věci. Zejména co se týče metodiky jednotkového testování a některých odborných termínů.

Retia
Jaromír


Novinky

25.12.2023: testcontainers pro lokální vývoj

25.12.2023: Kubernetes & Prometheus Documentary

9.8.2023: Rancher Desktop 2023