Successfully reported this slideshow.
Your SlideShare is downloading. ×

GDG DevFest Medan 2022

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Is PHP Dead
Is PHP Dead
Loading in …3
×

Check these out next

1 of 21 Ad

More Related Content

Advertisement

GDG DevFest Medan 2022

  1. 1. Dolly Aswin Software Director, Xtend Indonesia Add Speaker Photo Here CI/CD Laravel App on Compute Engine
  2. 2. Continuous Delivery - Make release process safe, low- risk, and quick. - Require CI - Automate deployments across multiple environment and targets Continuous Integration (CI) - Automate build and test workflows on changes to source code - Merge changes regularly to detect problems early and often What Is CI/CD?
  3. 3. Common CI Tools . Source Code Management CI Server
  4. 4. Common CD Tools .
  5. 5. Why CI/CD? - Ensure changes to code base are properly tracked, tested, and built - Automation to minimize human error - Easily track source of bugs and ability to roll back - Happier development & operations team
  6. 6. Setting Up CI/CD For Laravel App on Compute Engine
  7. 7. Workflow Cloud Source Repositories Cloud Build Compute Engine Build & Deploy Github Source Code Application Cloud SQL Bash Script
  8. 8. 1. Add Github Repository To Cloud Source Repository Configuration
  9. 9. Configuration
  10. 10. 2. Create Trigger In Cloud Build Configuration
  11. 11. Configuration
  12. 12. Configuration
  13. 13. 3. cloudbuild.yaml Configuration
  14. 14. 4. Bash Script for Building & Deploying Configuration
  15. 15. Trigger List Result
  16. 16. Build Status Result
  17. 17. Dashboard Result
  18. 18. “The most powerful tool we have as developers is automation - Scott Hanselman”
  19. 19. Resources - CI/CD On Google Cloud (Google Cloud Tech) https://www.youtube.com/watch?v=orZEBSXbmFU - Google Cloud Website https://cloud.google.com/
  20. 20. Thank You! https://github.com/dollyaswin/gdg-fest-mdn-be https://github.com/dollyaswin/gdg-fest-mdn-fe

