Skip to content

Better mongodb support #640

Better mongodb support

Better mongodb support #640

Workflow file for this run

name: build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
services:
mysql:
image: mysql
env:
MYSQL_ROOT_PASSWORD: password
ports:
- 3306:3306
postgres:
image: postgres
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: password
POSTGRES_DB: testbench
ports:
- 5432:5432
mongodb:
image: mongo:7.0
env:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: password
MONGO_INITDB_DATABASE: testbench
ports:
- 27017:27017
redis:
image: redis
ports:
- 6379:6379
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 10
- name: Setup PHP with MongoDB extension
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mongodb
coverage: xdebug
- name: Validate composer.json and composer.lock
run: composer validate --strict
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Check coding style via ECS
run: vendor/bin/ecs check
- name: Run static analysis via PHPStan
run: vendor/bin/phpstan analyse src tests
- name: Create databases
run: |
touch testbench.sqlite
mysql -e 'CREATE DATABASE testbench' -h127.0.0.1 -uroot -ppassword -P ${{ job.services.mysql.ports[3306] }}
# - name: Run test suite (MySQL)
# run: vendor/bin/phpunit --testdox --testsuite feature
# env:
# APP_KEY: base64:i3g6f+dV8FfsIkcxqd7gbiPn2oXk5r00sTmdD6V5utI=
# DB_CONNECTION: mysql
# DB_DATABASE: testbench
# DB_HOST: 127.0.0.1
# DB_PORT: 3306
# DB_USERNAME: root
# DB_PASSWORD: password
# QUEUE_CONNECTION: redis
# QUEUE_FAILED_DRIVER: "null"
# REDIS_HOST: 127.0.0.1
# REDIS_PASSWORD:
# REDIS_PORT: 6379
# - name: Run test suite (PostgreSQL)
# run: vendor/bin/phpunit --testdox --testsuite feature
# env:
# APP_KEY: base64:i3g6f+dV8FfsIkcxqd7gbiPn2oXk5r00sTmdD6V5utI=
# DB_CONNECTION: pgsql
# DB_DATABASE: testbench
# DB_HOST: 127.0.0.1
# DB_PORT: 5432
# DB_USERNAME: root
# DB_PASSWORD: password
# QUEUE_CONNECTION: redis
# QUEUE_FAILED_DRIVER: "null"
# REDIS_HOST: 127.0.0.1
# REDIS_PASSWORD:
# REDIS_PORT: 6379
- name: Check MongoDB connection
run: |
timeout 10 bash -c 'until nc -z 127.0.0.1 27017; do sleep 1; done' || (echo "MongoDB not reachable" && exit 1)
echo "MongoDB is up and running"
- name: Test MongoDB connectivity
run: |
php -r "try { \$manager = new MongoDB\Driver\Manager('mongodb://root:password@127.0.0.1:27017/?authSource=admin'); \$command = new MongoDB\Driver\Command(['ping' => 1]); \$manager->executeCommand('admin', \$command); echo 'MongoDB connection successful\n'; } catch (Exception \$e) { echo 'MongoDB connection failed: ' . \$e->getMessage() . '\n'; exit(1); }"
- name: Run test suite (MongoDB)
timeout-minutes: 10
run: vendor/bin/phpunit --testdox --testsuite feature --debug --stop-on-error --stop-on-failure
env:
APP_KEY: base64:i3g6f+dV8FfsIkcxqd7gbiPn2oXk5r00sTmdD6V5utI=
DB_CONNECTION: mongodb
DB_DATABASE: testbench
DB_HOST: 127.0.0.1
DB_PORT: 27017
DB_USERNAME: root
DB_PASSWORD: password
DB_AUTHENTICATION_DATABASE: admin
QUEUE_CONNECTION: redis
QUEUE_FAILED_DRIVER: "null"
REDIS_HOST: 127.0.0.1
REDIS_PASSWORD:
REDIS_PORT: 6379
- name: Upload laravel.log if tests fail
if: failure()
uses: actions/upload-artifact@v4
with:
name: laravel-log
path: vendor/orchestra/testbench-core/laravel/storage/logs/laravel.log
- name: Code Coverage
run: |
vendor/bin/phpunit --testdox --coverage-clover=coverage.clover --testsuite unit
vendor/bin/ocular code-coverage:upload --format=php-clover coverage.clover
env:
APP_KEY: base64:i3g6f+dV8FfsIkcxqd7gbiPn2oXk5r00sTmdD6V5utI=
DB_CONNECTION: sqlite
DB_DATABASE: testbench.sqlite
QUEUE_CONNECTION: sync
XDEBUG_MODE: coverage