Bermigrasi ke plugin Gradle berbasis gcloud CLI

Jika sebelumnya Anda menggunakan plugin berbasis Java App Engine SDK (com.google.appengine.appengine-gradle ) dan ingin pindah ke Google Cloud CLI, bermigrasilah ke layanan berbasis gcloud CLI (com.google.cloud.tools.appengine-gradle ).

Manfaat plugin berbasis gcloud CLI

Mengupgrade ke plugin baru akan memberikan manfaat berikut:

  • Menggunakan kredensial autentikasi yang sama seperti semua perintah berbasis gcloud CLI lainnya, yang dihasilkan dari alur gcloud auth login standar.

  • Mendukung lingkungan fleksibel App Engine.

  • Mengupdate server pengembangan lokal secara otomatis sebagai bagian dari alur update gcloud CLI standar.

  • Mendukung deployment konfigurasi layanan App Engine (cron, queue, dos, dispatch), secara terpisah dari layanan Anda.

Perbedaan penting

Sebelum bermigrasi, perhatikan perbedaan penting berikut:

Dependensi gcloud CLI
Plugin lama berjalan tanpa dependensi lingkungan lokal tertentu, selain Java, tetapi plugin baru ini mengharuskan Anda menginstal gcloud CLI.
Tidak ada pembuatan dokumen penemuan Endpoint
Plugin baru ini tidak menghasilkan dokumen penemuan Endpoint, yaitu fitur yang tersedia di plugin terpisah. Menjalankan backend Endpoint tidak lagi memerlukan pembuatan file ini pada langkah build karena server kini membuatnya saat runtime. Sebaiknya gunakan plugin baru ini hanya jika Anda perlu membuat library klien, seperti untuk iOS atau Android. Pelajari plugin baru lebih lanjut dengan meninjau panduan Bermigrasi ke Framework Endpoint untuk App Engine.
Format file EAR tidak lagi didukung
Plugin baru ini tidak lagi mendukung format file EAR untuk menjalankan dan men-deploy beberapa layanan secara bersamaan.
Perintah deployment baru
Plugin lama memanggil perintah appcfg untuk men-deploy aplikasi, sedangkan plugin baru di-deploy menggunakan gcloud CLI baru.
Peningkatan Datanucleus JPA/JDO harus dikonfigurasi secara manual
Jika project Anda menggunakan peningkatan JPA/JDO Datanucleus gradle-appengine-plugin, Anda harus mengonfigurasi peningkatan Datanucleus secara manual setelah beralih ke plugin berbasis gcloud CLI. Lihat contoh dari Stackoverflow.
Android Studio tidak didukung
Anda dapat mengalihkan project Android Studio untuk menggunakan plugin baru ini, tetapi server pengembangan dan dukungan deployment App Engine Android Studio tidak berfungsi dengan plugin baru ini. Untuk menjalankan dan men-deploy aplikasi, Anda harus memanggil Gradle secara langsung.

Penggunaan file konfigurasi XML didukung, tetapi tidak YAML.

Bermigrasi ke plugin baru

  1. Hapus konfigurasi gradle-appengine-plugin lama dan impor dari file build.gradle Anda.

  2. Tambahkan plugin baru ke classpath dari bagian buildscript file build.gradle Anda:

    buildscript {
        repositories {
            mavenCentral()
        }
    
        dependencies {
            classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.0.1'
        }
    }
    
  3. Di root layanan Anda, jalankan perintah berikut untuk memverifikasi bahwa Anda dapat menjalankan aplikasi secara lokal:

    gradle appengineRun
    
  4. Di bagian buildscript dari file build.gradle, konfigurasikan deployment Anda dengan menentukan project ID dan versi Anda:

    appengine {
        deploy {
            version = 'v1'
            project = "your GCP project ID"
        }
    }
    

    Alat baru ini mengabaikan elemen aplikasi dan versi di file appengine-web.xml Anda.

  5. Di root layanan Anda, jalankan perintah berikut untuk memverifikasi bahwa Anda dapat men-deploy aplikasi:

    gradle appengineDeploy
    

