Lewati ke konten utama

Git-Push-Deploy Add-On

Ada sejumlah opsi untuk mendeploy kode sumber Anda dari repo Git ke container, termasuk redeploy seluruh container, redeploy instan melalui volumes atau pendekatan “git clone”. Namun, ketika datang ke otomatisasi proses ini dan bergerak menuju deployment berkelanjutan, banyak pengembang dapat menghadapi kompleksitas, karena mereka perlu tahu cara menggabungkan semua komponen aplikasi dengan titik interkoneksi yang diperlukan.

Secara khusus, di dunia container Anda harus mengelola build dari image stack Anda berurusan dengan kompleksitas tambahan dari pipeline CI/CD. Dan seluruh redeploy container mungkin bukan pendekatan terbaik jika Anda sering melakukan commit tanpa perubahan konfigurasi dalam sistem operasi, stack server aplikasi atau dependensinya.

GitHub CI/CD

Untuk memudahkan otomatisasi deployment, platform PaaS menyiapkan paket khusus Git-Push-Deploy untuk pengiriman kode ke dalam image container yang telah dibangun sebelumnya. Paket ini mengimplementasikan sejumlah konfigurasi untuk menyiapkan deployment otomatis dari perubahan yang di-commit dalam repositori sumber aplikasi Git Anda ke cloud, membuatnya tersedia untuk pengujian lebih lanjut dengan penundaan minimal.

Git-Push-Deploy Specifics

Paket Git-Push-Deploy dapat diintegrasikan dengan repositori GitHub dan GitLab. Ini dikembangkan untuk pengiriman pembaruan otomatis dalam sumber aplikasi Java, PHP, Ruby, Node.js, dan Python Anda dan dapat diterapkan ke semua certified stack templates server aplikasi.

Alur kerja bergantung pada bahasa pemrograman yang digunakan dalam proyek Anda:

  • untuk proyek berbasis Java, paket ini memulai pembuatan environment terpisah dengan Maven build node yang akan bertanggung jawab untuk interaksi dengan remote Git repository, memicu build aplikasi Anda dan deploymentnya ke server aplikasi
  • untuk aplikasi PHP/Ruby/Node.js/Python, paket ini mengatur pipeline untuk deployment proyek langsung ke konteks ROOT pada web server (di sini, perlu diperhatikan bahwa server aplikasi Ruby disediakan dengan mode deployment sebagai ganti konteks dalam dashboard, meskipun lokasi proyek sebenarnya sama)

Repository Pre-Configurations

Untuk instalasi add-on yang tepat, Anda perlu menyediakan Personal API Token untuk akun Git Anda. Ini memungkinkan paket untuk mengatur webhook untuk repositori yang bersangkutan, yang akan memulai redeployment aplikasi setiap kali ada perubahan yang diberikan ke kodenya.

Jadi mari kita buat satu, ikuti instruksi di bawah sesuai dengan VCS Git yang digunakan, yaitu GitHub atau GitLab.

Generating Access Token on GitHub

Untuk mendapatkan personal access token untuk GitHub akun Anda, navigasikan ke Settings > Developer Settings > Personal access tokens dan klik tombol Generate new token.

GitHub Generate New Token

Pada halaman yang terbuka, tentukan Note (deskripsi token) dan Select scopes (setidaknya untuk repo dan admin:repo_hook). Klik Generate token di bagian bawah halaman.

GitHub Token Scopes

Setelah dialihkan, salin dan simpan akses token yang ditampilkan di tempat lain (karena tidak dapat dilihat lagi setelah Anda meninggalkan halaman ini).

GitHub Copy Token

Setelah ini selesai, lanjutkan ke bagian Install Git-Push-Deploy Package langsung di bawah artikel ini.

Generating Access Token on GitLab

Untuk membuat personal access token on GitLab, masukkan Settings akun Anda dan beralih ke tab Access Tokens.

Di sini, tentukan optional token Name, tanggal Expiry (bisa dibiarkan kosong) dan centang ruang lingkup izin api.

GitLab Generating Access Token

Klik tombol Create Personal Access Token.

Pada halaman yang terbuka, salin dan simpan sementara nilai akses token Anda di tempat lain (karena Anda tidak akan bisa melihatnya lagi setelah meninggalkan halaman ini).

GitLab Copy Access Token

Sekarang, Anda siap untuk instalasi paket.

Extra Pre-Configurations for Java Projects

Jika menjalankan proyek berbasis Java, Anda perlu memastikan interaksi yang tepat dengan Maven build node dengan menambahkan file Project Object Model (POM) khusus ke strukturnya.

Jadi, buat file pom.xml di root repositori proyek Anda, dengan konten berikut sebagai dasar wajib:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<build>
<finalName>${project.artifactId}</finalName>
</build>
</project>

Di mana nilai opsional adalah:

  • groupId - grup dari proyek (contoh: nama perusahaan)
  • artifactId - nama dari proyek
  • version - versi aplikasi Anda

Semua parameter lainnya harus dibiarkan tidak berubah.

Install Git-Push-Deploy Package

Git-Push-Deploy package adalah sebuah add-on, jadi bisa diinstal hanya di atas environment. Kami telah menyiapkan dua environment terpisah dengan server aplikasi Tomcat dan Apache PHP untuk menunjukkan alur kerja untuk berbagai bahasa pemrograman.

