Implementasi CD di Laravel

Introduction

Pada dasarnya untuk Implementasi CD di Laravel kali ini hampir sama dengan yang saya post pada artikel-artikel sebelumnya yaitu bedanya disini saya menggunakan laravel dan sebelumnya menggunakan atau mengkombinasikannya dengan NodeJS, nah artikel sebelumnya saya sudah Post tentang cara implementasi CI di laravel.

Prepare

Baca juga artikel CI nya terlebih dahulu sebelum masuk ke konfigurasi CD berikut ini :

Implementasi CD di Laravel

Step 1 – Create Jobs Deploy

  • Masuk ke file yaml workflows kita kemudian tambahkan beberapa script berikut untuk memerintahkan pekerjaan apa saja yang akan dijalankan, dengan tambahan jobs sebagai berikut :
deploy:

    needs: [Testing]

    steps:
    - name : 'SSH to server gunawancicd'
      uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}
          port: ${{ secrets.PORT }}
          script: |
            cd /var/www/nomads
            ls -lah

a. Kita menambahakn jobs dengan nama deploy, lalu sebelum menjalankan jobs tersebut saya menambahkan array testing yaitu testing CI di artikel sebelumnya

b. Step dan flow yang kita gunakan untuk SSH ke server aplikasi kita , sudah saya jelaskan juga di artikel berikut ini terkait cara SSH menggunakan github actions https://igunawan.com/implementasi-ci-cd-with-github-actions-part2/

c. Command / variable untuk login SSH ke server

d. Script atau perintah yang kita biasa gunakan di server dengan pindah file directory dan check isi filenya

Step 2 – Push repo & Testing CD

  • Push repo ke Github
$git status
#On branch master
#Your branch is up to date with 'origin/master'.
#Changes not staged for commit:
#  (use "git add <file>..." to update what will be committed)
#  (use "git restore <file>..." to discard changes in working directory)
#        modified:   .github/workflows/node.js.yml
no changes added to commit (use "git add" and/or "git commit -a") 
$git add .
$git commit -m "Add Jobs Deploy"
$git push origin master
  • Check di Github Actions

Ada 2 jobs yang berjalan :

a. Jobs Testing

b. Jobs deploy yang baru saja kita tambahkan tadi

  • CD dengan memerintahkan github actions untuk menampilkan isi file berhasil

Step 3 – Add Command for Jobs Deploy

  • Setelah kita berhasil masuk ke server dan testing view folder, selanjutnya kita akan menambahkan beberapa syntax berikut di jobs deploy:
git pull origin master --> Pull repo yang kita update atau kita push ke github
composer update -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --> composer update jika kita melakukan perubahan pada aplikasi tsb
php artisan migrate  --> Reload PHP jika ada perubahan pada apliaksi tsb

  • Selanjutnya adalah lakukan perubahan code disalah satu file kita, contoh disini saya coba melakukan perubahan code contoh :
  • Kemudian Save & Push repo, ada dua yang kita modified di file workflows dan juga salah satu file yang kita rubah codenya.
$git status
#On branch master
#You have unmerged paths.
#  (fix conflicts and run "git commit")
#  (use "git merge --abort" to abort the merge)

#Unmerged paths:
#  (use "git add/rm <file>..." as appropriate to mark resolution)
#        deleted by us:   .github/workflows/laravel.yml

#Changes not staged for commit:
#  (use "git add <file>..." to update what will be committed)
#  (use "git restore <file>..." to discard changes in working directory)
        modified:   resources/views/pages/home.blade.php

no changes added to commit (use "git add" and/or "git commit -a")

$git add .
$git commit -m "Edit workflows & Update homepage"
$git push origin master

Step 4 – Testing & Check

  • Setelah di save & push selanjutnya kita check github actions apakah berhasil melakukan CD ke server kita

Kita lihat bahwa command yang kita berikan berjalan seperti kita melakukan atau mengeksekusi command tersebut di server secara manual

  • Selanjutnya chek website atau aplikasi yang sudah kita lakukan perubahan tersebut.

Finish, selamat mencoba.

Leave a Reply

Your email address will not be published. Required fields are marked *