Proses Rilis Generic Kernel Image (GKI)

Dokumen ini menjelaskan cara perilisan GKI, termasuk rilis darurat mingguan, bulanan, dan luar band. Tujuan dokumen ini adalah untuk memberi OEM panduan tentang tempat mengambil GKI serta proses perbaikan darurat di luar band. OEM juga dapat menggunakan Panduan pengembangan GKI untuk mempelajari lebih lanjut cara bekerja sama dengan tim Kernel Android untuk mengoptimalkan kernel GKI bagi produk mereka.

Ritme rilis GKI

GKI dirilis dengan ritme bulanan setelah pembekuan KMI.

Rilis GKI Android 13, 14, dan 15

Tabel berikut hanya berlaku untuk android13-5.10, android13-5.15, dan android14-6.1.

Build tersertifikasi bulanan GKI Tanggal batas waktu check-in Tanggal siap pramuat GKI Dikonfirmasi?
Oktober 14 Oktober 2022 31 Oktober 2022 Ya
November 14 November 2022 30 November 2022 Ya
Desember 9 Desember 2022 21 Desember 2022 Ya
Januari 17 Januari 2023 31 Januari 2023 Ya
Februari 15 Februari 2023 28 Februari 2023 Ya
Maret 15 Maret 2023 31 Maret 2023 Ya
April 13 April 2023 28 April 2023 Ya
Mei 17 Mei 2023 31 Mei 2023 Ya
Juni 15 Juni 2023 30 Juni 2023 Ya
Juli 18 Juli 2023 31 Juli 2023 Ya
Agustus 16 Agustus 2023 31 Agustus 2023 Ya
September 14 September 2023 29 September 2023 Ya
Oktober 18 Oktober 2023 31 Oktober 2023 Ya
November 10 November 2023 30 November 2023 Ya
Desember 7 Desember 2023 22 Desember 2023 Ya
Januari 16 Januari 2024 31 Januari 2024 Ya
Februari 13 Februari 2024 29 Februari 2024 Ya
Maret 13 Maret 2024 29 Maret 2024 Ya
April 16 April 2024 30 April 2024 Ya
Mei 14 Mei 2024 31 Mei 2024 Ya
Juni 12 Juni 2024 28 Juni 2024 Ya
Juli 16 Juli 2024 31 Juli 2024 Ya
Agustus 15 Agustus 2024 30 Agustus 2024 Ya
September 17 September 2024 30 September 2024 Ya
Oktober 15 Oktober 2024 31 Oktober 2024 Ya
November 11 November 2024 27 November 2024 Ya
Desember 6 Desember 2024 23 Desember 2024 Ya

Mulai Januari 2024, kami akan melanjutkan rilis bulanan android14-5.15 sesuai dengan ritme bulanan yang ditentukan yang diuraikan dalam tabel di bawah. android15-6.6 akan mengikuti ritme rilis yang sama, mulai Juli 2024.

Build tersertifikasi bulanan GKI Tanggal batas waktu check-in Tanggal siap pramuat GKI Dikonfirmasi?
Januari 16 Januari 2024 31 Januari 2024 Ya
Februari 13 Februari 2024 29 Februari 2024 Ya
Maret 4 Maret 2024 15 Maret 2024 Ya
April 1 April 2024 17 April 2024 Ya
Mei 1 Mei 2024 17 Mei 2024 Ya
Juni 3 Juni 2024 17 Juni 2024 Ya
Juli 1 Juli 2023 15 Juli 2024 Ya
Agustus 1 Agustus 2024 16 Agustus 2024 Ya
September 2 September 2024 16 September 2024 Ya
Oktober 1 Oktober 2024 14 Oktober 2024 Ya
November 1 November 2024 15 November 2024 Ya
Desember 2 Desember 2024 16 Desember 2024 Ya

Rilis GKI Android 12

Setelah Mei 2024, rilis GKI android12-5.10 dilakukan setiap tiga bulan dan dipublikasikan pada pertengahan bulan. Tabel berikut hanya berlaku untuk android12-5.10.

Build tersertifikasi bulanan GKI Tanggal batas waktu check-in Tanggal siap pramuat GKI Dikonfirmasi?
Juli 3 Juli 2023 14 Juli 2023 Ya
September 1 September 2023 15 September 2023 Ya
November 3 November 2023 17 November 2023 Ya
Januari 5 Januari 2024 19 Januari 2024 Ya
Maret 4 Maret 2024 15 Maret 2024 Ya
Mei 1 Mei 2024 17 Mei 2024 Ya
Agustus 1 Agustus 2024 16 Agustus 2024 Ya
November 1 November 2024 15 November 2024 Ya
Februari 3 Februari 2025 17 Februari 2025 Ya

