Iman Sugirman

Laravel Test dan Deploy Menggunakan Github Action

07 Juli 2023

Menggunakan Github Action untuk Test dan Deploy Ke Cloud Server Digitalocean atau Lainnya. berikut akan saya share ketika menggunakan atau memanfaatkan github action untuk test, pint dan Deploy Laravel ke Server secara otomatis.

Buat Workflow Github file

Langkah pertama buat file workflow github dengan nama deploy.yaml di folder .github/workflows jika belum ada foldernya silahkan buat sehingga nanti akan seperti ini .github/workflows/deploy.yaml dan isinya seperti ini :

name: Laravel Github Action on: pull_request: branches: - master jobs: lint: name: Run Pint Laravel On Production runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 2 - name: Laravel Pint Action uses: aglipanci/laravel-pint-action@0.1.0 with: preset: laravel

Penjelasan Proses diatas adalah Github akan melakukan Pint untuk merapihkan kode atau linter kode kita. disini saya menggunakan github action Laravel Pint Action package.

Tambahkan Proses Pest Action

Untuk Selanjutnya kita buat proses Github action untuk mengetest kode dengan menambahkan baris seperti berikut :

tests: name: Run Test with Pest on Production needs: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv coverage: none - name: Run Composer run: composer install -n --prefer-dist - name: Prepare Laravel Application run: | cp .env.ci .env php artisan key:generate - name: Run Pest run: php artisan test

Proses diatas adalah untuk mengetest menggunakan Pest package untuk memudahkan kita dalam melakukan Test Unit atau test lainnya. Jika anda belum tau cara menggunakan pest silahkan kunjungi tutorial saya Laravel Pest Untuk Test Api dan jangan lupa buat file .env.ci untuk environtment yang akan kita gunakan dan sesuaikan.

Deploy Github Action

deploy: name: Run Test with Pest on Production needs: lint runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Cache dependencies uses: actions/cache@v1 with: path: ~/.composer/cache/files key: dependencies-composer-${{ hashFiles('composer.json') }} - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 7.3 extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite,pdo_sqlite coverage: none - name: Install Composer dependencies run: composer install --prefer-dist --no-interaction --no-suggest - name: Install NPM dependencies run: npm install - name: Compile assets run: npm run production - name: Execute tests run: vendor/bin/phpunit --verbose - name: Deploy if: github.ref == 'refs/heads/master' run: curl ${{ secrets.ENVOYER_HOOK }}?sha=${{ github.sha }}

Proses diatas akan melakukan Proses untuk deploy ke server menggunakan Envoyer untuk mengetahui cara Deploy menggunakan Laravel Envoy bisa ikuti tutorial Deploy Laravel Menggunakan Envoy

Jika digabungkan kodenya maka akan menjadi begini :

name: Laravel Github Action on: pull_request: branches: - master jobs: lint: name: Run Pint Laravel On Production runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 2 - name: Laravel Pint Action uses: aglipanci/laravel-pint-action@0.1.0 with: preset: laravel tests: name: Run Test with Pest on Production needs: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv coverage: none - name: Run Composer run: composer install -n --prefer-dist - name: Prepare Laravel Application run: | cp .env.ci .env php artisan key:generate - name: Run Pest run: php artisan test deploy: name: Run Test with Pest on Production needs: lint runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Cache dependencies uses: actions/cache@v1 with: path: ~/.composer/cache/files key: dependencies-composer-${{ hashFiles('composer.json') }} - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 7.3 extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite,pdo_sqlite coverage: none - name: Install Composer dependencies run: composer install --prefer-dist --no-interaction --no-suggest - name: Install NPM dependencies run: npm install - name: Compile assets run: npm run production - name: Execute tests run: vendor/bin/phpunit --verbose - name: Deploy if: github.ref == 'refs/heads/master' run: curl ${{ secrets.ENVOYER_HOOK }}?sha=${{ github.sha }}

Dengan menggunakan Github Action maka anda akan dimudahkan dalam memanage dan maintenance kode di server, karna akan terstruktur dan lebih rapih lagi.

Demikian tutorial Menggunakan Github Action untuk Test dan Deploy Ke Cloud Server Digitalocean atau Lainnya