Build Event Protocol (BEP), üçüncü taraf programların bir Bazel çağrısı hakkında bilgi edinmesine olanak tanır. Örneğin, bir IDE eklentisi veya derleme sonuçlarını gösteren bir kontrol paneli için bilgi toplamak üzere BEP'yi kullanabilirsiniz.
Protokol, üzerinde tanımlanmış bazı semantiklerle birlikte bir dizi protocol buffer mesajından oluşur. Derleme ve test sonuçları, derleme ilerleme durumu, derleme yapılandırması ve daha birçok bilgi içerir. BEP, programatik olarak kullanılmak üzere tasarlanmıştır ve Bazel'in komut satırı çıkışının ayrıştırılmasını geçmişte bırakır.
Derleme Etkinliği Protokolü, bir derlemeyle ilgili bilgileri etkinlik olarak gösterir. Derleme etkinliği, bir derleme etkinliği tanımlayıcısı, bir dizi alt etkinlik tanımlayıcısı ve bir yükten oluşan bir protokol arabelleği mesajıdır.
Derleme Etkinliği Tanımlayıcısı: Derleme etkinliğinin türüne bağlı olarak, derleme etkinliği hakkında daha fazla bilgi veren opak bir dize veya yapılandırılmış bilgiler olabilir. Derleme etkinliği tanımlayıcısı, derleme içinde benzersizdir.
Alt öğeler: Bir derleme etkinliği, alt öğeler alanına kendi derleme etkinliği tanımlayıcılarını ekleyerek diğer derleme etkinliklerini duyurabilir. Örneğin,
PatternExpanded
oluşturma etkinliği, genişlettiği hedefleri alt öğeler olarak duyurur. Protokol, ilk etkinlik hariç tüm etkinliklerin önceki bir etkinlik tarafından duyurulmasını garanti eder.Yük: Yük, bir derleme etkinliğiyle ilgili yapılandırılmış bilgileri içerir. Bu bilgiler, söz konusu etkinliğe özel bir protokol arabelleği mesajı olarak kodlanır. Yükün beklenen türde olmayabileceğini ancak derleme erken sonlandırıldıysa
Aborted
mesajı olabileceğini unutmayın.
Etkinlik grafiği oluşturma
Tüm derleme etkinlikleri, üst ve alt öğe ilişkileri aracılığıyla yönlendirilmiş döngüsüz bir grafik oluşturur. İlk derleme etkinliği hariç her derleme etkinliğinin bir veya daha fazla üst etkinliği vardır. Bir alt etkinliğin tüm üst etkinliklerinin, alt etkinlikten önce yayınlanması gerekmediğini lütfen unutmayın. Bir derleme tamamlandığında (başarılı veya başarısız) duyurulan tüm etkinlikler yayınlanır. Bazel'in kilitlenmesi veya ağ aktarımının başarısız olması durumunda, duyurulan bazı derleme etkinlikleri hiçbir zaman yayınlanmayabilir.
Etkinlik grafiğinin yapısı, bir komutun yaşam döngüsünü yansıtır. Her BEP grafiği aşağıdaki karakteristik şekle sahiptir:
- Kök etkinlik her zaman
BuildStarted
etkinliğidir. Diğer tüm etkinlikler bu etkinliğin alt öğeleridir. - BuildStarted etkinliğinin doğrudan alt öğeleri, komutla ilgili meta veriler içerir.
- Komut tarafından üretilen verileri (ör. oluşturulan dosyalar ve test sonuçları) içeren etkinlikler,
BuildFinished
etkinliğinden önce görünür. BuildFinished
etkinliğini, derlemeyle ilgili özet bilgiler (örneğin, metrik veya profil oluşturma verileri) içeren etkinlikler izleyebilir.
Derleme Etkinliği Protokolü'nü Kullanma
İkili biçimde tüketme
BEP'yi ikili biçimde kullanmak için:
--build_event_binary_file=/path/to/file
seçeneğini belirterek Bazel'in protokol arabelleği mesajlarını bir dosyaya serileştirmesini sağlayın. Dosya, her mesajın uzunlukla sınırlandırıldığı serileştirilmiş protokol arabelleği mesajlarını içerir. Her mesajın önüne, değişken uzunluklu bir tam sayı olarak kodlanmış uzunluğu eklenir. Bu biçim, protokol arabelleği kitaplığınınparseDelimitedFrom(InputStream)
yöntemi kullanılarak okunabilir.Ardından, serileştirilmiş protokol arabelleği mesajından ilgili bilgileri ayıklayan bir program yazın.
Metin veya JSON biçimlerinde tüketme
Aşağıdaki Bazel komut satırı işaretleri, BEP'yi metin ve JSON gibi okunabilir biçimlerde çıkarır:
--build_event_text_file
--build_event_json_file
Derleme Etkinliği Hizmeti
Build Event
Service
Protocol, derleme etkinliklerini yayınlamak için kullanılan genel bir gRPC hizmetidir. Derleme Etkinliği Hizmeti protokolü, BEP'den bağımsızdır ve BEP etkinliklerini opak baytlar olarak ele alır.
Bazel, Build Event Protocol etkinliklerini yayınlayan Build Event Service protokolünün gRPC istemci uygulamasıyla birlikte gelir. Etkinliklerin gönderileceği uç nokta, --bes_backend=HOST:PORT
işareti kullanılarak belirtilebilir. Arka ucunuz gRPC kullanıyorsa adrese uygun şemayı eklemeniz gerekir: düz metin gRPC için grpc://
, TLS etkin gRPC için grpcs://
.
Derleme Etkinliği Hizmeti işaretleri
Bazel'in, Derleme Etkinliği Hizmeti protokolüyle ilgili çeşitli işaretleri vardır. Bunlardan bazıları:
--bes_backend
--[no]bes_lifecycle_events
--bes_results_url
--bes_timeout
--bes_instance_name
Bu işaretlerin her birinin açıklaması için Komut Satırı Referansı'na bakın.
Kimlik doğrulama ve güvenlik
Bazel'in Build Event Service uygulaması da kimlik doğrulama ve TLS'yi destekler. Bu ayarlar aşağıdaki işaretler kullanılarak kontrol edilebilir. Bu işaretlerin Bazel'in Uzaktan Yürütme özelliği için de kullanıldığını lütfen unutmayın. Bu, Build Event Service ve Remote Execution Endpoints'in aynı kimlik doğrulama ve TLS altyapısını paylaşması gerektiği anlamına gelir.
--[no]google_default_credentials
--google_credentials
--google_auth_scopes
--tls_certificate
--[no]tls_enabled
Bu işaretlerin her birinin açıklaması için Komut Satırı Referansı'na bakın.
Derleme Etkinliği Hizmeti ve uzaktan önbelleğe alma
BEP genellikle Bazel'in çalıştığı makinede depolanan günlük dosyalarına (test.log, test.xml vb. ) birçok referans içerir. Uzak bir BES sunucusu, farklı makinelerde bulundukları için genellikle bu dosyalara erişemez. Bu sorunu gidermenin bir yolu, Bazel'i uzaktan önbelleğe alma ile kullanmaktır. Bazel, tüm çıkış dosyalarını (BEP'de referans verilen dosyalar dahil) uzak önbelleğe yükler. BES sunucusu daha sonra referans verilen dosyaları önbellekten getirebilir.
Daha fazla bilgi için GitHub sorunu 3689'a bakın.