Validitas build GKI untuk OEM

OEM dapat menggunakan GKI Android yang baru saja dirilis. OEM dapat melakukan peluncuran dengan build bersertifikasi GKI selama mereka mematuhi persyaratan LTS di Android Security Bulletin (ASB).

Rilis pengembangan mingguan

Rilis diuji dengan cumi-cumi untuk memastikan rilis tersebut lulus standar kualitas minimum.

Biner GKI tersedia untuk layanan mandiri dari ci.android.com saat perubahan digabungkan. Build mingguan tidak akan disertifikasi, tetapi dapat digunakan sebagai dasar pengukuran untuk pengembangan dan pengujian. Build mingguan tidak dapat digunakan untuk build perangkat produksi bagi pengguna akhir.

Rilis tersertifikasi bulanan

Rilis bulanan GKI berisi boot.img yang telah diuji, yang menyertakan sertifikat yang disisipkan Google untuk membuktikan bahwa biner tersebut dibuat dari dasar pengukuran kode sumber yang diketahui.

Setiap bulan, kandidat rilis bulanan GKI (tidak tersertifikasi) dipilih setelah tanggal batas waktu check-in, yang biasanya merupakan build mingguan kedua pada bulan tersebut. Setelah kandidat rilis bulanan dipilih, perubahan baru tidak akan diterima dalam rilis bulan tersebut. Selama periode jendela ditutup, hanya perbaikan bug yang menyebabkan kegagalan pengujian yang dapat ditangani. Kandidat rilis menjalani uji mutu—seperti yang dijelaskan di bagian kualifikasi GKI—untuk memastikan uji kepatuhan lulus pada build GSI+GKI dengan perangkat referensi serta sotong.

Linimasa ritme rilis GKI Gambar 1. Linimasa rilis GKI

Proses pemulihan darurat

Respin mengacu pada proses penggabungan, pembangunan ulang, pengujian ulang, dan sertifikasi ulang biner setelah rilis publik kernel GKI. Anda dapat meminta respin biner tersertifikasi untuk salah satu situasi berikut:

  • Untuk memperbarui daftar simbol.
  • Untuk menerapkan perbaikan pada bug, termasuk bug yang ditemukan selama persetujuan lab operator.
  • Untuk menambahkan hook vendor.
  • Untuk menerapkan patch ke fitur yang sudah ada.
  • Untuk menerapkan patch keamanan (setelah 6 bulan).

Patch keamanan akan otomatis digabungkan ke dalam cabang rilis hingga 6 bulan setelah rilis cabang. Setelah batas waktu 6 bulan, Anda harus meminta respin untuk menerapkan patch keamanan ke cabang.

