From 958bc8d6f886bf032a09859af1169a60e792ab7d 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 | 45 ++++++++++++++++++ 2 files changed, 128 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..eb73363 --- /dev/null +++ b/.github/workflows/frontend.yml @@ -0,0 +1,45 @@ +name: Frontend + +on: [ push, pull_request ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install pnpm + run: curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=8.14.1 sh - + - name: Install dependencies + run: pnpm install + - run: pnpm run test + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install pnpm + run: curl -fsSL https://get.pnpm.io/install.sh | env ENV="$HOME/.shrc" SHELL="$(which sh)" PNPM_VERSION=8.14.1 sh - + - name: Install dependencies + run: pnpm install + - run: pnpm run lint + + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install pnpm + run: curl -fsSL https://get.pnpm.io/install.sh | env ENV="$HOME/.shrc" SHELL="$(which sh)" PNPM_VERSION=8.14.1 sh - + - name: Install dependencies + run: pnpm install + - run: pnpm run format-check + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install pnpm + run: curl -fsSL https://get.pnpm.io/install.sh | env ENV="$HOME/.shrc" SHELL="$(which sh)" PNPM_VERSION=8.14.1 sh - + - name: Install dependencies + run: pnpm install + - name: Build + run: pnpm run build