From 45de9ec2270362e1d6b114cb22063cdcedc149e1 Mon Sep 17 00:00:00 2001 From: Phil Bates Date: Wed, 17 Jan 2024 09:00:33 +0000 Subject: [PATCH] GitHub: Add initial backend & frontend workflows There is definitely room for improvement here (e.g. script duplication across jobs, passing artifacts from one job to the next, caching dependencies etc) but this is a simple starting point. --- .github/workflows/backend.yml | 83 ++++++++++++++++++++++++++++++++++ .github/workflows/frontend.yml | 55 ++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 .github/workflows/backend.yml create mode 100644 .github/workflows/frontend.yml diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml new file mode 100644 index 0000000..b1009ac --- /dev/null +++ b/.github/workflows/backend.yml @@ -0,0 +1,83 @@ +name: Backend + +on: [ push, pull_request ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + - uses: actions/checkout@v4 + - 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 --prefer-dist + - 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: Run tests +# env: +# DB_CONNECTION: sqlite +# DB_DATABASE: database/database.sqlite + run: composer run test + + phpstan: + runs-on: ubuntu-latest + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + - uses: actions/checkout@v4 + - 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 --prefer-dist + - name: Generate key + run: php artisan key:generate + - name: Directory Permissions + run: chmod -R 777 storage bootstrap/cache + - name: Run phpstan + run: composer run phpstan + + php-cs-fixer: + runs-on: ubuntu-latest + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + - uses: actions/checkout@v4 + - 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 --prefer-dist + - name: Generate key + run: php artisan key:generate + - name: Directory Permissions + run: chmod -R 777 storage bootstrap/cache + - name: Run php-cs-fixer + run: composer run php-cs-fixer -- --dry-run + + phpcs: + runs-on: ubuntu-latest + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + - uses: actions/checkout@v4 + - 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 --prefer-dist + - name: Generate key + run: php artisan key:generate + - name: Directory Permissions + run: chmod -R 777 storage bootstrap/cache + - name: Run phpcs + run: composer run phpcs diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml new file mode 100644 index 0000000..88e003d --- /dev/null +++ b/.github/workflows/frontend.yml @@ -0,0 +1,55 @@ +name: Frontend + +on: [ push, pull_request ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 8.14.1 + - name: Install dependencies + run: pnpm install + - name: Run tests + run: pnpm run test + env: + # See: https://github.com/laravel/vite-plugin/issues/164 + LARAVEL_BYPASS_ENV_CHECK: 1 + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 8.14.1 + - name: Install dependencies + run: pnpm install + - name: Run lint + run: pnpm run lint + + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 8.14.1 + - name: Install dependencies + run: pnpm install + - name: Check formatting + run: pnpm run format-check + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 8.14.1 + - name: Install dependencies + run: pnpm install + - name: Build + run: pnpm run build