Setup CI/CD untuk PHP Application di Azure VM menggunakan Hosted Agent pada Azure DevOps
Pembahasan ini merupakan bagian kedua dari dua bagian yang membahas implementasi CI/ CD untuk PHP Web Application menggunakan Hosted Agent pada Azure DevOps.
Bagian Pertama: Setup PHP Web Application pada Azure Virtual Machine
Manajemen Source Code
Pada kondisi ini, kita telah memiliki dua set aplikasi. Satu yang berada di komputer local/ developer, dan satunya lagi berada di server/ virtual machine Azure.
Untuk mengelola source code aplikasi yang dimiliki, perusahaan umumnya menggunakan platform seperti Git. Dalam implementasi ke dalam Azure DevOps, pastikan, bahwa source code yang akan disimpan dalam Azure Repositories adalah versi terakhir yang digunakan.
Persiapan Project Pada Azure DevOps
Buatlah sebuah project baru dalam Organisasi Azure kita
Setelah project terbentuk, masuklah ke dalam menu Repositories.
Bila kita sudah memiliki repository di suatu tempat, kita dapat mengimport repository tersebut. Bila kita hanya memiliki repository di komputer local, maka kita dapat menambahkan remote repository kita dari komputer lokal.
Untuk menambahkan remote repository, anda dapat menggunakan aplikasi Git, atau text editor yang telah mendukung repository. Dalam contoh ini kita dapat menggunakan Visual Studio Code. Untuk menambahkan remote repository, dapat membuka console menggunakan menu View > Terminal.
# Set remote repository kita di Azure DevOps
git remote add origin https://[yourlogin]@dev.azure.com/[yourorganization]/CloudDevOps/_git/CloudDevOps# Push file-file aplikasi ke remote repository
git push -u origin --all
Penyiapan Hosted Agent
Penyiapan Agent Pool pada Azure DevOps
Sebelum menambahkan agent, kita perlu membuat terlebih dahulu Personal Access Token (PAT) dengan membuka menu User Settings (terdapat di kanan atas halaman)
Simpanlah token tersebut, karena akan digunakan pada saat mengatur konfigurasi Hosted Agent pada server/ virtual machine.
Selanjutnya membuat Agent Pool melalui Organization Settings > Agent Pool > Add Pool. Kemudian masuklah ke dalam Agent Pool yang telah dibuat, untuk menambahkan agent.
Masuklah ke dalam server/ virtual machine. Kemudian buatlah folder yang akan digunakan untuk menginstall hosted agent. Jalankan perintah berikut ini.
mkdir myagent && cd myagent ~/myagent$ tar zxvf ~/Downloads/vsts-agent-linux-x64–2.165.2.tar.gz
Setelah agent terpasang, selanjutnya adalah melakukan konfigurasi agen
./config.sh
Pada saat mengatur konfigurasi agen, PAT yang kita buat di atas akan digunakan selain nama agen dan alamat URL project DevOps kita. Setelah konfigurasi dilengkapi, jalankan agent.
./run.sh
Misalnya agen yang kita daftarkan bernama agen1, maka setelah dijalankan agen tersebut akan berstatus Online.
Untuk menjalankan CI/ CD, user yang menjalankan agent perlu mendapatkan permission read dan write ke folder instalasi agent, dalam contoh di atas adalah /myagent.
sudo chmod 777 -R myagent
Implementasi CI/ CD
Membuat Pipeline
Setelah pengaturan environment siap digunakan, langkah selanjutnya adalah membuat Pipelines untuk mendukung Continuous Integration (CI). Buatlah pipeline baru melalui Pipelines > Create Pipelines.
# PHP
# Test and package your PHP project.
# Add steps that run tests, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/phptrigger:
- masterpool:
name: ‘PPCloudTestAgent’variables:
phpVersion: 7.2steps:- task: CopyFiles@2
inputs:
Contents: ‘**’
TargetFolder: $(Build.ArtifactStagingDirectory)
OverWrite: true
preserveTimestamp: true- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: MyBuildOutputs
Script YAML di atas adalah script untuk memindahkan perubahan yang dilakukan pada Azure DevOps Repositories ke server/ virtual machine. Misalnya pipelines yang dibuat bernama “Build Artifact Master”.
Membuat Release Pipeline
Agar pipeline di atas dapat dijalankan , kita perlu membuat release melalui Pipelines > Releases > New Release Pipelines.
Tambahkan artifact dari Pipeline yang dibuat pada langkah sebelumnya, yaitu Build Artifact Master. Dan namai stage misalnya dengan ‘Release to Server’. Kemudian kita tambahkan agent job dan task untuk menjalankan pipeline copy file. Pada saat mendefinisikan agent job, pilihlah agent pool yang sudah pernah dibuat.
Kemudian tambahkan task baru dengan menekan tanda (+) pada kolom Agent Job. Pilihlah Copy Files dari daftar task di sampingnya. Kemudian isilah source folder dengan ‘$(System.DefaultWorkingDirectory)/_Build Artifact Master/MyBuildOutputs’ dan target folder dengan ‘$(TargetDir)’.
Setelah itu pilihlah Variables untuk menentukan folder file production di server/ virtual machine.
Setelah disimpan selanjutnya lakukan Create Release.
Setelah release terbentuk lakukan deployment untuk release tersebut.
Pengaturan Pipeline, Release, dan Hosted Agent sudah selesai. Berikutnya adalah menguji proses Continuous Integration (CI) dengan mencoba mengubah file aplikasi. Bukalah Repositories, kemudian bukalah suatu file untuk diubah, setelah itu lakukan ‘Commit’.
Bukalah Pipelines untuk melihat perubahan file tersebut menjadi sebuah pipeline yang dijalankan.
Perubahan yang kita lakukan telah disimpan sebagai artifak. Selanjutnya kita lakukan deployment. Bukalah Pipelines > Release, kemudian pilihlah release pipeline yang telah kita buat sebelumnya, yaitu ‘Release to Server’, kemudian Create Release. Proses ini akan menjadi item release ke n.
Kemudian pilihlah Release-n yang terbentuk, di dalam detail release tersebut, pilihlah Deploy.
Setelah dijalankan, proses deployment perubahan ke server akan dilakukan. Untuk melihat hasil perubahannya, bukalah aplikasi web pada server/ virtual machine melalui web browser.
Setelah proses deployment dilakukan secara manual, kita dapat melakukan automasi pada Pipeline dan Release, sehingga proses CI/ CD dalam projek pengembangan aplikasi berjalan secara menyeluruh.