In this tutorial we're going to setup github actions to run tests on a merge of a Laravel Project
What Are GitHub Actions?
GitHub actions allow you to automate and configure development workflows on your repository based on multiple types of events that happen on your repository.
You can use this to create a automated CI/CD workflow for your project.
Run Laravel Tests
We're going to create a new GitHub action that will install the Laravel project, install dependencies and run phpunit tests on the project.
To create a new workflow you will need to add new file inside
.github/workflows/laravel.yml and add the below yaml to this file and push to your repository.
First we need to give the workflow a new by using
Next we define what events we want to listen on to trigger this workflow, for this workflow we want to run tests when pull requests are merged into
master or when they're pushes into
on: push: branches: [ master ] pull_request: branches: [ master ]
When this is triggered it will run through the list of
jobs in the workflow. For a Laravel project we need to setup the project and then run the phpunit tests.
name: Laravel on: push: branches: [ master ] pull_request: branches: [ master ] jobs: laravel-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" - name: Install Dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress - name: Generate key run: php artisan key:generate - name: Directory Permissions run: chmod -R 777 storage bootstrap/cache - name: Create Database run: | mkdir -p database touch database/database.sqlite - name: Compile assets run: | npm install npm run production - name: Execute tests (Unit and Feature tests) via PHPUnit env: DB_CONNECTION: sqlite DB_DATABASE: database/database.sqlite CACHE_DRIVER: array SESSION_DRIVER: array QUEUE_DRIVER: sync run: vendor/bin/phpunit
The next time you push into the repository GitHub will build your project and run the phpunit tests on your application.