Setiap jenis peristiwa BEP memiliki semantiknya sendiri, yang didokumentasikan secara minimal dalam 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
mengganti peristiwa dari jenis lain. Peristiwa ini menunjukkan bahwa
build dihentikan lebih awal dan ID peristiwa yang muncul di dalamnya tidak dihasilkan
secara normal. Aborted
berisi enum dan deskripsi yang mudah dipahami 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
Action tertentu dalam build. Secara default, peristiwa ini
disertakan dalam BEP hanya untuk tindakan yang gagal, untuk mendukung identifikasi akar masalah
kegagalan build. Pengguna dapat menetapkan tanda --build_event_publish_all_actions
untuk menyertakan semua peristiwa ActionExecuted
.
BuildFinished
Satu peristiwa BuildFinished
dikirim setelah perintah selesai dan
menyertakan kode keluar untuk perintah. Peristiwa ini memberikan informasi
keberhasilan/kegagalan yang kredibel.
BuildMetadata
Berisi konten flag --build_metadata
yang diuraikan. Peristiwa ini dibuat untuk mendukung integrasi Bazel dengan peralatan lain melalui pengumpulan 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 benar-benar dilakukan dan tidak menghitung pekerjaan
yang di-cache yang digunakan kembali.
Perhatikan bahwa memory_metrics
mungkin tidak diisi jika tidak ada pembersihan sampah
Java selama eksekusi perintah. Pengguna dapat menetapkan
opsi --memory_profile=/dev/null
yang memaksa pengumpulan
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 dari semua
argumen command line (termasuk opsi dan argumen yang tidak diinterpretasikan).
Setiap peristiwa CommandLine
memiliki label di StructuredCommandLineId
-nya yang
menunjukkan representasi yang disampaikannya; tiga peristiwa tersebut muncul di BEP:
"original"
: Command line yang direkonstruksi seperti yang diterima Bazel dari klien Bazel, tanpa opsi startup yang bersumber dari file .rc."canonical"
: Command line efektif dengan file .rc yang diperluas dan kebijakan pemanggilan 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 buffering protokol binerCommandLine
berenkode base64 yang digunakan secara langsung, atau string yang diuraikan tetapi tidak ditafsirkan (karena opsi alat mungkin berbeda dari Bazel).
Konfigurasi
Peristiwa Configuration
dikirim untuk setiap configuration
yang digunakan dalam target tingkat atas dalam build. Setidaknya satu peristiwa konfigurasi
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 mengelola symlink di ruang kerja.
Hal ini memungkinkan alat build 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 Pengambilan 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
Peristiwa NamedSetOfFiles
melaporkan struktur yang cocok dengan
depset
file yang dihasilkan selama evaluasi perintah.
Depset yang disertakan secara transitif diidentifikasi oleh NamedSetOfFilesId
.
Untuk informasi selengkapnya tentang cara menafsirkan peristiwa NamedSetOfFiles
streaming, lihat
halaman contoh BEP.
OptionsParsed
Satu peristiwa OptionsParsed
mencantumkan semua opsi yang diterapkan ke perintah,
yang memisahkan opsi startup dari opsi perintah. Ini juga mencakup
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",
"--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 disediakan di commandline. Untuk perintah yang berhasil, satu peristiwa akan ada
dengan semua pola di PatternExpandedId
dan semua target di
turunan peristiwa PatternExpanded
. Jika pola diperluas ke
test_suite
, kumpulan target pengujian yang disertakan oleh test_suite
. Untuk setiap
pola yang gagal di-resolve, BEP berisi peristiwa Aborted
tambahan
dengan PatternExpandedId
yang mengidentifikasi pola.
{
"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 otomatis dibuat sesuai kebutuhan untuk mengumumkan peristiwa yang belum diumumkan oleh peristiwa "induk" yang logis (khususnya, NamedSetOfFiles.)
TargetComplete
Untuk setiap kombinasi (target, configuration, aspect)
yang menyelesaikan
fase eksekusi, peristiwa TargetComplete
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 akan muncul di turunan peristiwa yang diumumkan.
Misalnya, mem-build 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
disertakan dengan hasil sukses 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 dijalankan per pengujian. Hal ini memungkinkan konsumen BEP mengidentifikasi dengan tepat tindakan pengujian mana yang gagal dalam pengujiannya 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 menafsirkan hasil pengujian. Jumlah percobaan, shard, dan operasi per pengujian disertakan untuk memungkinkan konsumen BEP membedakan artefak di seluruh dimensi ini. Upaya
dan operasi 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 diurai dalam bentuk string seperti yang ditemukan oleh alat build setelah memperluas semua
file .bazelrc
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 dari perintah status
workspace.