!!! 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: 2021-01-27T00:00:00

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 času na dotazy ohledně probíraných témat.

Certicon
David

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

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ů. Též oceňuji, že jsme se kromě probírané látky dozvěděli i spoustu dalších zajímavých věcí a trendů z IT. A důležitá byla také přátelská atmosféra školení.

Generali a.s.
Jaroslav


Novinky

2024-09-14T00:00:00: Github Copilot & IntelliJ Idea
Novinky v Github Copilot + IntelliJ Idea

2024-08-31T00:00:00: AI & Copilot

2023-12-25T00:00:00: Kubernetes & Prometheus Documentary