Setup CI/CD untuk PHP Application di Azure VM menggunakan Hosted Agent pada Azure DevOps

Oktoyadi
ecomindo-dev
Published in
5 min readApr 17, 2020

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)

Pembuatan Personal Access Token (PAT)

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.

Form Pendaftaran Hosted Agent Pada Azure DevOps

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.

Membuat Pipeline Untuk Mendeploy Perubahan File
# 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/php
trigger:
- master
pool:
name: ‘PPCloudTestAgent’
variables:
phpVersion: 7.2
steps:- 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.

Membuat Release Pipeline Yang Dibuat

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.

Menentukan Agent Pool yang akan menjalankan Job

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)’.

Menentukan Task yang akan dijalankan oleh Agent

Setelah itu pilihlah Variables untuk menentukan folder file production di server/ virtual machine.

Menentukan variabel yang digunakan dalam proses Release Pipeline

Setelah disimpan selanjutnya lakukan Create Release.

Release Pipeline yang terbentuk

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’.

Mengubah suatu file dalam Repositories

Bukalah Pipelines untuk melihat perubahan file tersebut menjadi sebuah pipeline yang dijalankan.

Pipeline sedang dijalankan
Pipeline selesai dijalankan dan berhasi

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.

File aplikasi di server telah mengalami perubahan

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.

--

--