Jika Anda akan menggunakan environment yang sudah dibuat sebelumnya, perhatikan bahwa paket akan menimpa aplikasi yang dideploy ke konteks ROOT. Jadi untuk menjaga aplikasi yang sudah dideploy, pindahkan ke konteks kustom. Kami merekomendasikan untuk membuat environment baru dan kemudian melanjutkan ke instalasi:

  1. Klik tombol Marketplace di panel atas dashboard dan cari add-on Git-Push-Deploy:

    Install Add-On

    Klik Install untuk melanjutkan.

  2. Dalam frame yang terbuka, tentukan detail berikut tentang repositori Anda dan environment target:

    • Git Repo URL - tautan HTTPS ke repositori aplikasi Anda (baik .git atau tampilan umum). Anda dapat me-fork aplikasi sampel Hello World kami untuk menguji alur
    • Branch - cabang proyek yang akan digunakan
    • User - masukkan login akun Git Anda
    • Token - tentukan akses token yang telah Anda buat sebelumnya untuk pembuatan webhook
    • Environment name - pilih environment tempat aplikasi Anda akan dideploy
    • Nodes - nama server aplikasi (diambil secara otomatis setelah memilih environment)
    Configure Add-On

    Klik Install untuk melanjutkan.

  3. Tunggu satu menit untuk platform mengambil sumber aplikasi Anda dari GitHub dan mengkonfigurasi webhook untuk continuous deployment.

    Deployed Add-On

    Close frame notifikasi ketika instalasi selesai.

  4. Bergantung pada tipe proyek, hasilnya akan sebagai berikut:

    • untuk infrastruktur berbasis Java, Anda akan melihat environment baru muncul di dashboard Anda dengan Maven build node di dalamnya; itu akan membangun dan mendepoy aplikasi Anda ke konteks ROOT pada server web setiap kali kode sumber diperbarui

      peringatan

      Bahwa mungkin memakan waktu bagi Maven untuk mengkompilasi proyek (meskipun instalasi paket itu sendiri sudah selesai), jadi Anda perlu menunggu beberapa menit sebelum meluncurkannya. Kemajuan operasi ini dapat dilacak secara real time melalui file vcs_update.log di Maven.

    • untuk infrastruktur berbasis PHP (dan bahasa lain yang didukung), aplikasi Anda akan dideploy langsung ke server ROOT yang dipilih

      peringatan

      Untuk server aplikasi Ruby, bagian similar Projects memberikan informasi tentang mode deployment yang digunakan (secara default development) daripada konteks, sedangkan lokasi aplikasi sebenarnya mengacu ke root server juga.

Untuk memulai aplikasi Anda, klik Open in Browser di sebelah server web Anda.

Hello World Application

Itulah! Sekarang versi baru aplikasi Anda secara otomatis dikirimkan ke server aplikasi setiap kali ada commit ke repositori.

Redeployment Policies for Different Stacks

Tabel di bawah ini mencantumkan perilaku server aplikasi yang berbeda setelah menerima kode yang diperbarui.

Stack NamePolicy
TomcatRestart
TomEERestart
GlassFishHot Redeploy via Server API
JettyRestart
JBossRestart
WildFlyRestart
SpringBootRestart
Apache PHPAdvanced ZDT
NGINX PHPAdvanced ZDT
Apache RubyGraceful Reload
NGINX RubyGraceful Reload
NodeJSRestart
PythonRestart

Untuk menghilangkan kemungkinan downtime aplikasi untuk server dengan kebijakan pembaruan Restart, segarkan skala keluar untuk dijalankan di beberapa container. Dalam kasus ini, pembaruan yang diperlukan akan diterapkan ke instance secara berurutan, dengan penundaan 30 detik secara default.

Test Automated Deploy from Git

Dan sekarang mari kita periksa bagaimana proses ini benar-benar bekerja. Lakukan beberapa penyesuaian kecil pada kode di repo dan pastikan semuanya otomatis:

  1. Klik Edit this file untuk beberapa item dalam repositori proyek Anda dan Commit changes ke dalamnya - misalnya, kami akan memodifikasi teks di halaman awal HelloWorld kami.

    Commit Changes
  2. Akibatnya, webhook yang sesuai akan dipicu untuk mendepoy perubahan yang dibuat ke lingkungan hosting Anda - rujuk ke bagian repository Settings > Webhooks untuk detailnya.

    GitHub Webhook

    Setelah mengklik string ini, Anda akan melihat daftar Recent Deliveries, yang dimulai oleh webhook, dan hasil eksekusinya.

  3. Sebagai titik pemeriksaan terakhir, kembali ke halaman aplikasi Anda dan segarkan (sambil mengingat bahwa mungkin perlu waktu tambahan bagi Maven untuk membangun dan mendepoy proyek berbasis Java Anda).

    Updated Application

Itulah! Seperti yang Anda lihat, modifikasi berhasil diterapkan, sehingga solusinya berfungsi seperti yang diharapkan.

Cukup perbarui kode Anda, lakukan commit seperti biasanya, dan semua perubahan akan didorong ke lingkungan PaaS Anda secara otomatis. Tidak perlu beralih antara proses atau melakukan pembaruan manual menghilangkan kesalahan manusia dan mempercepat waktu pemasaran untuk aplikasi Anda.

Butuh beberapa detail atau bantuan? Jangan ragu untuk meminta bantuan dalam komentar di bawah ini atau hubungi para ahli teknis kami di Stack Overflow.

Baca Juga