Sebelum meminta respin, perhatikan panduan berikut:

  • Respin hanya diizinkan pada cabang rilis setelah rilis publik awal build bulanan telah diluncurkan.

  • Permintaan respin hanya diterima untuk cabang rilis tertentu selama maksimum enam bulan setelah rilis publik awal. Setelah enam bulan, cabang memenuhi syarat untuk respin hanya untuk patch keamanan yang dikutip dalam Buletin Keamanan Android.

  • Jika persyaratan LTS , yang ditentukan oleh Android Security Buletin (ASB) menyebabkan cabang tidak mematuhi kebijakan, cabang tersebut tidak digunakan lagi. Permintaan repin untuk cabang yang tidak digunakan lagi tidak diterima. Tanggal penghentian untuk cabang rilis GKI tertentu disertakan dalam catatan build rilis GKI bulanan di bagian Rilis. Untuk perencanaan mendatang, persyaratan LTS diperbarui pada bulan Mei dan November setiap tahun. Misalnya, cabang android12-5.10-2023-07 (5.10.177) tidak didukung untuk respin setelah 1 Mei 2024 karena cabang android12-5.10-2023-07 (5.10.177) tidak mematuhi persyaratan LTS ASB-2024-05.

  • Respin hanya berlaku untuk perbaikan bug mendesak, update daftar simbol, atau untuk menerapkan patch guna memperbaiki fitur yang ada.

  • Semua patch yang masuk ke cabang rilis bulanan harus sudah digabungkan ke cabang pengembangan GKI utama. Misalnya, jika patch diperlukan untuk respin android12-5.10-2022-09, patch tersebut harus sudah digabungkan ke android12-5.10.

  • Anda harus memilih patch dari cabang pengembangan GKI utama dan mengupload patch ke cabang rilis bulanan.

  • Dalam permintaan respin, Anda harus menetapkan prioritas (urgensi) pada permintaan tersebut. Prioritas ini membantu tim GKI untuk membantu partner dengan lebih baik pada waktu yang tepat. Untuk permintaan penting atau mendesak, tandai prioritas sebagai P0. Untuk permintaan P0 dan P1, Anda juga harus menjelaskan urgensinya. Tabel berikut menyediakan pemetaan prioritas bug dan waktu untuk resolusi (ESRT):

    Prioritas ESRT
    P0 2 hari kerja
    P1 5 hari kerja
    P2 10 hari kerja
    P3 15 hari kerja
  • Anda harus mengirimkan permintaan respin terpisah per cabang rilis. Misalnya, jika respin diperlukan untuk android12-5.10-2022-08 dan android12-5.10-2022-09, Anda harus membuat dua permintaan respin.

  • Setelah build disediakan dan permintaan respin ditandai sebagai telah diperbaiki, Anda tidak boleh membuka kembali permintaan respin untuk menambahkan CL tambahan. Anda harus mengirimkan permintaan respin baru jika ada patch tambahan yang perlu digabungkan.

  • Untuk setiap CL yang dipertimbangkan, tambahkan tag berikut. Progres pada permintaan respin akan diblokir tanpa informasi ini.

    • Bug: ID bug harus ditambahkan ke pesan commit untuk setiap CL.
    • Change-Id: harus sama dengan ID Perubahan cabang dasar.
  • Jika permintaan respin memerlukan respons, dan Anda tidak merespons dalam waktu tiga hari kerja, prioritasnya akan didowngrade sebesar satu tingkat (misalnya, P0 didowngrade ke P1). Jika Anda tidak merespons selama dua minggu, bug akan ditandai sebagai Tidak Dapat Diperbaiki (Usang).

Kirim permintaan respin

Diagram berikut menunjukkan proses respin. Prosesnya dimulai ketika Partner OEM (Anda) mengirimkan permintaan respin.

Proses pemulihan darurat Gambar 2. Proses respin

Untuk memasuki proses respin:

  1. Isi formulir permintaan Respin GKI, dan segera hubungi Manajer Akun Teknis Google Anda. Formulir ini membuat bug permintaan respin GKI. Bug permintaan respin dapat dilihat oleh Anda (pemohon), tim GKI, dan individu tertentu yang Anda tambahkan ke daftar CC bug.
    • Jika Anda sudah memiliki perbaikan, permintaan tersebut akan mengarah ke pengiriman patch di AOSP sehingga Google dapat meninjaunya. Jika tidak dapat mengirimkan patch, patch harus dilampirkan sebagai file teks ke permintaan.
    • Jika Anda tidak memiliki perbaikan, permintaan harus berisi sebanyak mungkin informasi, termasuk nomor versi kernel dan log, agar Google dapat membantu men-debug masalah.
  2. Tim GKI Google akan meninjau permintaan tersebut dan menyetujui atau menugaskannya kembali kepada Anda jika memerlukan informasi lebih lanjut.
  3. Setelah perbaikan disepakati, tim GKI Google akan meninjau kode (CR+2) perubahan tersebut. Peninjauan akan memulai jangka waktu ESRT. Tim GKI menggabungkan, membangun, menguji regresi, dan menyertifikasi perubahan.
  4. Biner ini dirilis ke ci.android.com. Jangka waktu ESRT berakhir dan tim Google GKI menandai permintaan sebagai tetap dan mereferensikan build respin. Build respin juga diposting di halaman build rilis Generic Kernel Image (GKI).

Kualifikasi GKI

Jenis build GKI Penegakan kualitas Catatan
Setiap minggu Pengujian cumi-cumi
  • Sepatu Bot
  • Sebagian VTS
  • Sebagian CTS
  • Tidak tersertifikasi. Hanya untuk pengujian dan
    perangkat muncul.
  • Tidak dapat digunakan untuk meluncurkan perangkat.
Bulanan (tesertifikasi) Pengujian cumi-cumi
  • Sepatu Bot
  • VTS
  • CTS
