Deploy Laravel with CI/CD github-action

Hallo, Kali ini saya akan sharing mengenai CI/CD lagi, sebelumnya saya sudah share mengenai deploy laravel dengan CI/CD gitlab. secara tujuan sama yaitu melakukan otomatisasi deploy aplikasi laravel ke server dengan CI/CD. Menurut saya perbedaan dari CI/CD gitlab dan CI/CD github itu terletak pada susunan directory CI/CD, kemudian dari model file yml, dan juga runner jika menggunakan self-hosted atau runner local. tetapi secara flow sama saja. 

Hal yang perlu disiapkan

  • Sudah memiliki akun github.com dan sudah memiliki repositoy laravel
  • Aplikasi sudah di install sebelumnya di server dan sudah berjalan 


Langkah #1 : Login ke github, kemudian masuk ke project, lalu pilih setting -> Actions -> Runner -> New self-hosted runner

- Setelah itu akan muncul tahapan untuk instalasi runner, pastikan sesuai dengan system operasi yang akan digunakan, disini say amenggunakan linux ubuntu.


- Ikuti sesuai tahapan yang terdapat pada github, jika berhasil maka tampilanya akan seperti pada gambar berikut

- Jika sudah berhasil jalankan ./run.sh maka runner akan berjalan. Pastikan runner sudah terbaca di github.com seperti pada gambar berikut

Optional, jika ingin runner berjalan diebalakang layer atau ingin berjalan terus tanpa berhenti bisa menggunakan systemd nano /etc/system/system/github-runner.service

# /etc/systemd/system/github-runner.service

[Unit]
Description=GitHub Actions Runner
After=network.target 

[Service]
User=irfan
WorkingDirectory=/home/irfan/actions-runner  #sesuaikan dengan lokasi github-runner
ExecStart=/home/irfan/actions-runner/run.sh
Restart=always 

[Install]
WantedBy=multi-user.target

-  Lalu jalankan perintah berikut untuk memuali runner

#sudo systemctl daemon-reload
#sudo systemctl github-runner
#sudo systemctl status github-runner

Langkah #2 : Tambahkan ssh-key ke github

- Buat ssh-key jika belum ada

ssh-keygen -t ed25519 -C "github-deploy"

- Salin public key (~/.ssh/id_ed25519.pub) ke server:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your-server-ip

- Tambahkan private key (~/.ssh/id_ed25519) ke:

  • GitHub Repo > Settings > Secrets and variables > Actions > Secrets
  • Tambahkan secret dengan nama: SSH_PRIVATE_KEY

Langkah #3 : Buatlah file yml dan tempakan pada directory .github/worflows/deploy.yml, lalu isikan dengan perintah berikut

name: Deploy Laravel via SSH

 on:
  push:
    branches:
      - main 

jobs:
  deploy:
    name: Deploy to Server
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v4 

    - name: Set up SSH key
      run: |
        mkdir -p ~/.ssh
        echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
        chmod 600 ~/.ssh/id_ed25519
        ssh-keyscan -H 172.29.183.237 >> ~/.ssh/known_hosts

    - name: Deploy to Server
      run: |
        ssh user@172.29.183.237 << 'EOF'
          cd /home/irfan/laravel
          git pull origin main
          docker compose up -d --build
        EOF

Untuk susunan lokasi file pada github seperti ini, dan dalam worflos bisa membuat beberapa proses selain deploy.yml, misalkan scan.yml dll.


Langkah #4 : update perubahan ke repository agar dapat berjalan dengan proses ci/cd dari github-action, lalu cek proses deploy pada menu Action


- Jika prosesnya berhasil makan akan centang hijau, dan aplikasi di server akan update sesuai dengan versi yang ada di repository.

Mudah-mudahan bermanfaat. sekian dan terimakasih

Posting Komentar

0 Komentar