Buildkite ã¯ããã©ã°ã€ã³ã®è±å¯ãªãšã³ã·ã¹ãã ã«ãããçŸä»£ã®è€éãªãœãããŠã§ã¢éçºããŒãºã«å¯Ÿå¿ãã匷åãªCI/CDãã©ãããã©ãŒã ã§ãã Buildkite ã¯ãã«ã¹ã¿ãã€ãºå¯èœãªã©ã³ããŒãåçãã€ãã©ã€ã³ããªã¢ã«ã¿ã€ã ãã¹ãåæããã®ä»å€ãã®æ©èœããµããŒããããéåžžã«ã¹ã±ãŒã©ãã«ãª CI/CD ãã©ãããã©ãŒã ãæäŸããŸãã
Testcontainers ã¯ãéçºããã³ãã¹ãã®ãŠãŒã¹ã±ãŒã¹åãã«äœ¿ãæšãŠã®ãªã³ããã³ãã³ã³ãããããããžã§ãã³ã°ããããã®ãªãŒãã³ãœãŒã¹ãã¬ãŒã ã¯ãŒã¯ã§ãã Testcontainersã䜿çšãããšãããŒã¿ããŒã¹ãã¡ãã»ãŒãžãããŒã«ãŒãWebãã©ãŠã¶ãŒããŸãã¯Dockerã³ã³ããã§å®è¡ã§ããã»ãŒãã¹ãŠã®ãã®ãç°¡åã«æäœã§ããŸãã
ãã®èšäºã§ã¯ãBuildkite ãã©ãããã©ãŒã ã§ Testcontainers ããŒã¹ã®ãã¹ããå®è¡ããæ¹æ³ã«ã€ããŠèª¬æããŸãã ããã§ã¯ã GitHub ã§èŠã€ãããã Java/Spring Boot ã¢ããªã±ãŒã·ã§ã³ã®äŸã䜿çšããŸãã

Buildkite ã®äœ¿çšãéå§ãã
Buildkite Pipelines æ©èœã§ã¯ã次ã®ãã®ã§æ§æããããã€ããªãã ã¢ãŒããã¯ãã£ã䜿çšããŸãã
- Buildkite ããã·ã¥ããŒã: CI/CD ãã€ãã©ã€ã³ã管çããããã® SaaS (Software-as-a-Service) ã³ã³ãããŒã« ããã«ã ããã«ããããšãŒãžã§ã³ããšã®äœæ¥ã調æŽãããçµæã衚瀺ãããŸãã
- ãšãŒãžã§ã³ãïŒ å°ãããä¿¡é Œæ§ãé«ããã¯ãã¹ãã©ãããã©ãŒã ã®ãã«ãã©ã³ããŒã ãããã¯ããªã³ãã¬ãã¹ãŸãã¯ã¯ã©ãŠãã§ãã¹ããããŸãã 圌ãã¯ãBuildkiteããã·ã¥ããŒãããåãåã£ãäœæ¥ãå®è¡ããŸãã
å³ 1 ã¯ãSaaS ãã©ãããã©ãŒã ãšã€ã³ãã©ã¹ãã©ã¯ãã£ã§å®è¡ãããŠãããšãŒãžã§ã³ããšã®éã® Buildkite ã®åå²ã瀺ããŠããŸãã

