name: laravel on: push: branches: [ main ] pull_request: jobs: tests: runs-on: ubuntu-latest services: postgres: # Docker Hub image image: postgres # Provide the password for postgres env: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres POSTGRES_DB: postgres # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps tcp port 5432 on service container to the host - 5432:5432 concurrency: group: 'run-tests' strategy: fail-fast: true matrix: php: [ 8.2 ] name: Run Feature & Unit tests (PHP ${{ matrix.php }}) steps: - name: Checkout code uses: actions/checkout@v2 - name: Get Composer cache directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v2 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - uses: actions/cache@v2 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: dom, curl, mbstring, pdo, sqlite, pdo_sqlite tools: composer:v2 coverage: none - name: Prepare the environment run: cp .env.example .env - name: Install composer dependencies run: composer install --prefer-dist --no-interaction --no-progress --ignore-platform-reqs --optimize-autoloader - name: Directory permissions run: chmod -R 777 storage bootstrap/cache - name: Run tests (Unit and Feature) run: ./vendor/bin/pest -p - name: "Archive log results" if: always() uses: actions/upload-artifact@v3 with: name: log results path: storage/logs/laravel.log retention-days: 3 - name: Install npm dependencies run: npm install --no-audit --no-progress --silent - name: Build client run: npm run build production-deploy: needs: [ tests ] if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push' runs-on: ubuntu-latest strategy: fail-fast: true matrix: php: [ 8.2 ] name: Triggers deploy through Laravel Vapor steps: - name: Checkout code uses: actions/checkout@v2 - name: Get Composer cache directory id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - uses: actions/cache@v2 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - uses: actions/cache@v2 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: dom, curl, mbstring, pdo, sqlite, pdo_sqlite tools: composer:v2 coverage: none - name: Prepare the environment run: cp .env.example .env - name: Install composer dependencies run: composer install --prefer-dist --no-interaction --no-progress --ignore-platform-reqs --optimize-autoloader - name: Directory permissions run: chmod -R 777 storage bootstrap/cache - name: Install npm dependencies run: npm install --no-audit --no-progress --silent - name: Build client run: npm run build - name: Deploy to production run: php vendor/bin/vapor deploy production --commit="${GITHUB_SHA}" --message="${GITHUB_REF}" env: VAPOR_API_TOKEN: ${{ secrets.VAPOR_API_TOKEN }}