Derleme Etkinlik Protokolü

Sorun bildirme Kaynağı görüntüleme Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Etkinlik Derleme 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ö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 pek çok konuda 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; derleme etkinliği tanımlayıcısı, bir dizi alt etkinlik tanımlayıcısı ve bir yükten oluşan 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ı, derleme içinde benzersizdir.

  • Alt yayıncılar: Derleme etkinliği, derleme etkinliği tanımlayıcılarını alt öğe alanına 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, 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 derlemenin zamanından önce iptal edilmesi durumunda 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 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 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, bu etkinliğin alt öğeleridir.
  2. BuildStarted etkinliğinin hemen alt öğeleri, komutla ilgili meta verileri içerir.
  3. Komut tarafından oluşturulan 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 (ör. metrik veya profilleme verileri) içeren etkinlikler izleyebilir.

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'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 mesajın önüne, değişken uzunlukta bir tam sayı olarak kodlanmış uzunluğu eklenir. Bu biçim, protokol arabellek 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 kullanma

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 bayt olarak ele alır. 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 Etkinlik Hizmeti işaretleri

Bazel'in, Derleme Etkinliği Hizmeti protokolüyle ilgili olarak 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
  • --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 Derleme Etkinliği Hizmeti uygulaması, kimlik doğrulama 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 işlemi 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ğrulamayı 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 çözmenin bir yolu, Bazel'i uzaktan ö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.