Buildkiteã䜿çšããã«ã¯ããŸãã¢ã«ãŠã³ãã« ãµã€ã³ã¢ãã ããå¿ èŠããããŸãã ã¡ãŒã«ã¢ãã¬ã¹ãšãã¹ã¯ãŒãã䜿çšããŠãµã€ã³ã¢ããããããGitHubã§ãµã€ã³ã¢ããã§ããŸãã ã¢ã«ãŠã³ããäœæãããããã€ãã©ã€ã³ããã¹ãã¹ã€ãŒããããŒã ãããã·ã¥ããŒãã®äžå¿çãªå Žæã§ããçµç¹ãäœæã§ããŸãã æ¬¡ã®ã¹ãããã¯ããšãŒãžã§ã³ããèšå®ããããšã§ãã
ãšãŒãžã§ã³ãã®ã»ããã¢ãã
BuildkiteãšãŒãžã§ã³ãã¯ãå°åã§ä¿¡é Œæ§ã®é«ãã¯ãã¹ãã©ãããã©ãŒã ã®ãã«ãã©ã³ããŒã§ãããç¬èªã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã§èªåãã«ããç°¡åã«å®è¡ã§ããŸãã ãšãŒãžã§ã³ãã®äž»ãªåœ¹å²ã¯ãäœæ¥ã® buildkite.com ããŒãªã³ã°ããã«ã ãžã§ãã®å®è¡ããžã§ãã®ã¹ããŒã¿ã¹ ã³ãŒããšåºåãã°ã®å ±åããžã§ãã®ææç©ã®ã¢ããããŒãã§ãã
BuildkiteãšãŒãžã§ã³ãã¯ãããŸããŸãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãã¯ã©ãŠããã©ãããã©ãŒã ã«ã€ã³ã¹ããŒã«ã§ããŸãã çµç¹ã® ããã·ã¥ããŒã (https://buildkite.com/<organization>) ã«ç§»åããããäžéšã®ããã²ãŒã·ã§ã³ ããŒã§ [ãšãŒãžã§ã³ã ] ãã¯ãªãã¯ããŸãã ããŸããŸãªãã©ãããã©ãŒã ã«ã€ããŠã¯ããšãŒãžã§ã³ã ã¯ã€ã㯠ã¹ã¿ãŒã ã¬ã€ããåç §ããŠãã ããã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ããšãŒãžã§ã³ããšããŠUbuntuVMã䜿çšããŸãã Ubuntu VMãããŒã«ã«ã«äœæããããšããAWSãAzureãGCPãªã©ã®ä»»æã®ã¯ã©ãŠããã©ãããã©ãŒã äžã®UbuntuOSã«åºã¥ããŠVMãäœæããããšãã§ããŸãã
æèšïŒ å®éã®ãã«ãã¯ãšãŒãžã§ã³ãã§å®è¡ãããŸãã ãã®ãããã¯ãŒã¯ããŒããå®è¡ã§ããããã«ååãªRAMãšã¹ãã¬ãŒãžã¹ããŒã¹ãå²ãåœãŠãããŠããããšã確èªããŠãã ããã
ãšãŒãžã§ã³ãã®ã¯ã€ãã¯ã¹ã¿ãŒãã¬ã€ãã§ãUbuntuãã¯ãªãã¯ããæç€ºã«åŸã£ãŠBuildkiteãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããŸãããšãŒãžã§ã³ããæ£åžžã«ã€ã³ã¹ããŒã«ããå Žåã¯ãå³ 2ã®äŸã®ããã« [ãšãŒãžã§ã³ã] ããŒãžã«ãšãŒãžã§ã³ããäžèŠ§è¡šç€ºãããŸãã

å®éã®ãã«ãã¯ãšãŒãžã§ã³ãã§å®è¡ãããããããã«ããã€ãã©ã€ã³ãå®è¡ããããã«å¿ èŠãªãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸãã ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã¹ãã«Testcontainersã䜿çšããJava / Spring Boot 3 ã¢ããªã±ãŒã·ã§ã³ã§ããããããšãŒãžã§ã³ãã«ã¯Java 17+ãšDockerãã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸãã
Ubuntu VMã§ã次ã®ã³ãã³ãã䜿çšããŠJava 17 ãã€ã³ã¹ããŒã«ããŸãããã
$ sudo apt install openjdk-17-jdk
$ java -version
openjdk version "17.0.8.1" 2023-08-24
OpenJDK Runtime Environment (build 17.0.8.1+1-Ubuntu-0ubuntu123.04)
OpenJDK 64-Bit Server VM (build 17.0.8.1+1-Ubuntu-0ubuntu123.04, mixed mode, sharing)
次ã«ã å ¬åŒããã¥ã¡ã³ãã«åŸã£ãŠãUbuntuVMã«Dockerãã€ã³ã¹ããŒã«ããŸãã Buildkite ãšãŒãžã§ã³ãã¯ããŠãŒã¶ãŒ buildkite-agent ã§ãšãŒãžã§ã³ããå®è¡ããŸãã ããã§ã¯ã次ã®ã³ãã³ãã䜿çšããŠããŠãŒã¶ãŒãbuildkite-agentããdockerã°ã«ãŒãã«è¿œå ããŸãããã
sudo usermod -aG docker buildkite-agent
ã°ã«ãŒãã®å€æŽãæå¹ã«ããã«ã¯ãUbuntu VM ãåèµ·åãããšãŒãžã§ã³ãã§ãã«ã ãã€ãã©ã€ã³ãå®è¡ããŠãåé¡ãªãã¯ãã§ãã
ãããžã§ã¯ãã®ã»ããã¢ãã
次ã«ãGitHub ã§ãããžã§ã¯ããäœæããCI ãã©ãããã©ãŒã ãšã㊠Buildkite Pipelines ã䜿çšããããã«æ§æããŸãã ãã§ã«ã¢ããªã±ãŒã·ã§ã³ãããå Žåã¯ããã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããããæ°ãããããžã§ã¯ããäœæã§ããŸãã
ãã¹ãã« Testcontainers ã䜿çšãã Spring Boot ã¢ããªã±ãŒã·ã§ã³ã§ãã testcontainers-showcase ãªããžããªã䜿çšããŸãã
ãããžã§ã¯ãã®ã«ãŒã ãã£ã¬ã¯ããªã«æ¬¡ã®å
容ã®ãã¡ã€ã«ãäœæã .buildkite/pipelines.yml 倿Žãã³ãããããŠããã·ã¥ããŸãã
steps:
- label: "Test"
commands:
- ./mvnw test
# if you are using Gradle
# - ./gradlew test
Buildkite ãã€ãã©ã€ã³ã®ã»ããã¢ãã
次ã«ãBuildkite ããã·ã¥ããŒãã«ç§»åãã[æ°ãããã€ãã©ã€ã³] ãã¿ã³ãéžæããæ¬¡ã®æé ã«åŸã£ãŠãããžã§ã¯ãã®ãã€ãã©ã€ã³ãæ§æããŸãã
- ãGit ãªããžã㪠URLãã«ãhttps://github.com/testcontainers/testcontainers-showcase.git ãšå ¥åããŸãã
- ãååãã«ãtestcontainers-showcaseããšå ¥åããŸãã
- [ã¹ããã] ã»ã¯ã·ã§ã³ã§ã[远å ] ãã¿ã³ãéžæãã[ãªããžããªããã¹ããããèªã¿åã] ãªãã·ã§ã³ãéžæããŸããããã«ããããªããžããªå
ã®
.buildkite/pipeline.ymlãã¡ã€ã«ãããã€ãã©ã€ã³å®çŸ©ãèªã¿åãããŸãã - [ ãã€ãã©ã€ã³ã®äœæ] ãã¿ã³ãéžæããŸãã
- å¿ èŠã«å¿ããŠãæ¬¡ã®æé ã§èª¬æããããã« Webhook ãæ§æããŠããªããžããªã«å€æŽãããã·ã¥ãããã³ã«ãã«ããããªã¬ãŒãããããã«ããããšãã§ããŸãã
次ã«ã[ æ°ãããã«ã ] ãã¿ã³ãéžæããŠãã€ãã©ã€ã³ãæåã§ããªã¬ãŒãã [ã¡ãã»ãŒãž] ãæå®ããŠã[ ãã«ãã®äœæ ] ãã¿ã³ãéžæããŸããÂ
Buildkite ãã€ãã©ã€ã³ã¯ãå³ 3ã«ç€ºãããã«æ£åžžã«å®è¡ãããã¯ãã§ãã

Ubuntu VMã䜿çšããŠBuildkiteãšãŒãžã§ã³ããäœæããŸããããDockerã³ã³ããããšãŒãžã§ã³ããšããŠäœ¿çšãããªã©ãä»ã®ãªãã·ã§ã³ããããŸãã Dockerã³ã³ããå ã§Dockerãèšå®ããã®ã¯ãç¹å®ã®ç°å¢ã§ã¯é£ããã§ãã
ããã§ç»å Žããã®ã Testcontainers Cloud ã§ãTestcontainersããŒã¹ã®ãã¹ããããã·ã³ãã«ãã€ç¢ºå®ã«å®è¡ããããããŸãã
Testcontainers Cloudã䜿çšãããšããšãŒãžã§ã³ãã§DockerããŒã¢ã³ãå®è¡ããå¿ èŠãããªããã³ã³ããã¯ãªã³ããã³ãã¯ã©ãŠãç°å¢ã§å®è¡ãããããããã«ãã«é«CPU/ã¡ã¢ãªã®åŒ·åãªCIãšãŒãžã§ã³ãã䜿çšããå¿ èŠããªããªããŸãã
æå°éã®ã»ããã¢ããã§Testcontainers Cloudã䜿çšããTestcontainersããŒã¹ã®ãã¹ããå®è¡ããæ¹æ³ãèŠãŠã¿ãŸãããã
Testcontainers Cloudã®ã»ããã¢ãã
Testcontainers Cloud ã¯ãäŸåãããµãŒãã¹ãã¯ã©ãŠãäžã® Docker ã³ã³ãããšããŠã¹ãã³ã¢ãããããããã®ãµãŒãã¹ã«æ¥ç¶ããŠãã¹ããå®è¡ããããšã§ãTestcontainers ããŒã¹ã®ãã¹ããå€§èŠæš¡ã«å®è¡ããã®ã«åœ¹ç«ã¡ãŸãã
Testcontainers Cloudã¢ã«ãŠã³ãããŸã ãæã¡ã§ãªãå Žåã¯ã次ã®ããã«ã¢ã«ãŠã³ããäœæãããµãŒãã¹ã¢ã«ãŠã³ãããŒã¯ã³ãååŸããŠãã ããã
- https://app.testcontainers.cloud/signup ã§Testcontainers Cloudã¢ã«ãŠã³ãã«ãµã€ã³ã¢ããããŸãã
- ãã°ã€ã³ããããçµç¹ãäœæããŸãã
- Testcontainers Cloud ããã·ã¥ããŒãã«ç§»åãããµãŒãã¹ã¢ã«ãŠã³ããçæããŸã(å³ 4)ã

次ã«ã TC_CLOUD_TOKEN ãç°å¢å€æ°ãšããŠèšå®ããå¿
èŠããããŸãã ãã€ãã©ã€ã³ã·ãŒã¯ã¬ããã®ç®¡çã§è¿°ã¹ãããã«ãAWS Secrets ManagerãHashicorp Vaultãªã©ã®ããŸããŸãªã·ãŒã¯ã¬ããã¹ãã¬ãŒãžãµãŒãã¹ã䜿çšããŠãæ©å¯æ
å ±ãä¿åã§ããŸãããŸããBuildkiteãšãŒãžã§ã³ãã®ç°å¢ããã¯ã䜿çšããŠãã·ãŒã¯ã¬ããããžã§ãã«ãšã¯ã¹ããŒãããããšãã§ããŸãã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ç°¡åã«ããããã«ãç°å¢ããã¯ã䜿çšã㊠TC_CLOUD_TOKEN ãç°å¢å€æ°ãšããŠæ§æããŸãããã ãã£ã¬ã¯ããªã« environment ãšããååã®ãã¡ã€ã«ãäœæã /etc/buildkite-agent/hooks/ 次ã®å
容ã§äœæããŸãã
#!/bin/bash
export TC_CLOUD_TOKEN=<YOUR_TOKEN_VALUE>
set -e
次ã«ã次ã®ããã« .buildkite/pipelines.yml ãã¡ã€ã«ãæŽæ°ããŸãã
steps:
- label: "Test"
commands:
- sh -c "$(curl -fsSL https://get.testcontainers.cloud/bash)"
- ./mvnw test
ãã¹ããå®è¡ããåã«ãç°å¢ããã¯ã䜿çšã㊠TC_CLOUD_TOKEN ãç°å¢å€æ°ãšããŠåãåãTestcontainers CloudãšãŒãžã§ã³ããèµ·åããã³ãã³ããå«ããŸããã
ããã§ãæŽæ°ããã .buildkite/pipelines.yml ãã¡ã€ã«ãã³ãããããŠããã·ã¥ãããšããã€ãã©ã€ã³ã¯ Testcontainers Cloud ã䜿çšããŠãã¹ããå®è¡ããŸãã Testcontainers ããŒã¹ã®ãã¹ããããã©ã«ãã® Docker ããŒã¢ã³ã§ã¯ãªã Testcontainers Cloud ã䜿çšããŠããããšãç€ºãæ¬¡ã® logs ã¹ããŒãã¡ã³ãã衚瀺ãããŸãã
Running global environment hook
$ /etc/buildkite-agent/hooks/environment
# TC_CLOUD_TOKEN added
...
...
...
04:19:19.600 [Test worker] INFO org.testcontainers.DockerClientFactory - Connected to docker:
Server Version: 78+testcontainerscloud (via Testcontainers Desktop 1.5.3)
API Version: 1.43
Operating System: Ubuntu 20.04 LTS
Total Memory: 7407 MB
Testcontainers Cloudã®ææäŒå¡ã®ã客æ§ã¯ãTestcontainers Cloudã®ã¿ãŒãã¢ãŒããã䞊åå®è¡æ©èœãåãããã«ãããŒã«ãšçµã¿åãããŠæŽ»çšãããã¹ããããã«é«éã«å®è¡ããããšãã§ããŸãã Testcontainers Cloudã®äŸ¡æ Œæ å ±ã¯ããŠã§ããµã€ãã§ç¢ºèªã§ããŸãã
Maven ã®å Žåã -DforkCount=N ã·ã¹ãã ããããã£ã䜿çšããŠäžŠååã®åºŠåããæå®ã§ããŸãã Gradle ã®å Žåã maxParallelForks ããããã£ã䜿çšããŠäžŠååã®åºŠåããæå®ã§ããŸãã
次ã®ããã«ã .buildkite/pipelines.yml ã® 4 ã€ã®ãã©ãŒã¯ã䜿çšããŠãã¹ãã®äžŠåå®è¡ãæå¹ã«ããããšãã§ããŸãã
steps:
- label: "Test"
commands:
- sh -c "$(curl -fsSL https://get.testcontainers.cloud/bash)"
- ./mvnw test -DforkCount=4
ã¿ãŒãã¢ãŒãã®äœ¿çšã®è©³çްã«ã€ããŠã¯ã ããã¥ã¡ã³ããåç §ããŠãã ããã
çµè«
ãã®èšäºã§ã¯ãããã©ã«ãã® Docker ããŒã¢ã³ã䜿çšã㊠Buildkite Pipelines ã§ Testcontainers ããŒã¹ã®ãã¹ããå®è¡ããæ¹æ³ã«ã€ããŠèª¬æããŸããã æ¬¡ã«ãTestcontainers Cloud ã¢ã«ãŠã³ããäœæããTestcontainers Cloud ã䜿çšããŠãã¹ããå®è¡ããããã«ãã€ãã©ã€ã³ãæ§æããæ¹æ³ãåŠã³ãŸããã ãŸããTestcontainers Cloud TurboMode ããã«ãããŒã«ã®äžŠåå®è¡æ©èœãšçµã¿åãããŠäœ¿çšããæ¹æ³ãæ€èšããŸãããÂ
ããã§ã¯ãJava ãããžã§ã¯ããäŸã«æããŠã»ããã¢ããã瀺ããŸããããTestcontainers ã©ã€ãã©ãªã¯ä»ã®äžè¬çãªèšèªã«ãååšããåãæ§æãã¿ãŒã³ã«åŸã£ãŠãGolangã.NETãPythonãNode.js ãªã©ã® Azure Pipelines ã§ Testcontainers ããŒã¹ã®ãã¹ããå®è¡ã§ããŸãã
ããã«è©³ãã
- Docker Newsletter ã賌èªããŠãã ããã
- ç¡æã¢ã«ãŠã³ããäœæããŠãTestcontainers Cloud ã®äœ¿çšãéå§ããŠãã ããã
- Testcontainersã«ã€ããŠè³ªåããããŸãã? Testcontainers Slackã§æ¥ç¶ããŸãã
- Testcontainers ã®ãã¹ã ãã©ã¯ãã£ã¹ã«ã€ããŠèª¬æããŸãã
- Testcontainers ã¬ã€ãããéå§ããŸãã