Auto Deploy CodeIgniter dengan Gitlab-CI dan Heroku
Kehadiran GIT sangat membantu kita dalam pengembangan aplikasi, apalagi kita yang bekerja dalam sebuah tim. Pengembangan software saat ini sudah mulai banyak beralih menggunakan Continuous Integration (CI), Continuous Delivery (CD) dan Continuous Deployment (CD) atau lebih sering disebut dengan istilah CI/CD.
Pada kesempatan kali ini, saya akan berbagi cara tentang mendeploy aplikasi PHP dengan framework CodeIgniter ke Heroku. Saya anggap kalian yang datang membaca tulisan saya ini telah memahami apa itu Git, Gitlab dan Heroku.
Persiapan:
Langkah:
Dalam tulisan ini, cara deploy aplikasi CodeIgniter akan saya urutkan menjadi beberapa step seperti ini:
# Pengaturan Heroku
Pada langkah ini, kita akan mengambil nama projek dan API KEY dari akun Heroku yang telah kita buat. Jadi saya harap teman-teman sudah memiliki akun Heroku, bila belum memiliki akun Heroku silahkan daftar melalui heroku.com.
- Langkah pertama, silahkan persiapkan projek kalian dengan membuat projek baru ataupun menggunakan projek yang sudah ada.
Sebagai contoh, saya membuat projek baru dengan nama codeigniter-autodeploy.
Nantinya, projek yang baru saja kita buat akan beralamat namaprojek.herokuapp.com. Pada projek yang baru saja saya buat maka projek akan beralamat http://codeigniter-autodeploy.herokuapp.com/.
- Kemudian, ambil API-KEY dari akun Heroku kita dengan cara masuk ke Account Settings yang terdapat pada panel user akun Heroku kalian.
- Selanjutnya pada bagian bawah akan terlihat API Key dari akun Heroku kalian, salin dan simpan API Key kalian.
HEROKU_APP: codeigniter-autodeploy
HEROKU_API_KEY: gd54434-xxxx-xxxx-xxxx-0r4ls923s9
# Pengaturan Gitlab Repositori
Baiklah, pada tahap ini kita menyiapkan sebuah repositori yang ada pada Gitlab kita. Bila belum memiliki repositori, silahkan buat terlebih dahulu dan isikan project dari CodeIgniter atau kalian bisa menggunakan repositori yang sudah ada yang berisi aplikasi CodeIgniter.
Kemudian, simpan credential dari Heroku yang telah kita dapatkan tadi yaitu HEROKU_APP dan HEROKU_API_KEY ke dalam Gitlab CI/CD Variable. Caranya, buka pengaturan CI/CD pada repositori yang kalian gunakan kemudian atur seperti gambar berikut:
# Deploy Aplikasi CodeIgniter
Langkah terakhir kita akan mengatur otomatisasi deployment (auto deploy) aplikasi CodeIgniter kita pada Heroku. Jadi setiap ada kodingan yang ter-push ke repositori, maka Heroku akan menggunakan kodingan yang terbaru sesuai dengan apa yang terdapat pada repositori. Untuk membuat auto deploy ini, kita cukup membuat file .gitlab-ci.yml pada root repositori.
Berikut adalah script .gitlab-ci.yml yang kita gunakan untuk membuat auto deploy pada projek CodeIgniter kita:
# Auto Deploy CodeIgniter with Gitlab by Kang Sunu
# https://www.kangsunu.web.id/2020/03/auto-deploy-codeigniter-dengan-gitlab.html
heroku:
stage: deploy
only:
- master
script:
- apt-get update -qy
- apt-get install -y ruby
- gem install dpl
- dpl --provider=heroku --app=$HEROKU_APP --api-key=$HEROKU_API_KEY
Perlu kita ketahui, Heroku membutuhkan Web Server untuk menjalankan script PHP yang terdapat pada repositori kita. Maka dari itu, kita perlu menambahkan script untuk menginstal Web Server di Heroku terlebih dahulu dengan cara menambahkan file Procfile pada root repositori. Pada umumnya Web Server yang digunakan yaitu Apache2 dan Nginx, berikut adalah script Procfile yang digunakan untuk menambahkan Apache2 ataupun Nginx pada Heroku.
Procfile untuk Apache2:
web: vendor/bin/heroku-php-apache2
Sedangkan untuk Nginx, kita membutuhkan dua file konfigurasi, yaitu Procfile dan heroku.nginx.conf (opsional) untuk mengaktifkan rewrite url.
Procfile untuk Nginx:
web: vendor/bin/heroku-php-nginx -C heroku.nginx.conf
heroku.nginx.conf
index index.html index.php;
location / {
# try to serve file directly, fallback to rewrite
try_files $uri $uri/ @rewriteapp;
}
location @rewriteapp {
# rewrite all to app.php
rewrite ^(.*)$ /index.php/$1 last;
}
location ~ ^/(app|app_dev|config)\.php(/|$) {
try_files @heroku-fcgi @heroku-fcgi;
internal;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
Semua proses konfigurasi pada tahap ini sudah selesai semua, sentuhan terakhir yaitu menambahkan file konfigurasi yang telah kita buat tadi ke dalam repositori projek kita dengan cara push.
Source code konfigurasi pada tulisan saya ini bisa dilihat di Github saya disini https://github.com/sunuazizrahayu/codeigniter-heroku-autodeploy.
Demikian tulisan saya mengenai pembuatan auto deploy Codeigniter di Heroku menggunakan Gitlab CI/CD, semoga tulisan saya ini bermanfaat dan menjadi amal baik saya. Terima kasih dan sampai jumpa di tulisan saya selanjutnya.