CircleCI¶
Info
This document applies to Circle CI Cloud, Server v4.x and Server v3.x.
Your CircleCI configuration should use a dedicated VM for Testcontainers to work. You can achieve this by specifying the
executor type in your .circleci/config.yml
to be machine
instead of the default docker
executor (see Choosing an Executor Type for more info).
Here is a sample CircleCI configuration that does a checkout of a project and runs go test
for a project. Go is installed for the tests
job using gvm
, and a workflow matrix has been defined to run the job with different Go versions. Go steps are finally executed from the go
orb.
version: 2.1
orbs:
go: circleci/go@1.11.0
executors:
machine_executor_amd64:
machine:
image: ubuntu-2204:2024.01.2
environment:
architecture: "amd64"
platform: "linux/amd64"
jobs:
tests:
executor: machine_executor_amd64
parameters:
go-version:
type: string
steps:
- run:
name: Install GVM
command: |
mkdir ~/gvmbin
curl -sL -o ~/gvmbin/gvm https://github.com/andrewkroh/gvm/releases/download/v0.5.2/gvm-linux-amd64
chmod +x ~/gvmbin/gvm
echo 'export PATH=$PATH:~/gvmbin' >> "$BASH_ENV"
- run:
name: Install Go
command: |
eval "$(gvm << parameters.go-version >>)"
echo 'eval "$(gvm << parameters.go-version >>)"' >> "$BASH_ENV"
go version
- checkout # checkout source code
- go/load-cache # Load cached Go modules.
- go/mod-download # Run 'go mod download'.
- go/save-cache # Save Go modules to cache.
- go/test: # Runs 'go test ./...' but includes extensive parameterization for finer tuning.
covermode: atomic
failfast: true
race: true
workflows:
build-and-test:
jobs:
- tests:
matrix:
parameters:
go-version: ["1.21.7", "1.22.3"]
You can learn more about the best practices of using Testcontainers together with CircleCI in this article for Java.