Derleme Etkinlik Protokolü

Sorun bildir Kaynağı göster

Etkinlik Oluşturma Protokolü (BEP), üçüncü taraf programlarının Bazel çağrısı hakkında bilgi edinmesini sağlar. Örneğin, bir IDE eklentisi veya derleme sonuçlarını görüntüleyen bir kontrol paneli için bilgi toplamak üzere BEP'yi kullanabilirsiniz.

Protokol, üzerinde bazı anlamlar tanımlanmış protokol arabelleği mesajlarından oluşur. Derleme ve test sonuçları, derleme ilerleme durumu, derleme yapılandırması ve daha pek çok konu hakkında bilgi içerir. BEP'nin programlı olarak kullanılması amaçlanmıştır ve Bazel'in komut satırı çıkışının ayrıştırılması geçmişte kalır.

Derleme Etkinliği Protokolü, derlemeyle ilgili bilgileri etkinlik olarak temsil eder. Derleme etkinliği; derleme etkinliği tanımlayıcısı, alt etkinlik tanımlayıcıları ve 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ış bilgi olabilir. Derleme etkinliği tanımlayıcısı, derleme içinde benzersizdir.

  • Alt öğeler: Derleme etkinliği, derleme etkinliği tanımlayıcılarını alt alanına ekleyerek diğer derleme etkinliklerini duyurabilir. Örneğin, PatternExpanded derleme etkinliği, alt öğelere genişletildiği hedefleri bildirir. Protokol, ilk etkinlik dışındaki tüm etkinliklerin önceki bir etkinlik tarafından duyurulmasını garanti eder.

  • Yük: Yük, derleme etkinliği hakkında yapılandırılmış bilgiler içerir. Bu bilgiler, etkinliğe özel bir protokol arabellek mesajı olarak kodlanır. Yükün beklenen türde olmayabileceğini ancak derleme erken iptal edilirse Aborted mesajı olabileceğini unutmayın.

Etkinlik grafiği oluştur

Tüm derleme etkinlikleri, ebeveyn ve çocuk ilişkileri üzerinden yönlendirilmiş bir döngüsel grafik oluşturur. İlk derleme etkinliği dışındaki her derleme etkinliğinin bir veya daha fazla üst etkinliği vardır. Bir alt etkinliğe ait tüm üst etkinliklerin bu tarihten ö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 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 bir BuildStarted etkinliğidir. Diğer tüm etkinlikler, bunların alt öğeleridir.
  2. BuildStarted etkinliğinin hemen alt öğeleri komutla ilgili meta verileri içerir.
  3. Komutun oluşturduğu verileri (ör. derlenen dosyalar ve test sonuçları) içeren etkinlikler, BuildFinished etkinliğinden önce görünür.
  4. BuildFinished etkinliğinin ardından derleme hakkında özet bilgiler (ör. metrik veya profil oluşturma verileri) içeren etkinlikler bekleyebilir.

Derleme Etkinliği Protokolünü Kullanma

İkili biçimde tüket

BEP'yi ikili biçimde kullanmak için:

  1. --build_event_binary_file=/path/to/file seçeneğini belirterek, Bazel'ın protokol arabellek mesajlarını bir dosyada serileştirmesini sağlayın. Dosya, her mesajın uzunluğu sınırlandırılmış olarak serileştirilmiş protokol arabelleği mesajları içerir. Her mesajın önünde değişken uzunlukta bir tam sayı olarak kodlanmış uzunluk bulunur. Bu biçim, protokol arabelleği kitaplığının parseDelimitedFrom(InputStream) yöntemi kullanılarak okunabilir.

  2. Daha sonra, serileştirilmiş protokol arabelleği mesajından ilgili bilgileri çıkaran bir program yazın.

Metin veya JSON biçimlerinde kullanın

Aşağıdaki Bazel komut satırı işaretleri, BEP'yi metin ve JSON gibi kullanıcılar tarafından okunabilir biçimlerde oluşturur:

--build_event_text_file
--build_event_json_file

Derleme Etkinliği Hizmeti

Etkinlik Derleme 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 bayt olarak ele alır. Bazel, Derleme Etkinliği Protokolü etkinliklerini yayınlayan Derleme Etkinliği Hizmeti protokolünün gRPC istemci uygulamasını kullanarak birlikte gelir. Etkinliklerin gönderileceği uç nokta, --bes_backend=HOST:PORT işaretini kullanarak belirtilebilir. Arka ucunuz gRPC kullanıyorsa adresin önüne uygun şemayı eklemeniz gerekir: düz metin gRPC için grpc:// ve TLS'nin etkin olduğu gRPC için grpcs://.

Derleme Etkinliği Hizmeti işaretleri

Bazel'ın, Derleme Etkinliği Hizmeti protokolüyle ilgili aşağıdakiler gibi çeşitli işaretleri vardır:

  • --bes_backend
  • --[no]bes_best_effort
  • --[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ı bölümüne bakın.

Kimlik doğrulama ve güvenlik

Bazel'in Derleme Etkinliği Hizmeti uygulaması, kimlik doğrulamayı ve TLS'yi de 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ı unutmayın. Bu, Derleme Etkinliği Hizmeti ve Uzaktan 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 Etkinlik 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 oldukları için genellikle bu dosyalara erişemez. Bu sorunu çözmenin bir yolu, Bazel'i uzaktan ö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 daha sonra referans verilen dosyaları önbellekten getirebilir.

Daha fazla bilgi için GitHub sorunu 3689'a bakın.