tests #2278
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Tests' | |
on: | |
pull_request: | |
push: | |
branches: | |
- '**' | |
tags-ignore: | |
- '*.*' | |
jobs: | |
get_packages: | |
name: Get packages | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set Up PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.2 | |
coverage: none | |
- uses: actions/checkout@v2 | |
- name: Get Packages | |
id: get_json | |
run: echo "::set-output name=json::$(bin/get-packages)" | |
- name: Output Packages | |
run: echo "${{ steps.get_json.outputs.json }}" | |
outputs: | |
matrix: ${{ steps.get_json.outputs.json }} | |
split_testing: | |
name: Testing ${{ matrix.package.name }} separately (${{ matrix.stability }}) | |
needs: get_packages | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
package: ${{ fromJson(needs.get_packages.outputs.matrix) }} | |
stability: [ prefer-lowest, prefer-stable ] | |
services: | |
rabbitmq: | |
image: rabbitmq:3.11-management-alpine | |
env: | |
RABBITMQ_DEFAULT_USER: guest | |
RABBITMQ_DEFAULT_PASS: guest | |
ports: | |
- 5672:5672 | |
mysql: | |
image: mysql:8.0 | |
env: | |
MYSQL_ROOT_PASSWORD: "secret" | |
MYSQL_USER: "ecotone" | |
MYSQL_PASSWORD: "secret" | |
MYSQL_DATABASE: "ecotone" | |
DB_PORT: 3306 | |
options: >- | |
--health-cmd="mysqladmin ping" | |
--health-interval=10s | |
--health-timeout=10s | |
--health-retries=5 | |
ports: | |
- 3306:3306 | |
postgres: | |
image: simplycodedsoftware/postgres:16.1 | |
env: | |
POSTGRES_USER: ecotone | |
POSTGRES_PASSWORD: secret | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 5432:5432 | |
localstack: | |
image: localstack/localstack:2.2.0 | |
env: | |
SERVICES: 'sqs,sns' | |
ports: | |
- "4566:4566" | |
- "4510-4559:4510-4559" | |
redis: | |
image: redis:7-alpine | |
ports: | |
- '6379:6379' | |
kafka: | |
image: bitnami/kafka:latest | |
env: | |
KAFKA_CFG_NODE_ID: '0' | |
KAFKA_CFG_PROCESS_ROLES: 'controller,broker' | |
KAFKA_CFG_LISTENERS: 'PLAINTEXT://:9092,CONTROLLER://:9093' | |
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT' | |
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: '0@kafka:9093' | |
KAFKA_CFG_CONTROLLER_LISTENER_NAMES: 'CONTROLLER' | |
ports: | |
- 9092:9092 | |
env: | |
RABBIT_HOST: amqp://127.0.0.1:5672 | |
SQS_DSN: sqs:?key=key&secret=secret®ion=us-east-1&endpoint=http://127.0.0.1:4566&version=latest | |
REDIS_DSN: redis://127.0.0.1:6379 | |
KAFKA_DSN: 127.0.0.1:9092 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set Up PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.2 | |
extensions: grpc, rdkafka | |
coverage: pcov | |
- name: Enable merge-plugin | |
run: composer global config --no-interaction allow-plugins.wikimedia/composer-merge-plugin true && composer global require wikimedia/composer-merge-plugin | |
working-directory: ${{ matrix.package.directory }} | |
- name: Install dependencies | |
run: composer update --${{ matrix.stability }} --no-interaction | |
working-directory: ${{ matrix.package.directory }} | |
env: | |
COMPOSER_ROOT_VERSION: 'dev-main' | |
- name: Wait for Kafka to be ready | |
run: | | |
while ! nc -z localhost 9092; do | |
sleep 1 | |
done | |
- name: Run tests on Postgres | |
run: composer tests:ci | |
working-directory: ${{ matrix.package.directory }} | |
env: | |
COMPOSER_ROOT_VERSION: 'dev-main' | |
DATABASE_DSN: pgsql://ecotone:secret@127.0.0.1:5432/ecotone | |
SECONDARY_DATABASE_DSN: mysql://ecotone:secret@127.0.0.1:3306/ecotone | |
APP_DB_HOST: 127.0.0.1 | |
APP_DB_PORT: 5432 | |
APP_DB_DRIVER: pdo_pgsql | |
- name: Run tests on Mysql | |
run: composer tests:ci | |
working-directory: ${{ matrix.package.directory }} | |
env: | |
COMPOSER_ROOT_VERSION: 'dev-main' | |
DATABASE_DSN: mysql://ecotone:secret@127.0.0.1:3306/ecotone | |
SECONDARY_DATABASE_DSN: pgsql://ecotone:secret@127.0.0.1:5432/ecotone | |
APP_DB_HOST: 127.0.0.1 | |
APP_DB_PORT: 3306 | |
APP_DB_DRIVER: pdo_mysql |