Derleme Etkinlik Protokolü

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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:

  1. Kök etkinlik her zaman BuildStarted etkinliğidir. Diğer tüm etkinlikler bu etkinliğin alt öğeleridir.
  2. BuildStarted etkinliğinin doğrudan alt öğeleri, komutla ilgili meta veriler içerir.
  3. Komut tarafından üretilen verileri (ör. oluşturulan dosyalar ve test sonuçları) içeren etkinlikler, BuildFinished etkinliğinden önce görünür.
  4. 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:

  1. --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ın parseDelimitedFrom(InputStream) yöntemi kullanılarak okunabilir.

  2. 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.