Setiap jenis peristiwa BEP memiliki semantiknya sendiri, 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
menggantikan peristiwa jenis lainnya. Peristiwa ini mengindikasikan bahwa
build dihentikan lebih awal dan ID peristiwa yang muncul di dalamnya tidak dibuat
seperti biasanya. Aborted
berisi enum dan deskripsi yang mudah dipahami manusia untuk menjelaskannya
mengapa build tidak selesai.
Misalnya, jika build mengevaluasi target saat pengguna menyela Bazel, BEP berisi peristiwa seperti berikut:
{
"id": {
"targetCompleted": {
"label": "//:foo",
"configuration": {
"id": "544e39a7f0abdb3efdd29d675a48bc6a"
}
}
},
"aborted": {
"reason": "USER_INTERRUPTED"
}
}
ActionExecuted
Memberikan detail tentang eksekusi
Action dalam build. Secara default, acara 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 {i>exit code<i} untuk perintah tersebut. Peristiwa ini memberikan
informasi keberhasilan/kegagalan.
BuildMetadata
Berisi konten yang diuraikan dari tanda --build_metadata
. Acara ini ada
untuk mendukung integrasi Bazel dengan peralatan lain melalui pemipaan data eksternal (seperti
tertentu).
BuildMetrics
Satu peristiwa BuildMetrics
dikirim di akhir setiap perintah dan mencakup
penghitung/pengukur yang berguna untuk mengukur perilaku alat build selama
perintah. Metrik ini menunjukkan pekerjaan yang benar-benar telah dilakukan dan tidak dihitung di-cache
pekerjaan yang digunakan kembali.
Perhatikan bahwa memory_metrics
mungkin tidak diisi jika tidak ada sampah Java
selama eksekusi perintah. Pengguna dapat menyetel atribut
Opsi --memory_profile=/dev/null
yang memaksa sampah
kolektor untuk dijalankan 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 data BEP, BuildStarted
menyertakan metadata yang menjelaskan
sebelum pekerjaan yang berarti dimulai.
BuildToolLogs
Satu peristiwa BuildToolLogs
dikirim di akhir perintah, termasuk URI
file yang dihasilkan oleh alat build yang dapat membantu pemahaman atau proses 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 ditafsirkan).
Setiap peristiwa CommandLine
memiliki label di StructuredCommandLineId
yang
menunjukkan representasi mana yang ingin disampaikan; tiga peristiwa semacam itu muncul di BEP:
"original"
: Command line yang direkonstruksi saat Bazel menerimanya dari Bazel klien, tanpa opsi startup yang bersumber dari file .rc."canonical"
: Command line yang efektif dengan file .rc yang diperluas dan kebijakan pemanggilan diterapkan."tool"
: Diisi dari opsi--experimental_tool_command_line
. Ini berguna untuk menyampaikan baris perintah alat yang membungkus Bazel melalui BEP. Ini dapat berupa pesan buffering protokol binerCommandLine
yang dienkode base64 yang digunakan secara langsung, atau string yang diuraikan tetapi tidak ditafsirkan (seperti opsi alat mungkin berbeda dari Bazel).
Konfigurasi
Peristiwa Configuration
dikirim untuk setiap configuration
yang digunakan pada target level atas dalam build. Setidaknya satu peristiwa konfigurasi
selalu hadir. id
digunakan kembali oleh TargetConfigured
dan
TargetComplete
ID peristiwa dan diperlukan untuk membedakan peristiwa tersebut
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 --experimental_convenience_symlinks_bep_event
ditetapkan, satu peristiwa ConvenienceSymlinksIdentified
dihasilkan oleh
Perintah build
untuk menunjukkan cara mengelola symlink di ruang kerja.
Ini memungkinkan alat pembuatan yang memanggil Bazel dari jarak jauh kemudian mengatur
{i>workspace<i} 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 lain, jika hasil pengambilan yang di-cache digunakan kembali, peristiwa ini tidak 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 pada perintah tersebut,
memisahkan opsi {i>startup<i}
dari opsi perintah. Laporan 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 pada command line. Agar perintah berhasil, terdapat satu peristiwa
dengan semua pola di PatternExpandedId
dan semua target di
turunan peristiwa PatternExpanded
. Jika pola diperluas ke salah satu
test_suite
adalah kumpulan target pengujian yang disertakan oleh test_suite
. Untuk setiap
pola yang gagal di-resolve, BEP berisi Aborted
tambahan
dengan PatternExpandedId
yang mengidentifikasi polanya.
{
"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 kemajuan berisi {i>output<i} standar dan {i>standard error<i} yang dihasilkan oleh Bazel selama menjalankan perintah. Peristiwa ini juga dibuat secara otomatis sesuai kebutuhan untuk mengumumkan peristiwa yang belum diumumkan oleh "induk" yang logis peristiwa (di khususnya, NamedSetOfFiles.)
TargetComplete
Untuk setiap kombinasi (target, configuration, aspect)
yang menyelesaikan
fase eksekusi, peristiwa TargetComplete
akan disertakan dalam BEP. Acara 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
dikeluarkan
termasuk dalam BEP. Ini adalah sumber resmi untuk "jenis aturan" target
. Konfigurasi yang diterapkan ke target muncul dalam
turunan peristiwa.
Misalnya, membangun 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, TargetSummary
peristiwa akan disertakan dengan hasil keberhasilan agregat yang mencakup konfigurasi
target eksekusi dan semua aspek yang
diterapkan pada target yang telah dikonfigurasi tersebut.
TestResult
Jika pengujian diminta, peristiwa TestResult
akan dikirim untuk setiap percobaan pengujian,
sharding, dan berjalan per pengujian. Hal ini memungkinkan konsumen BEP
untuk mengidentifikasi dengan tepat
tindakan pengujian gagal dalam pengujiannya dan
mengidentifikasi {i>output<i} 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 pengujian
hasil pengujian tersebut. Jumlah percobaan, shard, dan operasi per pengujian disertakan untuk mengaktifkan
Konsumen BEP untuk membedakan artefak di seluruh dimensi ini. Jumlah percobaan
dan operasi per pengujian dipertimbangkan saat menghasilkan TestStatus
agregat untuk
membedakan pengujian FLAKY
dari pengujian FAILED
.
UnstructuredCommandLine
Tidak seperti CommandLine, peristiwa ini menjalankan command line yang tidak diurai
flag dalam bentuk string seperti yang ditemukan oleh alat build setelah meluaskan semua
File .bazelrc
dan
mempertimbangkan flag --config
.
Peristiwa UnstructuredCommandLine
dapat diandalkan untuk mereproduksi suatu peristiwa secara tepat
menjalankan perintah tertentu.
WorkspaceConfig
Satu peristiwa WorkspaceConfig
berisi informasi konfigurasi terkait
ruang kerja Anda, seperti root eksekusi.
WorkspaceStatus
Satu peristiwa WorkspaceStatus
berisi hasil dari status ruang kerja
baris perintah.