Memigrasikan konfigurasi multi-layanan berbasis EAR

Plugin baru tidak mendukung pengemasan EAR. Sebagai gantinya, fitur ini mendukung untuk menjalankan beberapa layanan secara lokal tanpa langkah pengemasan khusus.

Untuk memigrasikan project Gradle berbasis EAR:

  1. Pilih layanan utama yang akan bertanggung jawab untuk menjalankan layanan lainnya. Anda harus memilih layanan default, tetapi layanan tersebut dapat berupa salah satu layanan yang dijalankan bersama.

  2. Dalam konfigurasi appengine Anda, ubah entri run.services agar menyertakan semua layanan yang harus dijalankan oleh server pengembangan lokal.

    Contoh struktur proyek:

    ../{projectRoot}/
      build.gradle
      settings.gradle (includes default-service & secondary-service)
           {your-default-service}/build.gradle {includes appengine-gradle-plugin}
              ….
           {your-default-service}/src/main/webapp/WEB-INF/appengine-web.xml
           {your-secondary-service}build.gradle {includes appengine-gradle-plugin}
              ….
           {your-secondary-service}/src/main/webapp/WEB-INF/appengine-web.xml
    

    Contoh buildscript build.gradle:

    appengine {
        run {
            // configure the app to point to the right service directories
            services = [
                    projectAsService(project),
                    projectAsService(":another-module")
            ]
        }
    }
    
    // helper method to obtain correct directory and set up dependencies
    def getExplodedAppDir(Project serverProject) {
        // if not 'this' module, then do some setup.
        if (serverProject != project) {
            // make sure we evaluate other modules first so we get the right value
            evaluationDependsOn(serverProject.path)
            // make sure we build "run" depends on the other modules exploding wars
            project.tasks.appengineRun.dependsOn serverProject.tasks.explodeWar
        }
        return serverProject.tasks.explodeWar.explodedAppDirectory
    }
    

Perintah Gradle berbasis App Engine SDK vs. gcloud CLI

Tabel berikut menunjukkan berbagai cara memanggil plugin Gradle, bergantung pada apakah Anda menggunakan plugin Gradle berbasis App Engine SDK atau plugin Gradle berbasis gcloud CLI.

Tindakan Berbasis App Engine SDK Berbasis gcloud CLI
Menjalankan aplikasi secara lokal appengine:devserver appengineRun
Men-deploy aplikasi, versi, atau layanan baru. appengine:update appengineDeploy
Menetapkan versi aplikasi default. appengine:set_default_version traffic set layanan aplikasi gcloud atau migrasi versi aplikasi gcloud
Mengupdate cron job aplikasi. appengine:update_cron appengineDeployCron
Mengupdate konfigurasi pengiriman aplikasi. appengine:update_dispatch appengineDeployDispatch
Mengupdate konfigurasi perlindungan DoS aplikasi. appengine:update_dos appengineDeployDos
Memperbarui definisi task queue aplikasi. appengine:update_queues appengineDeployQueue
Memperbarui Indeks Datastore. appengine:update_indexes appengineDeployIndex
Menghapus indeks yang tidak digunakan dari aplikasi. appengine:vacuum_indexes Pembersihan indeks datastore gcloud
Memulai versi modul yang ditentukan. appengine:start_module_version versi aplikasi gcloud dimulai
Menghentikan versi modul yang ditentukan. appengine:stop_module_version versi aplikasi gcloud berhenti
Melakukan rollback update yang sedang berlangsung. appengine:rollback versi aplikasi gcloud dimulai, versi aplikasi gcloud berhenti

Langkah selanjutnya

  • Setelah berhasil bermigrasi ke plugin baru, Anda dapat menguji dan deploy aplikasi Anda.