Milind Daraniya

Continuous Integration with Laravel and GitHub Actions

Published January 31st, 2023 24 min read

Continuous Integration (CI) has become an integral part of modern software development workflows. It allows developers to automate the process of building, testing, and deploying code changes, ensuring a consistent and reliable development pipeline. In this post, we'll explore how to set up Continuous Integration for Laravel projects using GitHub Actions, a popular CI/CD platform provided by GitHub.

Prerequisites

Before we begin, make sure you have the following:

  1. A Laravel project hosted on GitHub.
  2. Composer installed on your local machine.

Setting up GitHub Actions Workflow

  1. Create the Workflow File

In your Laravel project's repository, create a .github/workflows directory if it doesn't exist. Then, add a new YAML file (e.g., laravel-ci.yml) inside this directory. This file will define your GitHub Actions workflow.

  1. Configure the Workflow

Add the following content to the laravel-ci.yml file:

name: Laravel CI

on:
  push:
    branches:
      - main

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '7.4'

    - name: Install dependencies
      run: composer install --no-interaction

    - name: Run tests
      run: vendor/bin/phpunit

This workflow will trigger on every push to the main branch. It sets up a PHP environment, installs the project dependencies using Composer, and runs PHPUnit tests.

  1. Commit and Push

Commit the laravel-ci.yml file to your repository and push it to trigger the CI workflow.

Monitoring CI Runs

After pushing your changes, go to the "Actions" tab on your GitHub repository to monitor the CI runs. You'll be able to see the progress of the workflow and any errors encountered during the build and test process.

Extending the Workflow

The above workflow is a basic setup to get you started with CI for Laravel. Depending on your project's requirements, you can extend it to include additional steps like:

  • Linting your code with phpcs to enforce coding standards.
  • Running static code analysis with tools like phpstan or psalm to catch potential issues.
  • Building and deploying your Laravel application to staging or production environments.

Caching Dependencies

To speed up the build process, you can cache Composer dependencies between workflow runs. The shivammathur/composer-cache action can be used to achieve this.

Environment Variables

If your Laravel project requires specific environment variables for the CI process, you can set them using GitHub Actions' Secrets feature. Go to your repository settings, then "Secrets," and add your environment variables.

Continuous Integration is a powerful practice that improves code quality, reduces manual errors, and streamlines the development workflow. With GitHub Actions, setting up CI for your Laravel projects becomes easy and convenient. As you expand your project's functionalities, you can customize the CI workflow to meet your specific needs.