Skip to main content

CI/CD

Continuous integration (CI) and continuous delivery (CD), also known as CI/CD, embodies a culture, operating principles, and a set of practices that application development teams use to deliver code changes more frequently and reliably.

Pandora uses GitHub Actions for validating and testing Pull Request.

Here's an overview of the used workflow so that any newcomer can be familiar with CI/CD.

Workflow File

The workflow file is situated in the .github/workflows/test.yml file. Whenever a pull request is created, the workflow runs the pipeline to validate the pull request running Lint test, PHPUnit test. You can extend or modify it according to your need.

The test result can be viewed in the pull request or in the Actions tab.

Github Actions

test.yml

name: 'Test'

on:
pull_request:
branches:
- main

paths-ignore:
- website/**

workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php: [8.2]

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

- name: Setup PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}

- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "::set-output name=dir::$(composer config cache-files-dir)"

- name: Restore cache
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-

- name: Install dependencies
run: composer install --no-progress --prefer-dist --optimize-autoloader

- name: Prepare Laravel application
run: |
cp .env.example .env
php artisan key:generate

- name: Run Laravel lint test
run: composer lint:test

- name: Create sqlite
run: touch database/testing.sqlite

- name: Run Testsuite
run: vendor/bin/phpunit
env:
DB_CONNECTION: sqlite
DB_DATABASE: database/testing.sqlite

For more info, visit the GitHub Actions docs.