# Primary CI checks for Rollbar-PHP-Laravel. # We're checking that logging within Laravel passes through the Rollbar Laravel # integration when that integration is properly installed. We make this check # for all supported combinations of Laravel, Rollbar, and PHP. We are not # checking that messages are properly sent to Rollbar: that's handled by # rollbar-php. # # Test with act: # brew install act # act -P ubuntu-latest=shivammathur/node:latest # # @see https://github.com/nektos/act/issues/329 name: Rollbar-PHP-Laravel CI, master # Fire this action on pushes to main branch (master) as well as other branches # or pull requests, excluding those in the next/ lineage. Also, run every day # at 02:42 GMT -- this catches failures from transitive dependencies. on: push: branches: - next/7.x/** tags: - v7.* pull_request: branches: - next/7.x/** schedule: - cron: '42 2 * * *' jobs: # Check that this runs on all combinations of Laravel we claim to support. laravel-tests: strategy: matrix: os: [ubuntu] php: [8.1, 8.0, 7.4, 7.3, 7.2] laravel: [^9, ^8, ^7, ^6] exclude: # Laravel 6 requires php 7.2-8.0, so exclude all php versions after 8.1 - laravel: ^6 php: 8.1 # Laravel 7 requires php 7.2-8.0, so exclude all php versions after 8.1 - laravel: ^7 php: 8.1 # Laravel 8 requires php 7.3+, so exclude all PHP versions prior to 7.3 - laravel: ^8 php: 7.2 # Laravel 9 requires php ^8.0.2, so exclude all PHP versions prior to 8.0.2 - laravel: ^9 php: 7.2 - laravel: ^9 php: 7.3 - laravel: ^9 php: 7.4 env: ROLLBAR_TOKEN: "ad865e76e7fb496fab096ac07b1dbabb" name: Laravel ${{ matrix.laravel }} on PHP ${{ matrix.php }} (${{ matrix.os }}) runs-on: ${{ matrix.os }}-latest steps: - name: Checkout the PR Branch uses: actions/checkout@v3 if: ${{ github.event_name == 'pull_request' }} - name: Checkout the v7 Branch uses: actions/checkout@v2 if: ${{ github.event_name == 'schedule' }} with: # Set the branch to our version branch not master when scheduled. ref: 'next/7.x/main' - name: Install PHP and composer environment uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: curl - name: Create Laravel test app run: composer create-project laravel/laravel rollbar-test-app ${{ matrix.laravel }} - name: Install that code using Composer rigged to look in the parent directory id: composer_require working-directory: rollbar-test-app continue-on-error: true run: | composer config repositories.local '{"type":"path", "url":".."}' composer config minimum-stability dev composer config prefer-stable true composer require rollbar/rollbar-laravel -W - name: Setup .env working-directory: rollbar-test-app run: | echo "ROLLBAR_TOKEN=${ROLLBAR_TOKEN}" >> .env echo "GITHUB_RUN_ID=${GITHUB_RUN_ID}" >> .env chmod 400 .env - name: Configure Laravel to use Rollbar and configure Rollbar to invoke logging callback working-directory: rollbar-test-app run: | > config/logging.php echo ' "rollbar", "channels" => array ( "rollbar" => array ( "driver" => "monolog", "handler" => \Rollbar\Laravel\MonologHandler::class, "access_token" => env("ROLLBAR_TOKEN"), "level" => "debug", // use the check_ignore filter to capture log messages for verification "check_ignore" => "check_ignore", ) ) ); ' touch app/helpers.php > tmp-composer.json jq '.autoload += { "files": [ "app/helpers.php" ] }' composer.json mv tmp-composer.json composer.json composer dump-autoload - name: Define logging callback that invokes when Laravel logs through Rollbar working-directory: rollbar-test-app run: | > app/helpers.php echo ' tests/Feature/LoggingTest.php echo 'assertFileExists(temp_file(), "Rollbar check_ignore handler not invoked, suggesting an issue integrating Rollbar into Laravel."); $this->assertSame($value, file_get_contents(temp_file()), "check_ignore file did not contain expected value, suggesting file left by another process."); } } ' - name: Invoke the Laravel test suite working-directory: rollbar-test-app run: | ./vendor/bin/phpunit