Derleme Etkinliği Protokolü (BEP), üçüncü taraf programların 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 bazı anlamların tanımlandığı bir dizi protokol arabelleği mesajıdır. Derleme ve test sonuçları, derleme ilerleme durumu, derleme yapılandırması ve daha fazlası hakkında bilgi içerir. BEP, programatik olarak kullanılmak üzere tasarlanmıştır ve Bazel'in komut satırı çıktısını ayrıştırmayı geçmişte bırakır.
Derleme Etkinliği Protokolü, bir derlemeyle ilgili bilgileri etkinlik olarak temsil eder. Derleme etkinliği, bir derleme etkinliği tanımlayıcısı, bir alt etkinlik tanımlayıcısı grubu ve bir yükü içeren bir protokol arabellek 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 bir şeffaf dize veya yapılandırılmış bilgi olabilir. Derleme etkinliği tanımlayıcısı, bir derleme içinde benzersizdir.
Alt öğeler: Bir derleme etkinliği, alt öğeler alanına derleme etkinliği tanımlayıcılarını ekleyerek diğer derleme etkinliklerini duyurabilir. Örneğin,
PatternExpanded
build etkinliği, genişlettiği hedefleri çocuk olarak duyurur. Protokol, ilk etkinlik hariç tüm etkinliklerin önceki bir etkinlik tarafından duyurulmasını sağlar.Yük: Yük, bir derleme etkinliğiyle ilgili yapılandırılmış bilgileri içerir ve bu etkinliğe özgü bir protokol arabelleği mesajı olarak kodlanır. Yükün beklenen türde olmayabileceğini, ancak derleme işlemi erken iptal edilmişse
Aborted
mesajı olabileceğini unutmayın.
Etkinlik grafiği oluşturma
Tüm derleme etkinlikleri, ana ve alt öğe ilişkileri aracılığıyla yönlendirilmiş döngüsel olmayan 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 mutlaka ondan ö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 kilitlenirse veya ağ aktarımı başarısız olursa 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 bir
BuildStarted
etkinliğidir. Diğer tüm etkinlikler, bu etkinliğin alt öğeleridir. - BuildStarted etkinliğinin doğrudan alt öğeleri, komutla ilgili meta verileri 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 (ör. metrik veya profilleme verileri) içeren etkinlikler izleyebilir.
Derleme Etkinliği Protokolü'nü kullanma
İkili biçimde tüketin
BEP'yi ikili biçimde kullanmak için:
Bazel'in
--build_event_binary_file=/path/to/file
seçeneğini belirterek 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ı içerir. Her mesajın başına, değişken uzunlukta 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üketin
Aşağıdaki Bazel komut satırı işaretleri, BEP'yi metin ve JSON gibi kullanıcı tarafından okunabilir biçimlerde gösterir:
--build_event_text_file
--build_event_json_file
Derleme Etkinliği Hizmeti
Derleme Etkinliği Hizmeti Protokolü, 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 işler.
Bazel, Derleme Etkinliği Hizmeti protokolünün Derleme Etkinliği Protokolü etkinliklerini yayınlayan bir gRPC istemci uygulamasıyla birlikte gönderilir. --bes_backend=HOST:PORT
işaretini kullanarak etkinliklerin gönderileceği uç noktayı belirtebilirsiniz. Arka uçunuzda gRPC kullanılıyorsa adresin önüne uygun şemayı eklemeniz gerekir: düz metin gRPC için grpc://
ve TLS etkinleştirilmiş gRPC için grpcs://
.
Derleme Etkinliği Hizmeti işaretleri
Bazel'de, Derleme Etkinliği Hizmeti protokolüyle ilgili çeşitli işaretler bulunur. Örneğin:
--bes_backend
--[no]bes_best_effort
--[no]bes_lifecycle_events
--bes_results_url
--bes_timeout
--project_id
Bu işaretlerin her birinin açıklaması için Komut Satırı Referansı bölümüne bakın.
Kimlik doğrulama ve güvenlik
Bazel'in Build Event Service uygulaması da kimlik doğrulamayı ve TLS'yi destekler. Bu ayarlar aşağıdaki işaretçiler 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, Derleme Etkinliği Hizmeti ile Uzak Yürütme Uç Noktalarının 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ı bölümüne bakın.
Derleme Etkinliği Hizmeti ve uzak ö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 BES sunucusu, farklı makinelerde oldukları için genellikle bu dosyalara erişemez. Bu sorunu gidermenin bir yolu, Bazel'i uzak önbelleğe alma ile kullanmaktır. Bazel, tüm çıkış dosyalarını uzak önbelleğe yükler (BEP'de referans verilen dosyalar dahil) ve BES sunucusu, referans verilen dosyaları önbellekten getirebilir.
Daha fazla bilgi için GitHub 3689 numaralı sorunu inceleyin.