Editor's Notes

  • Bismillah Assalamu’alaykum warohmatullahi wabarokatuh
    Selamat siang kawan - kawan semua

    Terima kasih kepada para organizer, yang sudah memberikan kesempatan kepada saya untuk berbagi di acara google cloud Dev Fest 2022 Medan pada hari ini.

    Sebelumnya, saya akan memperkenalkan diri terlebih dahulu
    Nama saya Dolly Aswin Harahap Dan saya asli Medan, dan berdomisili di Medan juga
    Saat ini… saya bekerja di Xtend Indonesia, sebagai Software Director.
    Yang mana Xtend Indonesia sendiri adalah salah satu perusahaan IT di kota Medan. Yang memiliki layanan software development, software & hardware integaration dan juga security system. Di Xtend kita sangat terbuka bagi kawan - kawan yang mau datang belajar pemrograman kita dipersilahkan. Karena kita di sana ada beberapa middle level programmer yang bisa mengarahkan kawan - kawan untuk belajar pemrograman.
    Okay, itu sekilas tentang saya dan Xtend Indonesia.
    Kita lanjut ke materi, pada sesi ini saya akan membahas tentang CI/CD Laravel Application di Google Cloud Compute Engine

    CI/CD sudah tau ya?
    Continues Integration / Continuous Delivery

    Compute Engine sendiri adalah layanan dari Google Cloud untuk Virtual Machine (yg biasa disebut VM) Instance
    Sama seperti Amazon EC2 atau Droplet di Digital Ocean.

    Sebenarnya pembahasan CI/CD di google cloud ini sudah banyak dibahas di youtube, maupun berupa artikel
    Baik yang berbahasa Indonesia, ataupun bahasa Inggris.
    Dan kali ini, saya akan membahas cara membuat CI/CD yang paaaaaling sederhana di Google Cloud
    Yang cara ini sebenarnya bisa diaplikasian di layanan - layanan lain seperti

    Bitbucket Pipeline
    Gitlab Pipeline
    Ataupun Github Action

    Tapi…., ketika kita menggunakan infrastructure google cloud
    Let say, mulai dari DNS (google cloud DNS), VM (compute engine) ataupun database (Cloud SQL),
    Alangkah baiknya, CI/CD nya juga kita setup di Google Cloud.

    Kenapa?
    Yang pertama pastinya lebih cepat, karena layanan - layanan yang kita gunakan berada dalam 1 ekosistem yang sama. Dan pastinya latencynya juga lebih kecil. Dan hasilnya prosesnya jadi lebih cepat dibanding menggunakan layanan - layanan yg saya sebutkan sebelumnya
    Bitbucket Pipeline
    Gitlab Pipeline
    Ataupun Github Action

    Okay, kita lanjut

  • Seperti yang dijelaskan sebelumnya, CI adalah singkatan dari Continuous Integration
    Yang di dalamnya ada proses - proses berikut
    Otomasi build dan testing, setiap ada perubahan pada source code. Akan tetapi itu tergantung konfigurasi yang kita tentukan, di branch mana saja CI ini akan dilaksanakan.
    Menyatukan perubahan tersebut secara rutin, dan dari otomasi build & testing tadi kita dapat mendeteksi problem, lebih awal dan sesering mungkin



    Dan di dalam Continuous Delivery
    Terdapat proses - proses berikut

    Membuat proses rilis aman, tidak beresiko dan cepat
    Dan Continuous Delivery ini memerlukan Continuous Integration. Artinya hasil dari continuous integration inilah yang akan di-delivery. Kalau tidak ada CI, jadi apa yang mau di deliver
    Otomasi deployment ke beberapa environment (baik itu development, staging, ataupun production) dan target


    Kita lanjut ke Tools - tools yang umum digunakan di dalam Continues Integration
  • Untuk CI Tools ini, dibagi menjadi 2 bagian

    Source Code Management (SCM)
    Ini sudah umum ya, Kita ambil beberapa contoh (github, github enterprise, bitbucket, mercurial, perforce, gitlab), dan di Google Cloud kita akan gunakan Cloud Source Repository untuk membuat setting CI nanti
    Continuous Integration Server
    Kita ambil beberapa contoh mulai dari yang legend seperti Jenkins, Travis CI , Circle CI (kalau kalian sadar, beberapa tahun yang lalu Circle CI ini sering iklan di Youtube), tapi belakangan ini sudah gak ada lagi.
    (Dan Travis CI ini menarik ya, dia sangat populer di kalangan project open source, karena dia memberikan layanannya gratis kepada project - project open source.
    Tapi sejak desember 2020 dia berhenti memberikan layanannya free kepada project open source. Sehingga banyak project open source yang beralih menggunakan Github Action saja untuk melakukan proses build.
    Nah, emangnya untuk apa project open source menggunakan Travis CI ini? Ada yang tau?
    Tujuannya adalah untuk build source code.
    Dalam build itu biasanya ada bbrp proses

    Pengecekan Code sesuai coding standard atau tidak
    Penggabungan/Merge code
    Menjalankan unit testing
    Dijalankan lah unit test itu di environment yang berbeda - beda. Contohnya kita ambil Laravel yang akan kita gunakan hari ini. Laravel di-build di versi PHP yang berbeda. Ada 7.1, 7.2, 7.3, 74, dan PHP 8. Untuk memastikan bahwa laravel ini akan jalna di versi PHP yang tadi itu

    Makanya kita bisa lihat di poject open source itu ada label Build pass (biasanya warna hijau) atau failed (warna merah). Nanti kawan - kawan bisa cek langsung di halaman githubnya Laravel, atau project - project open source yang lain.

    Okay, ini untuk CI Tools yang umum, kita lanjut ke CD Tools yang umum digunakan
  • CD Tools yang umum di gunakan
    Ada Puppet, GoCD, Ada jenkins lagi, ada chef, dan ada bash script

    Semua tools ini digunakan untuk automasi delivery ataupun deployment

    Nah, di sini ada jenkins lagi. Padahal tadi dia sudah masuk ke dalam CI Tools
    Kalau di dalam CI process jenkins, digunakan untuk melakukan build dan testing, di sini jenkins digunakan juga untuk melakukan deployment. Karena memang jenkins bisa digunakan untuk keduanya.

    Dan pada setting deployment aplikasi laravel nanti kita gunakan Bash Script. Yang mana nanti Bash Script ini juga digunakan untuk CI & CD

    Kita lanjut ke slide berikutnya mengapa menggunakan CI/CD
  • Mengapa menggunakan CI/CD

    Untuk memastikan perubahan di dalam code itu benar - benar bisa di-trace (ini merupakan bagian dari Source Code Management tadi yaitu github, bitbucket, dan seterus), kemudian di-test dan bisa di-built dengan sukses
    Otomasi meminimalisir human error. Ini memang kenyataan ya, yang namanya human error pasti ada. Bayangin aja kalau kita mesti bolak - balik upload code ke development server. Kalau gak ada proses otomasi seperti CI/CD ini, kan bisa repot. Tapi kalau ada proses otomasi seperti ini kan jadi gampang, setiap 1 jam sekali upload source code ke development server juga gak masalah
    Mudah untuk menelusuri asal bug, dan dengan CI/CD kita bisa mengembalikan code ke kondisi sebelum terjadinya masalah
    Nah dengan begini, proses upload code ke server jadi mudah. Team juga jadi senang, karena kalau tidak ada otomasi antar department bisa saling ribut. Contoh Front End minta api terbaru dari Back End, sedangkan developer back end masih sibuk dengan kerjaannya. Gitu juga yang mobile, perlu minta api terbaru. Kalau ada proses seperti ini kan semua jadi senang, dan tidak ada blocking kerjaan. Dan itu yang utama
  • Ada yang pernah dengar nama Martin Fowler?
    Martin fowler ini Programmer juga dan banyak berkontribusi di dunia software development
    Beliau menulis beberapa buku, yang paling fenomenal itu judulnya Extreme Programming dan Refactoring
    Dan beliau juga terlibat di dalam membuat Agile Manifesto untuk Software Development

    Dan menurut beliau ini, Continuous delivery artinya kita yakin bahwasanya setiap perubahan itu dapat di-deploy ke Production.
    Sedangkan Continuous Deployment itu artinya, kita bisa melakukan deploy setiap ada perubahan
  • Scott Hanselman ini juga programmer, penulis buku, podcast kalian bisa cari namanay
  • Terima kasih
    Tetap semangat
    Tetap sehat selalu
    Dan tetap waras juga tentunya
    Mudah - mudahan kita bisa ketemu lagi di lain waktu

×