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 lain, Aborted
tidak memiliki jenis ID yang sesuai karena peristiwa Aborted
menggantikan peristiwa jenis lain. Peristiwa ini menunjukkan bahwa
build dihentikan lebih awal dan ID peristiwa yang memuatnya tidak dihasilkan
secara normal. Aborted
berisi deskripsi enum dan mudah dipahami untuk menjelaskan
mengapa build tidak selesai.
Misalnya, jika build mengevaluasi target saat pengguna menyela 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 mengidentifikasi akar masalah
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 kredibel.
BuildMetadata
Berisi konten yang diuraikan dari flag --build_metadata
. Peristiwa ini dibuat
untuk mendukung integrasi Bazel dengan alat lain 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 benar-benar telah selesai dan tidak menghitung pekerjaan yang di-cache
dan digunakan kembali.
Perhatikan bahwa memory_metrics
mungkin tidak diisi jika tidak ada pembersihan sampah memori Java selama eksekusi perintah. Pengguna dapat menetapkan opsi
--memory_profile=/dev/null
yang memaksa pembersih sampah
memori untuk berjalan di akhir perintah untuk 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 mendeskripsikan
perintah sebelum pekerjaan yang berarti dimulai.
BuildToolLogs
Satu peristiwa BuildToolLogs
dikirim di akhir perintah, termasuk URI
file yang dihasilkan oleh alat build yang dapat membantu memahami atau melakukan proses debug
perilaku alat build. Beberapa informasi mungkin disertakan sebagai sisipan.
{
"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 peristiwa CommandLine
memiliki label dalam StructuredCommandLineId
-nya yang
menunjukkan representasi yang disampaikan; tiga peristiwa tersebut muncul di BEP:
"original"
: Merekonstruksi command line saat Bazel menerimanya dari klien Bazel, tanpa opsi startup yang bersumber dari file .rc."canonical"
: Commandline yang efektif dengan kebijakan yang diperluas dan pemanggilan file .rc diterapkan."tool"
: Diisi dari opsi--experimental_tool_command_line
. Hal ini berguna untuk menyampaikan command line alat yang menggabungkan Bazel melalui BEP. Hal ini dapat berupa pesan buffering protokol binerCommandLine
berenkode base64 yang digunakan secara langsung, atau string yang diurai tetapi tidak ditafsirkan (karena opsi alat mungkin berbeda dengan Bazel).
Konfigurasi
Peristiwa Configuration
dikirim untuk setiap configuration
yang digunakan di target level teratas dalam build. Setidaknya satu peristiwa konfigurasi
selalu ada. id
digunakan kembali oleh ID peristiwa TargetConfigured
dan
TargetComplete
serta diperlukan untuk membedakan peristiwa tersebut di
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
dihasilkan oleh
perintah build
untuk menunjukkan cara symlink di ruang kerja harus dikelola.
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 lain, 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.
dependensi yang disertakan secara transitif diidentifikasi oleh NamedSetOfFilesId
.
Untuk informasi selengkapnya tentang cara menafsirkan peristiwa NamedSetOfFiles
aliran data, lihat halaman contoh BEP.
OptionsParsed
Satu peristiwa OptionsParsed
mencantumkan semua opsi yang diterapkan pada perintah,
memisahkan opsi startup dari opsi perintah. Kebijakan 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",
"--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 disediakan pada command line. Agar perintah berhasil, satu peristiwa akan muncul dengan semua pola dalam PatternExpandedId
dan semua target dalam turunan peristiwa PatternExpanded
. Jika pola diperluas ke test_suite
mana pun, kumpulan target pengujian yang disertakan oleh test_suite
. Untuk setiap
pola yang gagal diselesaikan, 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 dibuat secara otomatis 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
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 aplikasi 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 pada target yang dikonfigurasi tersebut.
TestResult
Jika pengujian diminta, peristiwa TestResult
akan dikirim untuk setiap percobaan pengujian, sharding, dan dijalankan per pengujian. Hal ini memungkinkan konsumen BEP mengidentifikasi secara akurat
tindakan pengujian mana yang gagal dalam pengujian 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 agar konsumen BEP dapat membedakan artefak di seluruh dimensi ini. Upaya
dan eksekusi per pengujian dipertimbangkan saat menghasilkan TestStatus
agregat 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 ditemui oleh alat build setelah memperluas semua
file .bazelrc
dan
mempertimbangkan flag --config
.
Peristiwa UnstructuredCommandLine
dapat diandalkan untuk mereproduksi
eksekusi perintah tertentu dengan tepat.
WorkspaceConfig
Satu peristiwa WorkspaceConfig
berisi informasi konfigurasi terkait
ruang kerja, seperti root eksekusi.
WorkspaceStatus
Satu peristiwa WorkspaceStatus
berisi hasil dari perintah status workspace.