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
Hapus konfigurasi
gradle-appengine-plugin
lama dan impor dari filebuild.gradle
Anda.Tambahkan plugin baru ke
classpath
dari bagianbuildscript
filebuild.gradle
Anda:buildscript { repositories { mavenCentral() } dependencies { classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.0.1' } }
Di root layanan Anda, jalankan perintah berikut untuk memverifikasi bahwa Anda dapat menjalankan aplikasi secara lokal:
gradle appengineRun
Di bagian
buildscript
dari filebuild.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.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:
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.
Dalam konfigurasi
appengine
Anda, ubah entrirun.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 |