Saya mempertimbangkan untuk menggunakan Firebase sebagai MBaaS, namun saya tidak dapat menemukan solusi yang dapat diandalkan untuk masalah berikut:
Saya ingin menyiapkan dua lingkungan Firebase yang terpisah, satu untuk pengembangan dan satu untuk produksi, tetapi saya tidak ingin melakukan salinan fitur secara manual (mis. Pengaturan konfigurasi jarak jauh, aturan pemberitahuan, dll.) Antara lingkungan pengembangan dan produksi .
Apakah ada alat atau metode yang bisa saya andalkan? Menyiapkan konfigurasi jauh atau aturan notifikasi dari awal dapat menjadi tugas yang menakutkan dan terlalu berisiko.
Ada saran? Apakah ada pendekatan yang lebih baik daripada memiliki dua lingkungan yang terpisah?
Sebelum Anda mengirim jawaban lain untuk pertanyaan yang menjelaskan cara mengatur akun Firebase yang terpisah: ini bukan pertanyaannya, bacalah lagi. Pertanyaannya adalah: bagaimana cara TRANSFER mengubah antara akun dev dan prod yang terpisah atau solusi yang lebih baik daripada menyalin secara manual di antara mereka.
Jawaban:
Seperti yang semua orang tunjukkan - Anda membutuhkan lebih dari satu proyek / database.
Tetapi untuk menjawab pertanyaan Anda mengenai perlunya dapat menyalin pengaturan / data dll dari pengembangan hingga produksi. Saya memiliki kebutuhan yang sama persis. Beberapa bulan dalam pengembangan dan pengujian, saya tidak ingin menyalin data secara manual.
Hasil saya adalah mem-backup data ke ember penyimpanan, dan kemudian mengembalikannya dari sana ke database lain. Ini cara yang cukup kasar untuk melakukannya - dan saya melakukan backup / restore seluruh database - tetapi Anda mungkin dapat melihat ke arah itu untuk cara yang lebih terkontrol. Saya belum menggunakannya - ini sangat baru - tetapi ini mungkin solusi: Modul NPM firestore-ekspor-impor
Sunting : Firestore backup / ekspor / impor info di sini Cloud Firestore Mengekspor dan Mengimpor Data
Jika Anda menggunakan Firebase RTDB, dan bukan Firestore - dokumentasi ini mungkin membantu: Firebase Backup Otomatis
Anda perlu mengatur izin dengan benar untuk memungkinkan akses database produksi Anda ke ember penyimpanan yang sama dengan pengembangan Anda. Semoga berhasil.
sumber
Jika Anda menggunakan firebase-tools ada perintah
firebase use
yang memungkinkan Anda mengatur proyek yang Anda gunakanfirebase deploy
firebase use --add
akan memunculkan daftar proyek Anda, pilih satu dan itu akan meminta Anda untuk alias. Dari sana Anda dapatfirebase use alias
danfirebase deploy
akan mendorong ke proyek itu.Dalam penggunaan pribadi saya, saya memiliki aplikasi dan aplikasi saya sebagai proyek di konsol Firebase.
sumber
Saat ini saya tidak menggunakan Firebase, tetapi mempertimbangkannya seperti diri Anda sendiri. Sepertinya cara yang harus dilakukan adalah membuat proyek yang sepenuhnya terpisah di konsol. Ada posting blog yang merekomendasikan hal ini di situs Firebase lama, sepertinya sudah dihapus sekarang. https://web.archive.org/web/20160310115701/https://www.firebase.com/blog/2015-10-29-managing-development-environmentments.html
Juga diskusi ini merekomendasikan hal yang sama: https://groups.google.com/forum/#!msg/firebase-talk/L7ajIJoHPcA/7dsNUTDlyRYJ
sumber
Cara saya melakukannya:
Dengan cara ini saya tidak diharuskan untuk memelihara JSON saya.
sumber
Blogpost ini menjelaskan pendekatan yang sangat sederhana dengan tipe debug dan rilis build.
Pendeknya:
=> lihat blogpost untuk deskripsi terperinci.
Jika Anda ingin menggunakan rasa yang berbeda, baca blogpost yang luas ini dari blog firebase resmi. Ini berisi banyak informasi berharga.
Semoga itu bisa membantu!
sumber
Anda perlu mengelola berbagai jenis bangunan
Ikuti ini
Pertama, buat proyek baru di Firebase console, beri nama id sebagai YOURAPPNAME-DEV
Klik tombol "Tambahkan aplikasi android" dan buat aplikasi baru. Beri nama com.yourapp.debug, misalnya. File google-services.json baru akan diunduh secara otomatis
Di bawah direktori src proyek Anda, buat direktori baru dengan nama "debug" dan salin file google-services.json baru di sini
Di build.gradle tingkat modul Anda, tambahkan ini
Sekarang ketika Anda membangun membangun debug google-services.json dari folder "debug" akan digunakan dan ketika Anda akan membangun dalam mode rilis google-services.json dari direktori root modul akan dipertimbangkan.
sumber
src
untuk buildType seperti dijelaskan di sini developers.google.com/android/guides/…Untuk mengatasi ini untuk situasi saya, saya membuat tiga proyek Firebase, masing-masing dengan proyek Android yang sama (yaitu sama
applicationId
tanpa menggunakan yangapplicationIdSuffix
disarankan oleh orang lain). Ini menghasilkan tiga file google-services.json yang saya simpan di server Continuous Integration (CI) saya sebagai variabel lingkungan kustom . Untuk setiap tahap pembuatan (dev / staging / prod), saya menggunakan file google-services.json yang sesuai.Untuk proyek Firebase yang terkait dengan dev, dalam proyek Android-nya, saya menambahkan sidik jari sertifikat SHA debug. Tetapi untuk staging dan prod, saya hanya perlu CI menandatangani APK.
Berikut ini adalah strip-down
.gitlab-ci.yml
yang berfungsi untuk pengaturan ini:Saya senang dengan solusi ini karena tidak bergantung pada trik build.gradle yang saya yakini terlalu buram dan karenanya sulit dipertahankan. Sebagai contoh, ketika saya mencoba menggunakan pendekatan
applicationIdSuffix
dan berbedabuildType
saya menemukan bahwa saya tidak bisa mendapatkan tes instrumented untuk menjalankan atau bahkan kompilasi ketika saya mencoba untuk beralih menggunakan tipe buildtestBuildType
. Android tampaknya memberikan properti khususdebug
buildType
yang saya tidak bisa menginspeksi untuk memahaminya.Sebenarnya, skrip CI cukup transparan dan mudah dirawat, menurut pengalaman saya. Memang, pendekatan yang saya jelaskan berhasil: Ketika saya menjalankan masing-masing APK yang dihasilkan oleh CI pada emulator, langkah "Jalankan aplikasi Anda untuk memverifikasi pemasangan" konsol Firebase berjalan dari
untuk:
untuk ketiga aplikasi saat saya memulai satu per satu di emulator.
sumber
Firebase memiliki halaman tentang ini yang membahas cara mengaturnya untuk dev dan prod
https://firebase.google.com/docs/functions/config-env
sumber
Saya memperbarui jawaban ini berdasarkan informasi yang baru saja saya temukan.
Langkah 1
Di firebase.google.com, buat beberapa lingkungan Anda (mis; dev, staging, prod)
mysite-dev
pementasan mysite
mysite-prod
Langkah 2
Sebuah. Pindah ke langsung yang Anda inginkan sebagai default Anda (mis; dev)
b. Lari
firebase deploy
c. Setelah dikerahkan, jalankan
firebase use --add
d. Sebuah opsi akan muncul untuk memilih dari berbagai proyek yang Anda miliki saat ini.
Gulir ke proyek yang ingin Anda tambahkan: mysite-staging , dan pilih.
e. Anda kemudian akan diminta nama alias untuk proyek itu. Masukkan pementasan .
Jalankan item ae lagi untuk prod dan dev, sehingga setiap lingkungan akan memiliki alias
Ketahui di lingkungan mana Anda berada
Lari
firebase use
default (mysite-dev)
* dev (mysite-dev)
staging (mysite-staging)
prod (mysite-dev)
(salah satu lingkungan akan memiliki tanda bintang di sebelah kiri itu. Itu yang sedang Anda masuki. Itu juga akan disorot dengan warna biru)
Beralih di antara lingkungan
Jalankan
firebase use staging
ataufirebase use prod
untuk bergerak di antara mereka.Setelah Anda berada di lingkungan yang Anda inginkan, jalankan
firebase deploy
dan proyek Anda akan disebarkan di sana.Berikut beberapa tautan bermanfaat ...
Referensi CLI
Menyebarkan ke beberapa lingkungan
Semoga ini membantu.
sumber
Cara kita melakukannya adalah dengan membuat file kunci json yang berbeda untuk lingkungan yang berbeda. Kami telah menggunakan fitur akun layanan seperti yang direkomendasikan oleh google dan memiliki satu file pengembangan dan lainnya untuk produksi
sumber
Buat proyek Tow dengan Dev dan Lingkungan produksi di firebase Unduh file json dari thre
dan siapkan SDK sesuai: https://firebase.google.com/docs/android/setup Atau untuk Crashlytics: https://firebase.google.com/docs/crashlytics/get-started?platform=android
Pertama, letakkan masing-masing google_services.json untuk setiap buildType di lokasi berikut:
Catatan: Root app / google_services.json File ini harus ada di sana sesuai dengan varian build, salin kode json di file root json
Sekarang, mari kita siapkan beberapa tugas tingkat di: build.gradle aplikasi Anda untuk mengotomatiskan memindahkan google_services.json yang sesuai ke app / google_services.json
salin ini di file app / Gradle
Hebat - tetapi harus secara manual menjalankan tugas-tugas ini sebelum Anda membangun aplikasi Anda rumit. Kami ingin tugas penyalinan yang sesuai dijalankan di atas beberapa saat sebelumnya: assembleDebug atau: assembleRelease dijalankan. Mari kita lihat apa yang terjadi ketika: assembleRelease dijalankan: salin yang ini di file / gradlew
Perhatikan tugas: app: processReleaseGoogleServices. Tugas ini bertanggung jawab untuk memproses file root google_services.json. Kami ingin google_services.json yang benar diproses, jadi kami harus segera menjalankan tugas penyalinan kami. Tambahkan ini ke build.gradle Anda. Perhatikan penutup afterEvaluate.
salin ini di file app / Gradle
Sekarang, kapan saja: app: processReleaseGoogleServices dipanggil, aplikasi kami yang baru: switchToRelease akan dipanggil sebelumnya. Logika yang sama untuk buildType debug. Anda dapat menjalankan: app: assembleRelease dan versi rilis google_services.json akan secara otomatis disalin ke folder root modul aplikasi Anda.
sumber
google-services.json
file ke folder root, jika Anda menyimpannya di folder rasa yang baik-baik saja. Sebaliknya,assembleRelease
Anda bisa menjalankanassembleTestRelease
tugas.