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"]
Š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.
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ů.
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í.