Better mongodb support #640
Workflow file for this run
This file contains hidden or 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: 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 |