diff --git a/.docker/infra/kafka/docker-compose.yml b/.docker/infra/kafka/docker-compose.yml index 4f47436c34..e9bae37a36 100644 --- a/.docker/infra/kafka/docker-compose.yml +++ b/.docker/infra/kafka/docker-compose.yml @@ -6,18 +6,35 @@ services: environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 + healthcheck: + test: + ["CMD-SHELL", "zookeeper-shell localhost:2181 ls / > /dev/null 2>&1"] + interval: 5s + timeout: 5s + retries: 5 kafka: image: confluentinc/cp-kafka:7.9.6@sha256:9e178783dba8cf44cd8b1d260f548a587a21235921957edd4ed7aa7d060b0852 ports: - "9092:9092" - "29092:29092" + depends_on: + zookeeper: + condition: service_healthy environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092,PLAINTEXT_HOST://kafka:9092 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092,PLAINTEXT_HOST://localhost:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 - depends_on: - - zookeeper + healthcheck: + test: + [ + "CMD-SHELL", + "kafka-broker-api-versions --bootstrap-server localhost:29092", + ] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s diff --git a/.docker/infra/mysql/docker-compose.yml b/.docker/infra/mysql/docker-compose.yml index a775e47a65..f8c3a6c333 100644 --- a/.docker/infra/mysql/docker-compose.yml +++ b/.docker/infra/mysql/docker-compose.yml @@ -1,13 +1,16 @@ services: mysql: image: mysql:8.0.31@sha256:3d7ae561cf6095f6aca8eb7830e1d14734227b1fb4748092f2be2cfbccf7d614 - command: mysqld --default-authentication-plugin=mysql_native_password environment: - MYSQL_DATABASE=mysql - MYSQL_ROOT_PASSWORD=root - MYSQL_PASSWORD=mysql - MYSQL_USER=mysql - expose: - - "3306" ports: - "3306:3306" + command: ["mysqld", "--default-authentication-plugin=mysql_native_password"] + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -uroot -proot"] + interval: 5s + timeout: 2s + retries: 3 diff --git a/.docker/infra/postgres/docker-compose.yml b/.docker/infra/postgres/docker-compose.yml index 898dac796e..fcf19c547b 100644 --- a/.docker/infra/postgres/docker-compose.yml +++ b/.docker/infra/postgres/docker-compose.yml @@ -3,9 +3,12 @@ services: image: postgres:14.22@sha256:ae46a8452f2c137766c9d4a62f4fe60166355ff8b00512e6c48692dbf1eed3d5 environment: - POSTGRES_PASSWORD=postgres - expose: - - "5432" ports: - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready"] + interval: 5s + timeout: 2s + retries: 3 volumes: - - postgres_socket:/var/run/postgresql + - /var/run/postgresql:/var/run/postgresql diff --git a/.docker/infra/rabbitmq/docker-compose.yml b/.docker/infra/rabbitmq/docker-compose.yml index dfb5f00d09..17ace1b3ea 100644 --- a/.docker/infra/rabbitmq/docker-compose.yml +++ b/.docker/infra/rabbitmq/docker-compose.yml @@ -3,3 +3,8 @@ services: image: rabbitmq:4.2.5-alpine@sha256:f654a30164ddb33f4b43e5469910e7aa7838ddb144e9d63f039c34544a6823a5 ports: - "5672:5672" + healthcheck: + test: ["CMD-SHELL", "rabbitmq-diagnostics -q ping"] + interval: 5s + timeout: 5s + retries: 10 diff --git a/.docker/infra/redis/docker-compose.yml b/.docker/infra/redis/docker-compose.yml index a2c3cddc0b..7338509b51 100644 --- a/.docker/infra/redis/docker-compose.yml +++ b/.docker/infra/redis/docker-compose.yml @@ -1,8 +1,18 @@ services: redis: image: redis:8.6.2@sha256:1f073813b641755b70b0200da64131bbeeb4ec5b633ca67772229b49820caafa + environment: + REDIS_PASSWORD: passw0rd + ports: + - "6379:6379" command: ["redis-server", "--requirepass", "passw0rd"] + healthcheck: + test: ["CMD-SHELL", 'redis-cli -a "passw0rd" ping'] + interval: 10s + timeout: 5s + retries: 5 volumes: - redis_data:/data - ports: - - "16379:6379" + +volumes: + redis_data: diff --git a/.github/workflows/ci-instrumentation-with-services.yml b/.github/workflows/ci-instrumentation-with-services.yml index d9fb09d6ad..360b95a306 100644 --- a/.github/workflows/ci-instrumentation-with-services.yml +++ b/.github/workflows/ci-instrumentation-with-services.yml @@ -21,6 +21,7 @@ on: - "instrumentation/ruby_kafka/**" - "instrumentation/sidekiq/**" - "instrumentation/trilogy/**" + - ".docker/infra/**" - ".github/workflows/ci-instrumentation-with-services.yml" - ".github/actions/**" - "Rakefile" @@ -41,11 +42,6 @@ concurrency: cancel-in-progress: true # Cancel any previous runs of this workflow jobs: - check: - if: ${{ github.repository == 'open-telemetry/opentelemetry-ruby-contrib' }} - runs-on: ubuntu-24.04 - steps: - - run: echo "Repository check passed" instrumentation_with_services: if: ${{ github.repository == 'open-telemetry/opentelemetry-ruby-contrib' }} strategy: @@ -54,235 +50,32 @@ jobs: gem: - dalli - mongo - os: - - ubuntu-24.04 - name: other / ${{ matrix.gem }} / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: "Test Ruby 4.0" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "4.0" - - name: "Test Ruby 3.4" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.4" - - name: "Test Ruby 3.3" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.3" - yard: true - coverage: true - build: true - services: - memcached: - image: memcached:1.6.41-alpine@sha256:65c80b311a9601ef5ca8af3814e5cd06a9c4277ea139d80bd53da6b4d39eb46e - ports: - - 11211:11211 - mongodb: - image: mongo:6.0.27@sha256:03cda579c8caad6573cb98c2b3d5ff5ead452a6450561129b89595b4b9c18de2 - ports: - - 27017:27017 - - instrumentation_mysql: - if: ${{ github.repository == 'open-telemetry/opentelemetry-ruby-contrib' }} - strategy: - fail-fast: false - matrix: - gem: + - bunny + - pg + - que + - redis + - resque + - sidekiq - mysql2 - trilogy - os: - - ubuntu-24.04 - name: mysql / ${{ matrix.gem }} / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: "Test Ruby 4.0" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "4.0" - - name: "Test Ruby 3.4" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.4" - - name: "Test Ruby 3.3" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.3" - yard: true - coverage: true - build: true - services: - mysql: - image: mysql:8.0.31@sha256:3d7ae561cf6095f6aca8eb7830e1d14734227b1fb4748092f2be2cfbccf7d614 - options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 -e MYSQL_DATABASE=mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_PASSWORD=mysql -e MYSQL_USER=mysql -p 3306:3306 --entrypoint sh mysql:8.0.31@sha256:3d7ae561cf6095f6aca8eb7830e1d14734227b1fb4748092f2be2cfbccf7d614 -c "exec docker-entrypoint.sh mysqld --default-authentication-plugin=mysql_native_password" - - instrumentation_kafka: - if: ${{ github.repository == 'open-telemetry/opentelemetry-ruby-contrib' }} - strategy: - fail-fast: false - matrix: - gem: - racecar - rdkafka - ruby_kafka os: - ubuntu-24.04 - name: kafka / ${{ matrix.gem }} / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: "Test Ruby 4.0" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "4.0" - - name: "Test Ruby 3.4" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.4" - - name: "Test Ruby 3.3" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.3" - yard: true - coverage: true - build: true - services: - zookeeper: - image: confluentinc/cp-zookeeper:7.9.6@sha256:d3294ad2b353ac5a155ad9abe37884f75c482f387af553679210303b7118a0d3 - ports: - - 2181:2181 - env: - ZOOKEEPER_CLIENT_PORT: 2181 - ZOOKEEPER_TICK_TIME: 2000 - kafka: - image: confluentinc/cp-kafka:7.9.6@sha256:9e178783dba8cf44cd8b1d260f548a587a21235921957edd4ed7aa7d060b0852 - ports: - - 9092:9092 - - 29092:29092 - env: - KAFKA_BROKER_ID: 1 - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092,PLAINTEXT_HOST://localhost:9092 - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT - KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 - - instrumentation_redis: - if: ${{ github.repository == 'open-telemetry/opentelemetry-ruby-contrib' }} - strategy: - fail-fast: false - matrix: - gem: - - redis - - resque - - sidekiq - os: - - ubuntu-24.04 - name: redis / ${{ matrix.gem }} / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: "Test Ruby 4.0" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "4.0" - - name: "Test Ruby 3.4" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.4" - - name: "Test Ruby 3.3" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.3" - yard: true - coverage: true - build: true - services: - redis: - image: redis:8.6.2@sha256:1f073813b641755b70b0200da64131bbeeb4ec5b633ca67772229b49820caafa - ports: - - 6379:6379 - options: >- - --health-cmd "redis-cli -a \"$REDIS_PASSWORD\" ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - -e REDIS_PASSWORD=passw0rd - --entrypoint sh redis:8.6.2@sha256:1f073813b641755b70b0200da64131bbeeb4ec5b633ca67772229b49820caafa -c "exec redis-server --requirepass \"$REDIS_PASSWORD\"" - env: - REDIS_PASSWORD: "passw0rd" - - instrumentation_postgresql: - if: ${{ github.repository == 'open-telemetry/opentelemetry-ruby-contrib' }} - strategy: - fail-fast: false - matrix: - gem: - - pg - - que - os: - - ubuntu-24.04 - name: postgresql / ${{ matrix.gem }} / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: "Test Ruby 4.0" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "4.0" - - name: "Test Ruby 3.4" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.4" - - name: "Test Ruby 3.3" - uses: ./.github/actions/test_gem - with: - gem: "opentelemetry-instrumentation-${{ matrix.gem }}" - ruby: "3.3" - yard: true - coverage: true - build: true - services: - postgres: - image: postgres:14.22@sha256:ae46a8452f2c137766c9d4a62f4fe60166355ff8b00512e6c48692dbf1eed3d5 - env: - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - options: --health-cmd="pg_isready" --health-interval=5s --health-timeout=2s --health-retries=3 - volumes: - - "/var/run/postgresql:/var/run/postgresql" - - instrumentation_rabbitmq: - if: ${{ github.repository == 'open-telemetry/opentelemetry-ruby-contrib' }} - strategy: - fail-fast: false - matrix: - gem: - - bunny - os: - - ubuntu-24.04 - name: rabbitmq / ${{ matrix.gem }} / ${{ matrix.os }} + name: ${{ matrix.gem }} / ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Set environment variables + id: inputs + shell: bash + run: | + dir=$(find . -iname 'opentelemetry-instrumentation-${{ matrix.gem }}.gemspec' -exec dirname {} \;) + echo "gem_dir=${dir}" >> $GITHUB_OUTPUT + - name: Start Docker Service/s + run: docker compose -f test/compose.yml up -d --wait + working-directory: "${{ steps.inputs.outputs.gem_dir }}" - name: "Test Ruby 4.0" uses: ./.github/actions/test_gem with: @@ -301,8 +94,3 @@ jobs: yard: true coverage: true build: true - services: - rabbitmq: - image: rabbitmq:4.2.5-alpine@sha256:f654a30164ddb33f4b43e5469910e7aa7838ddb144e9d63f039c34544a6823a5 - ports: - - "5672:5672" diff --git a/docker-compose.yml b/docker-compose.yml index 3ff3bb892f..f60b29f308 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -124,13 +124,7 @@ services: - TEST_POSTGRES_DB=postgres depends_on: - postgres - tmpfs: [] working_dir: /app/instrumentation/pg/ - volumes: - - .:/app:cached - - bundle:/bundle - - postgres_socket:/tmp - - postgres_socket:/var/run/postgresql ex-instrumentation-net-http: <<: *base @@ -197,5 +191,3 @@ services: volumes: bundle: - redis_data: - postgres_socket: diff --git a/instrumentation/bunny/test/compose.yml b/instrumentation/bunny/test/compose.yml new file mode 100644 index 0000000000..0aa429e5cc --- /dev/null +++ b/instrumentation/bunny/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/rabbitmq/docker-compose.yml diff --git a/instrumentation/dalli/test/compose.yml b/instrumentation/dalli/test/compose.yml new file mode 100644 index 0000000000..c87c0d9ed3 --- /dev/null +++ b/instrumentation/dalli/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/memcached/docker-compose.yml diff --git a/instrumentation/mongo/test/compose.yml b/instrumentation/mongo/test/compose.yml new file mode 100644 index 0000000000..a7731cfda1 --- /dev/null +++ b/instrumentation/mongo/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/mongo/docker-compose.yml diff --git a/instrumentation/mysql2/test/compose.yml b/instrumentation/mysql2/test/compose.yml new file mode 100644 index 0000000000..0dc94b2ba9 --- /dev/null +++ b/instrumentation/mysql2/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/mysql/docker-compose.yml diff --git a/instrumentation/pg/test/compose.yml b/instrumentation/pg/test/compose.yml new file mode 100644 index 0000000000..0d16030deb --- /dev/null +++ b/instrumentation/pg/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/postgres/docker-compose.yml diff --git a/instrumentation/que/test/compose.yml b/instrumentation/que/test/compose.yml new file mode 100644 index 0000000000..0d16030deb --- /dev/null +++ b/instrumentation/que/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/postgres/docker-compose.yml diff --git a/instrumentation/racecar/test/compose.yml b/instrumentation/racecar/test/compose.yml new file mode 100644 index 0000000000..7dd61087dc --- /dev/null +++ b/instrumentation/racecar/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/kafka/docker-compose.yml diff --git a/instrumentation/rdkafka/test/compose.yml b/instrumentation/rdkafka/test/compose.yml new file mode 100644 index 0000000000..7dd61087dc --- /dev/null +++ b/instrumentation/rdkafka/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/kafka/docker-compose.yml diff --git a/instrumentation/redis/example/redis.rb b/instrumentation/redis/example/redis.rb index 0cf0d0d577..a8c797adb3 100644 --- a/instrumentation/redis/example/redis.rb +++ b/instrumentation/redis/example/redis.rb @@ -12,7 +12,7 @@ c.use 'OpenTelemetry::Instrumentation::Redis' end -port = ENV['TEST_REDIS_PORT'] || '16379' +port = ENV['TEST_REDIS_PORT'] || '6379' password = ENV['REDIS_PASSWORD'] || 'passw0rd' redis = Redis.new(port: port, password: password) redis.set('mykey', 'hello world') diff --git a/instrumentation/redis/test/compose.yml b/instrumentation/redis/test/compose.yml new file mode 100644 index 0000000000..ea18e31e3e --- /dev/null +++ b/instrumentation/redis/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/redis/docker-compose.yml diff --git a/instrumentation/redis/test/redis.conf b/instrumentation/redis/test/redis.conf index 83f8fb5d67..453d0f2e6b 100644 --- a/instrumentation/redis/test/redis.conf +++ b/instrumentation/redis/test/redis.conf @@ -3,4 +3,4 @@ requirepass passw0rd databases 16 appendonly no save "" -port 16379 +port 6379 diff --git a/instrumentation/redis/test/test_helper.rb b/instrumentation/redis/test/test_helper.rb index c04d0aff7f..c0493d7d27 100644 --- a/instrumentation/redis/test/test_helper.rb +++ b/instrumentation/redis/test/test_helper.rb @@ -11,7 +11,7 @@ require 'minitest/autorun' ENV['TEST_REDIS_HOST'] ||= '127.0.0.1' -ENV['TEST_REDIS_PORT'] ||= '16379' +ENV['TEST_REDIS_PORT'] ||= '6379' # global opentelemetry-sdk setup: EXPORTER = OpenTelemetry::SDK::Trace::Export::InMemorySpanExporter.new diff --git a/instrumentation/resque/test/compose.yml b/instrumentation/resque/test/compose.yml new file mode 100644 index 0000000000..ea18e31e3e --- /dev/null +++ b/instrumentation/resque/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/redis/docker-compose.yml diff --git a/instrumentation/resque/test/redis.conf b/instrumentation/resque/test/redis.conf index 83f8fb5d67..453d0f2e6b 100644 --- a/instrumentation/resque/test/redis.conf +++ b/instrumentation/resque/test/redis.conf @@ -3,4 +3,4 @@ requirepass passw0rd databases 16 appendonly no save "" -port 16379 +port 6379 diff --git a/instrumentation/resque/test/test_helper.rb b/instrumentation/resque/test/test_helper.rb index 40ce1c35ce..056a7d6fe8 100644 --- a/instrumentation/resque/test/test_helper.rb +++ b/instrumentation/resque/test/test_helper.rb @@ -29,7 +29,7 @@ redis_options = {} redis_options[:password] = ENV['TEST_REDIS_PASSWORD'] || 'passw0rd' redis_options[:host] = ENV['TEST_REDIS_HOST'] || '127.0.0.1' -redis_options[:port] = ENV['TEST_REDIS_PORT'] || '16379' +redis_options[:port] = ENV['TEST_REDIS_PORT'] || '6379' Resque.redis = redis_options class DummyJob diff --git a/instrumentation/ruby_kafka/test/compose.yml b/instrumentation/ruby_kafka/test/compose.yml new file mode 100644 index 0000000000..7dd61087dc --- /dev/null +++ b/instrumentation/ruby_kafka/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/kafka/docker-compose.yml diff --git a/instrumentation/sidekiq/test/compose.yml b/instrumentation/sidekiq/test/compose.yml new file mode 100644 index 0000000000..ea18e31e3e --- /dev/null +++ b/instrumentation/sidekiq/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/redis/docker-compose.yml diff --git a/instrumentation/sidekiq/test/redis.conf b/instrumentation/sidekiq/test/redis.conf index 83f8fb5d67..453d0f2e6b 100644 --- a/instrumentation/sidekiq/test/redis.conf +++ b/instrumentation/sidekiq/test/redis.conf @@ -3,4 +3,4 @@ requirepass passw0rd databases 16 appendonly no save "" -port 16379 +port 6379 diff --git a/instrumentation/sidekiq/test/test_helper.rb b/instrumentation/sidekiq/test/test_helper.rb index 9356e8b1a5..e3a17999da 100644 --- a/instrumentation/sidekiq/test/test_helper.rb +++ b/instrumentation/sidekiq/test/test_helper.rb @@ -34,7 +34,7 @@ # Sidekiq redis configuration ENV['TEST_REDIS_HOST'] ||= '127.0.0.1' -ENV['TEST_REDIS_PORT'] ||= '16379' +ENV['TEST_REDIS_PORT'] ||= '6379' redis_url = "redis://#{ENV['TEST_REDIS_HOST']}:#{ENV['TEST_REDIS_PORT']}/0" diff --git a/instrumentation/trilogy/test/compose.yml b/instrumentation/trilogy/test/compose.yml new file mode 100644 index 0000000000..0dc94b2ba9 --- /dev/null +++ b/instrumentation/trilogy/test/compose.yml @@ -0,0 +1,2 @@ +include: + - ../../../.docker/infra/mysql/docker-compose.yml