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.
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.
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: 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