Setiap jenis peristiwa BEP memiliki semantiknya sendiri, yang didokumentasikan secara minimal di build_event_stream.proto. Glosarium berikut menjelaskan setiap jenis peristiwa.
Dibatalkan
Tidak seperti peristiwa lainnya, Aborted tidak memiliki jenis ID yang sesuai, karena peristiwa Aborted menggantikan peristiwa jenis lainnya. Peristiwa ini menunjukkan bahwa build dihentikan lebih awal dan ID peristiwa yang muncul tidak diproduksi secara normal. Aborted berisi enum dan deskripsi yang mudah dibaca untuk menjelaskan alasan build tidak selesai.
Misalnya, jika build mengevaluasi target saat pengguna mengganggu Bazel, BEP akan berisi peristiwa seperti berikut:
{
"id": {
"targetCompleted": {
"label": "//:foo",
"configuration": {
"id": "544e39a7f0abdb3efdd29d675a48bc6a"
}
}
},
"aborted": {
"reason": "USER_INTERRUPTED"
}
}
ActionExecuted
Memberikan detail tentang eksekusi Tindakan tertentu
Action dalam build. Secara default, peristiwa ini hanya disertakan dalam BEP untuk tindakan yang gagal, guna mendukung identifikasi akar penyebab kegagalan build. Pengguna dapat menetapkan flag --build_event_publish_all_actions untuk menyertakan semua peristiwa ActionExecuted.
BuildFinished
Satu peristiwa BuildFinished dikirim setelah perintah selesai dan menyertakan kode keluar untuk perintah tersebut. Peristiwa ini memberikan informasi keberhasilan/kegagalan yang resmi.
BuildMetadata
Berisi konten yang diuraikan dari flag --build_metadata. Peristiwa ini ada untuk mendukung integrasi Bazel dengan alat lainnya dengan menyalurkan data eksternal (seperti ID).
BuildMetrics
Satu peristiwa BuildMetrics dikirim di akhir setiap perintah dan menyertakan penghitung/pengukur yang berguna untuk mengukur perilaku alat build selama perintah. Metrik ini menunjukkan pekerjaan yang sebenarnya dilakukan dan tidak menghitung pekerjaan yang di-cache yang digunakan kembali.
Perhatikan bahwa memory_metrics mungkin tidak diisi jika tidak ada pengumpulan sampah Java selama eksekusi perintah. Pengguna dapat menetapkan opsi --memory_profile=/dev/null yang memaksa pengumpul sampah untuk berjalan di akhir perintah guna mengisi memory_metrics.
{
"id": {
"buildMetrics": {}
},
"buildMetrics": {
"actionSummary": {
"actionsExecuted": "1"
},
"memoryMetrics": {},
"targetMetrics": {
"targetsLoaded": "9",
"targetsConfigured": "19"
},
"packageMetrics": {
"packagesLoaded": "5"
},
"timingMetrics": {
"cpuTimeInMs": "1590",
"wallTimeInMs": "359"
}
}
}
BuildStarted
Peristiwa pertama dalam aliran BEP, BuildStarted, menyertakan metadata yang menjelaskan perintah sebelum pekerjaan yang bermakna dimulai.
BuildToolLogs
Satu peristiwa BuildToolLogs dikirim di akhir perintah, termasuk URI file yang dihasilkan oleh alat build yang dapat membantu memahami atau men-debug perilaku alat build. Beberapa informasi mungkin disertakan secara inline.
{
"id": {
"buildToolLogs": {}
},
"lastMessage": true,
"buildToolLogs": {
"log": [
{
"name": "elapsed time",
"contents": "MC4xMjEwMDA="
},
{
"name": "process stats",
"contents": "MSBwcm9jZXNzOiAxIGludGVybmFsLg=="
},
{
"name": "command.profile.gz",
"uri": "file:///tmp/.cache/bazel/_bazel_foo/cde87985ad0bfef34eacae575224b8d1/command.profile.gz"
}
]
}
}
CommandLine
BEP berisi beberapa peristiwa CommandLine yang berisi representasi semua argumen command line (termasuk opsi dan argumen yang tidak diinterpretasikan).
Setiap CommandLine peristiwa memiliki label di StructuredCommandLineId yang
menunjukkan representasi yang disampaikan; tiga peristiwa tersebut muncul di BEP:
"original": Command line yang direkonstruksi saat Bazel menerimanya dari klien Bazel, tanpa opsi startup yang bersumber dari file .rc."canonical": Command line efektif dengan file .rc yang diperluas dan kebijakan pemanggilan yang diterapkan."tool": Diisi dari opsi--experimental_tool_command_line. Hal ini berguna untuk menyampaikan command line alat yang menggabungkan Bazel melalui BEP. Ini dapat berupa pesan buffer protokol binerCommandLineyang dienkode base64 yang digunakan secara langsung, atau string yang diuraikan tetapi tidak diinterpretasikan (karena opsi alat mungkin berbeda dengan Bazel).
Konfigurasi
Peristiwa Configuration dikirim untuk setiap configuration
yang digunakan dalam target tingkat atas dalam build. Setidaknya satu peristiwa konfigurasi akan selalu ada. id digunakan kembali oleh ID peristiwa TargetConfigured dan TargetComplete dan diperlukan untuk membedakan peristiwa tersebut dalam build multi-konfigurasi.
{
"id": {
"configuration": {
"id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
}
},
"configuration": {
"mnemonic": "k8-fastbuild",
"platformName": "k8",
"cpu": "k8",
"makeVariable": {
"COMPILATION_MODE": "fastbuild",
"TARGET_CPU": "k8",
"GENDIR": "bazel-out/k8-fastbuild/bin",
"BINDIR": "bazel-out/k8-fastbuild/bin"
}
}
}
ConvenienceSymlinksIdentified
Eksperimental. Jika opsi --experimental_convenience_symlinks_bep_event ditetapkan, satu peristiwa ConvenienceSymlinksIdentified akan dihasilkan oleh perintah build untuk menunjukkan cara pengelolaan symlink di ruang kerja.
Hal ini memungkinkan pembuatan alat yang memanggil Bazel dari jarak jauh, lalu mengatur ruang kerja lokal seolah-olah Bazel telah dijalankan secara lokal.
{
"id": {
"convenienceSymlinksIdentified":{}
},
"convenienceSymlinksIdentified": {
"convenienceSymlinks": [
{
"path": "bazel-bin",
"action": "CREATE",
"target": "execroot/google3/bazel-out/k8-fastbuild/bin"
},
{
"path": "bazel-genfiles",
"action": "CREATE",
"target": "execroot/google3/bazel-out/k8-fastbuild/genfiles"
},
{
"path": "bazel-out",
"action": "CREATE",
"target": "execroot/google3/bazel-out"
}
]
}
}
Ambil
Menunjukkan bahwa operasi Ambil terjadi sebagai bagian dari eksekusi perintah. Tidak seperti peristiwa lainnya, jika hasil pengambilan yang di-cache digunakan kembali, peristiwa ini tidak akan muncul di aliran BEP.
NamedSetOfFiles
NamedSetOfFiles peristiwa melaporkan struktur yang cocok dengan
depset file yang dihasilkan selama evaluasi perintah.
Depset yang disertakan secara transitif diidentifikasi oleh NamedSetOfFilesId.
Untuk mengetahui informasi selengkapnya tentang cara menginterpretasikan peristiwa NamedSetOfFiles aliran, lihat
halaman contoh BEP.
OptionsParsed
Satu peristiwa OptionsParsed mencantumkan semua opsi yang diterapkan ke perintah, memisahkan opsi startup dari opsi perintah. Peristiwa ini juga menyertakan
InvocationPolicy, jika ada.
{
"id": {
"optionsParsed": {}
},
"optionsParsed": {
"startupOptions": [
"--max_idle_secs=10800",
"--noshutdown_on_low_sys_mem",
"--connect_timeout_secs=30",
"--output_user_root=/tmp/.cache/bazel/_bazel_foo",
"--output_base=/tmp/.cache/bazel/_bazel_foo/a61fd0fbee3f9d6c1e30d54b68655d35",
"--deep_execroot",
"--expand_configs_in_place",
"--idle_server_tasks",
"--write_command_log",
"--nowatchfs",
"--nofatal_event_bus_exceptions",
"--nowindows_enable_symlinks",
"--noclient_debug",
],
"cmdLine": [
"--enable_platform_specific_config",
"--build_event_json_file=/tmp/bep.json"
],
"explicitCmdLine": [
"--build_event_json_file=/tmp/bep.json"
],
"invocationPolicy": {}
}
}
PatternExpanded
Peristiwa PatternExpanded menunjukkan kumpulan semua target yang cocok dengan pola yang diberikan di command line. Untuk perintah yang berhasil, satu peristiwa akan muncul
dengan semua pola di PatternExpandedId dan semua target di
PatternExpanded peristiwa's turunan. Jika pola diperluas ke test_suite mana pun, kumpulan target pengujian akan disertakan oleh test_suite. Untuk setiap
pola yang gagal di-resolve, BEP akan berisi Aborted
peristiwa tambahan dengan PatternExpandedId yang mengidentifikasi pola tersebut.
{
"id": {
"pattern": {
"pattern":["//base:all"]
}
},
"children": [
{"targetConfigured":{"label":"//base:foo"}},
{"targetConfigured":{"label":"//base:foobar"}}
],
"expanded": {
"testSuiteExpansions": {
"suiteLabel": "//base:suite",
"testLabels": "//base:foo_test"
}
}
}
Progres
Peristiwa progres berisi output standar dan error standar yang dihasilkan oleh Bazel selama eksekusi perintah. Peristiwa ini juga dibuat secara otomatis jika diperlukan untuk mengumumkan peristiwa yang belum diumumkan oleh peristiwa "induk" logis (khususnya, NamedSetOfFiles).
TargetComplete
Untuk setiap kombinasi (target, configuration, aspect) yang menyelesaikan fase eksekusi, peristiwa TargetComplete akan disertakan dalam BEP. Peristiwa ini berisi keberhasilan/kegagalan target dan grup output yang diminta target.
{
"id": {
"targetCompleted": {
"label": "//examples/py:bep",
"configuration": {
"id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
}
}
},
"completed": {
"success": true,
"outputGroup": [
{
"name": "default",
"fileSets": [
{
"id": "0"
}
]
}
]
}
}
TargetConfigured
Untuk setiap Target yang menyelesaikan fase analisis, peristiwa TargetConfigured akan disertakan dalam BEP. Ini adalah sumber resmi untuk atribut "jenis aturan" target. Konfigurasi yang diterapkan ke target muncul di turunan peristiwa yang diumumkan.
Misalnya, pembuatan dengan opsi --experimental_multi_cpu dapat menghasilkan peristiwa TargetConfigured berikut untuk satu target dengan dua konfigurasi:
{
"id": {
"targetConfigured": {
"label": "//starlark_configurations/multi_arch_binary:foo"
}
},
"children": [
{
"targetCompleted": {
"label": "//starlark_configurations/multi_arch_binary:foo",
"configuration": {
"id": "c62b30c8ab7b9fc51a05848af9276529842a11a7655c71327ade26d7c894c818"
}
}
},
{
"targetCompleted": {
"label": "//starlark_configurations/multi_arch_binary:foo",
"configuration": {
"id": "eae0379b65abce68d54e0924c0ebcbf3d3df26c6e84ef7b2be51e8dc5b513c99"
}
}
}
],
"configured": {
"targetKind": "foo_binary rule"
}
}
TargetSummary
Untuk setiap pasangan (target, configuration) yang dieksekusi, peristiwa TargetSummary akan disertakan dengan hasil keberhasilan gabungan yang mencakup eksekusi target yang dikonfigurasi dan semua aspek yang diterapkan ke target yang dikonfigurasi tersebut.
TestResult
Jika pengujian diminta, peristiwa TestResult akan dikirim untuk setiap upaya pengujian, shard, dan pengujian per pengujian. Hal ini memungkinkan konsumen BEP mengidentifikasi dengan tepat tindakan pengujian mana yang gagal dalam pengujian mereka dan mengidentifikasi output pengujian (seperti log, file test.xml) untuk setiap tindakan pengujian.
TestSummary
Jika pengujian diminta, peristiwa TestSummary akan dikirim untuk setiap (target,
configuration) pengujian, yang berisi informasi yang diperlukan untuk menginterpretasikan hasil pengujian. Jumlah upaya, shard, dan pengujian per pengujian disertakan untuk memungkinkan konsumen BEP membedakan artefak di seluruh dimensi ini. Upaya dan pengujian per pengujian dipertimbangkan saat menghasilkan TestStatus gabungan untuk membedakan pengujian FLAKY dari pengujian FAILED.
UnstructuredCommandLine
Tidak seperti CommandLine, peristiwa ini membawa flag command line yang tidak diuraikan dalam bentuk string seperti yang ditemui oleh alat build setelah memperluas semua
.bazelrc file dan
mempertimbangkan flag --config.
Peristiwa UnstructuredCommandLine dapat diandalkan untuk mereproduksi eksekusi perintah tertentu secara akurat.
WorkspaceConfig
Satu peristiwa WorkspaceConfig berisi informasi konfigurasi terkait ruang kerja, seperti root eksekusi.
WorkspaceStatus
Satu peristiwa WorkspaceStatus berisi hasil perintah status ruang kerja.