Derleme Etkinlik Protokolü

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 tanımlanmış bir protokol arabelleği mesajları kümesidir. Derleme ve test sonuçları, derleme ilerleme durumu, derleme yapılandırması ve daha fazlası hakkında bilgi içerir. BEP'nin programatik olarak kullanılması amaçlanmıştır ve Bazel'in komut satırı çıktısını ayrıştırmak artık geçmişte kalmıştı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.

  • Etkinlik Tanımlayıcısı Derleme: 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ış bir bilgi olabilir. Derleme etkinliği tanımlayıcısı, 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 derleme etkinliği, alt öğe olarak genişletileceği hedefleri duyurur. Protokol, ilk etkinlik hariç tüm etkinliklerin önceki bir etkinlik tarafından duyurulmasını sağlar.

  • Yük: Yük, derleme etkinliği hakkında yapılandırılmış bilgileri içerir ve bu etkinliğe özel protokol arabellek 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ştur

Tüm derleme etkinlikleri, üst ve alt ilişkileri üzerinden yönlendirilmiş bir döngüsel 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 etkinlikten önce yayınlanması gerekmediğini lütfen unutmayın. Bir derleme tamamlandığında (başarılı veya başarısız olduğunda) duyurulan tüm etkinlikler yayınlanır. Bazel kilitlenirse veya ağ aktarımı başarısız olursa bazı duyurulan 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 bir BuildStarted etkinliğidir. Diğer tüm etkinlikler bunun alt öğeleridir.
  2. BuildStarted etkinliğinin doğrudan alt öğeleri, komutla ilgili meta verileri 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 izleyebilirsiniz.

Derleme Etkinliği Protokolü'nü kullanma

İkili biçimde tüketin

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 uzunluğuyla sınırlandırılmış, serileştirilmiş protokol arabellek mesajları içerir. Her mesaja önek eklenir ve mesaj uzunluğu değişken uzunlukta bir tam sayı olarak kodlanır. Bu biçim, protokol arabelleği kitaplığının parseDelimitedFrom(InputStream) yöntemi kullanılarak okunabilir.

  2. Ardından, serileştirilmiş protokol arabellek mesajından ilgili bilgileri çıkaran bir program yazın.

Metin veya JSON biçimlerinde tüketin

Aşağıdaki Bazel komut satırı işaretleri, BEP'nin çıktısını metin ve JSON gibi insanların okuyabileceği biçimlerde sunar:

--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ç nokta belirtilebilir. Arka ucunuz gRPC kullanıyorsa adresin önüne uygun şemayı eklemeniz gerekir: gRPC için grpc://, TLS'nin etkin olduğu gRPC için grpcs://.

Derleme Etkinlik 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şaretler kullanılarak kontrol edilebilir. Bu işaretlerin Bazel'in uzaktan yürütme işlemi için de kullanıldığını 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. Genellikle uzak BES sunucusu farklı makinelerde oldukları için 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 (BEP'de başvurulan dosyalar dahil) yükler ve BES sunucusu, referans verilen dosyaları önbellekten getirebilir.

Daha fazla bilgi için GitHub 3689 numaralı sorunu inceleyin.