✨ Add the ./run
command to use the power of Bun
#45
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
permissions: | |
contents: read | |
on: ['push', 'pull_request'] | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [ubuntu-latest] | |
bun: [1.0] | |
experimental: [false] | |
name: 🍱 Build assets using Bun-${{ matrix.bun }} on ${{ matrix.os }} | |
steps: | |
- name: 🚚 Get latest code | |
uses: actions/checkout@v4 | |
- name: 🎉 Setup Bun | |
uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: ${{ matrix.bun }} | |
- name: ✨ Install JavaScript dependencies | |
run: bun install | |
- name: ✅ Check code style | |
run: bun check | |
- name: 🧪 Test components | |
run: bun run test | |
- name: 📦️ Compile assets | |
run: bun run build | |
- name: 🚚 Upload distribution files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist-files | |
path: public/static | |
serve: | |
needs: build | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [ubuntu-latest] | |
php: [8.1, 8.2] | |
dependencies: [lowest, highest] | |
experimental: [false] | |
name: 🌍 Serve with PHP-${{ matrix.php }} ${{ matrix.dependencies }} on ${{ matrix.os }} | |
steps: | |
- name: 🚚 Get latest code | |
uses: actions/checkout@v4 | |
- name: 📂 Cache dependencies | |
id: composer-cache | |
run: | | |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-dependencies-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} | |
restore-keys: | | |
${{ runner.os }}-dependencies-php-${{ matrix.php }}-composer- | |
- name: 🎉 Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
extensions: curl, dom, gd, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer, zip | |
ini-values: error_reporting=E_ALL | |
tools: composer:v2, php-cs-fixer, phpunit, vimeo/psalm | |
coverage: pcov | |
- name: ✨ Install PHP dependencies | |
run: | | |
composer install -q --no-ansi --no-cache --no-interaction --no-scripts --no-progress --prefer-dist | |
composer update --${{ matrix.dependency-version }} --no-interaction --prefer-dist | |
- name: 🔧 Configure environment | |
run: | | |
cp .env.example .env.ci | |
set -e | |
sed -i "s|^\(APP_ENV=\s*\).*$|\1ci|" .env.ci | |
printf "The complete `.env.ci` ... \n\n" | |
cat .env.ci | |
- name: 🔒️ Generate Key | |
run: | | |
set -e | |
php artisan key:generate --env=ci | |
php artisan queue:restart --env=ci | |
- name: 🔐 Directory Permissions | |
run: | | |
chmod -R 777 storage bootstrap/cache | |
chmod -R 777 storage/ | |
- name: 🧹 Clear Caches | |
run: set -e && php artisan optimize:clear --env=ci | |
- name: ✅ Check code lint | |
run: composer check | |
- name: ⚗️ Run static analysis | |
run: composer analyse | |
- name: ⚡️ Optimize Stuffs | |
run: set -e && php artisan optimize --env=ci | |
- name: 🚚 Download distribution files | |
uses: actions/download-artifact@v3 | |
with: | |
name: dist-files | |
path: public/static | |
- name: 📂 List public/ | |
run: ls public/static | |
- name: 🧪 Test features | |
run: | | |
set -e && php artisan serve --env=ci > /dev/null 2>&1 & | |
composer test | |
- name: 💚 Test the whole application | |
run: composer debug |