!!! Od 1.6.2022 jsem nedostupný pro školení. Od té doby budu tvořit novou digitální banku v Komerční bance (a hrát si tam se Spring Boot, Docker, Kubernetes & Apache Kafka). Pokud by měl někdo zájem pokračovat ve školeních po mě, tak se mi ozvěte. Pokud by si někdo chtěl hrát s moderními technologiemi a pracovat v KB, tak se mi taky ozvěte :-) Na JavaDays (snad) opět budu, to si nenechám ujít :-) Letos (2022) očekávám, že budu mít v KB hodně práce než si všechno sedne. Přemýšlím, že bych v příštím roce uspořádal buď pár školení (zejména pro mé stálé a věrné zákazníky), anebo bych vytvořil nějakou novou konferenci nebo vymyslím nějaký jiný formát, protože je hromada lidí, které bych opět strašně moc rád viděl a považuji je za přátele. Časem (nejspíš v příštích pár měsících) vytvořím nový blog na separátní doméně a novinky Java a SQL školení dále rozšiřovat nebudu Je možné že se ke školením časem vrátím (nikdy neříkej nikdy), ale aktuálně budu kopat za tým KB :-) Pokud se něco změní, tak to dám včas vědět zde na webu a na blogu. !!!

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

16.4.2022: Docker Desktop & High CPU usage

5.4.2022: Spring4Shell 0-day vulnerability

30.3.2022: Online důchodová kalkulačka
Do důchodu daleko, ale je dobré vědět co nás bude čekat a mít v dokumentech pořádek.