Bahan-bahan yang diperlukan :
- Akun Azure DevOps
- Domain yang live + Manage DNSnya
- Komputer/Laptop untuk development dengan git terinstall
- Server/VPS terinstall docker & docker compose
- Webserver nginx + mysql live
Persyaratan kemampuan :
- Mampu dan mau belajar sungguh-sungguh.
- Konsentrasi
- Positif thinking
- Mindset optimis
Skenario :
- CI : Setiap tindakan git push ke repository akan mentriger Azure DevOps untuk membuild package yang berasal dari repository terupdate kemudian menguploadnya ke Azure Pipelines
- CD : Setiap publikasi package akan mentrigger sebuah release ke server production. Sebagai tambahan release ini akan berjalan menggunakan docker container dengan image php
Langkah CI :
- Siapkan domain live + manage dns lalu setup domain/subdomain yang diinginkan
- Masuk ke Azure DevOps, pilih project lalu pilih pipelines. Buat pipelines baru.
- Tersedia banyak template, tapi kita pilih yang empty jobs saja.
- Untuk menyiapkan proses CI (Continues Integration) maka kita perlu menyiapkan sebuah Agent Pool (komputer host) yang akan melakukan pekerjaan CI. Agent ini sebenarnya sudah disediakan oleh Azure DevOps tapi kalau mau pakai server sendiri juga bisa. Pada tutorial ini kami menggunakan Agent Pool yang disediakan Azure DevOps secara gratis, tersedia beberapa sistem operasi [Ubuntu, MacOS, Windows], sesuai kebutuhan saya memilih Ubuntu.
- Setelah memilih agent kita akan setup Agent agar otomatis berjalan ketika ada sebuah update baru ke repository [github, azure repos, bitbucket, dll] tempat kita menaruh coding aplikasi. Nah inilah yang dinamakan Continues Integration.
- Setelah Agent Pool sudah siap, maka kita akan menambahkan job kepada Agent Pool. Untuk kasus ini, karena sample menggunakan bahasa pemrograman PHP, maka yang perlu dilakukan oleh Agent Pool hanyalah membuat .zip file update terbaru dari repository dan mempublishnya ke Pipelines.
- Job Pertama yaitu membuat .zip file dari repository kita dengan perintah bash :
- Job Kedua yaitu mempublish hasil .zip aplikasi kita ke Azure Pipelines, biasanya hasil publish ini disebut Artifact.
- Dari kedua job di atas maka langkah Continues Integration sudah selesai, setiap ada update terbaru ke repository kita maka Agent Pool akan melakukan build aplikasi dalam bentuk .zip dan diupload ke Artifact.
zip -r $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip ./* -x '*.git*'$(Build.ArtifactStagingDirectory) adalah variable nama direktori yang akan kita zip, sedangkan $(Build.BuildId) adalah versi build aplikasi sekaligus nama file zip kita. Kedua variable ini otomatis dibuat oleh Azure DevOps
Lanjut Langkah CD :