Referensi pengujian hardware
  • Sepatu Bot
  • VTS
  • CTS
Respin (tersertifikasi) Pengujian cumi-cumi
  • Sepatu Bot
  • VTS
  • Sebagian CTS
Referensi pengujian perangkat
  • Sepatu Bot
  • VTS
  • Dibangun di atas build bersertifikasi GKI.
  • Build disertifikasi setelah kualifikasi.

Tempat mendapatkan artefak build

Artefak untuk semua rilis dapat diperoleh dari ci.android.com.

Anda dapat menemukan informasi selengkapnya tentang CI, termasuk hasil pengujian di dasbor Android Continuous Integration.

FAQ

Apakah mungkin untuk membangun biner GKI baru berdasarkan GKI yang sudah dirilis?

Ya, ini dikenal sebagai respin. Proses respin didukung selama build GKI yang dirilis (tempat respin diminta) mematuhi persyaratan LTS di Buletin Keamanan Android (ASB).

Apakah saya dapat mereproduksi biner GKI?

Ya, lihat contoh di bawah ini.

GKI 2.0
5.10 kernel prebuilts from build 7364300
https://ci.android.com/builds/submitted/7364300/kernel_aarch64/latest

Untuk mereproduksi contoh, download manifest_$id.xml dan jalankan perintah berikut:

repo init -u https://android.googlesource.com/kernel/manifest
mv manifest_7364300.xml .repo/manifests
repo init -m manifest_7364300.xml --depth=1
repo sync
# build the GKI images
# You may want to use LTO=thin to build faster for development
BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
# (optional) build virtual platform modules
BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device.aarch64 build/build.sh

Anda dapat mengambil salinan artefak GKI dari out/.../dist.

Apakah biner GKI (termasuk patch putaran darurat) telah dibangun di codebase terbaru?

Tidak. Respin hanya berisi patch yang berada di atas kernel tersertifikasi bulanan yang telah dipilih. Respin ini berisi semua perbaikan bug pemblokir peluncuran yang dilaporkan hingga waktu tertentu oleh OEM yang menggunakan rilis bulanan dasar yang sesuai. Lihat contoh berikut tentang bagaimana jenis skenario ini terjadi.

  • OEM1 dan OEM2 memutuskan untuk menggunakan rilis biner GKI mulai November 2021.
  • OEM1 dan OEM2 menemukan masalah yang memerlukan patch untuk dukungan. Patch ini mungkin berbeda atau mungkin sama.
  • Respin di atas biner November 2021 memiliki perbaikan pemblokiran peluncuran yang dilaporkan oleh OEM1 dan OEM2 selama jendela respin, tetapi tidak lebih.
  • Masalah yang disebutkan dalam butir kedua juga disertakan dalam rilis bulanan GKI berikutnya.

Respin Oktober memiliki semua patch yang dikirimkan OEM, tetapi patch OEM lain memengaruhi kami, karena patch tersebut belum diuji secara khusus dengan produk kami. Apakah saya hanya dapat menyertakan patch?

Hal ini tidak mungkin. Jalur respin "per-OEM" saat ini tidak skalabel. Sebagai gantinya, tim GKI meneliti setiap perubahan yang terjadi pada build respin, dan menguji perubahan tersebut dengan semua hardware yang tersedia sebelum membuat build baru. Jika tim GKI menemukan bahwa masalah tersebut hanya terjadi pada OEM/perangkat/model, tim GKI dapat memastikan bahwa kode yang ditambahkan oleh perubahan hanya dijalankan pada perangkat/model/SKU yang terpengaruh.

Manfaat utama dari respin terpadu adalah setiap perangkat yang menggunakan basis rilis yang sama akan mendapatkan manfaat satu sama lain, terutama jika bug yang ditemukan bersifat umum dan berlaku untuk semua pengguna. Bug kernel inti yang ditemukan dalam pengujian operator adalah contoh spesifik dari konsep ini.

Apakah ada situasi saat Google memberikan informasi spesifik tentang patch OEM dan skenario masalah, sehingga OEM dapat mengevaluasi dampak dan risiko penerapan patch pada produk mereka?

Google tidak akan pernah menambahkan perubahan pada build respin sampai masalahnya dipahami dan semua detail telah dikumpulkan. Hal ini terlihat dalam log perubahan (pesan commit). Google tidak mengungkapkan perangkat tertentu yang terpengaruh, tetapi OEM selalu dapat menemukan deskripsi masalah dan solusinya di log perubahan.