Derleme Etkinlik Protokolü Sözlüğü

Sorun bildir Kaynağı görüntüleyin Nightly · 7.4 .

Her BEP etkinlik türünün kendi semantikleri vardır ve bunlar build_event_stream.proto dosyasında minimum düzeyde açıklanmıştır. Her etkinlik türü aşağıdaki sözlükte açıklanmıştır.

İptal edildi

Aborted etkinliği diğer türdeki etkinliklerin yerini aldığından diğer etkinliklerin aksine Aborted'ün karşılık gelen bir kimlik türü yoktur. Bu etkinlik, derlemenin erken sonlandırıldığını ve altında görünen etkinlik kimliğinin normal şekilde üretilmediğini gösterir. Aborted, derlemenin neden tamamlanmadığını açıklayan bir enum ve kullanıcı dostu bir açıklama içerir.

Örneğin, kullanıcı Bazel'i kesintiye uğrattığında bir derleme bir hedefi değerlendiriyorsa BeP aşağıdakine benzer bir etkinlik içerir:

{
  "id": {
    "targetCompleted": {
      "label": "//:foo",
      "configuration": {
        "id": "544e39a7f0abdb3efdd29d675a48bc6a"
      }
    }
  },
  "aborted": {
    "reason": "USER_INTERRUPTED"
  }
}

ActionExecuted

Bir derlemede belirli bir İşlem'in yürütülmesiyle ilgili ayrıntılar sağlar. Varsayılan olarak bu etkinlik, yapı hatalarının temel nedenini belirlemeye yardımcı olmak için yalnızca başarısız işlemler için BEP'ye dahil edilir. Kullanıcılar, --build_event_publish_all_actions işaretini ActionExecuted etkinliklerinin tümünü içerecek şekilde ayarlayabilir.

BuildFinished

Komut tamamlandıktan sonra tek bir BuildFinished etkinliği gönderilir ve bu etkinlikte komutun çıkış kodu yer alır. Bu etkinlik, yetkili başarı/başarısızlık bilgilerini sağlar.

BuildMetadata

--build_metadata işaretinin ayrıştırılmış içeriğini içerir. Bu etkinlik, harici verileri (tanımlayıcılar gibi) bağlayarak Bazel'in diğer araçlarla entegrasyonunu desteklemek için kullanılır.

BuildMetrics

Her komutun sonunda tek bir BuildMetrics etkinliği gönderilir. Bu etkinlik, derleme aracının komut sırasındaki davranışını ölçmek için yararlı olan sayaçlar/ölçerler içerir. Bu metrikler, gerçekten yapılan işi gösterir ve yeniden kullanılan önbelleğe alınmış işleri saymaz.

Komutun yürütülmesi sırasında Java atık toplama işlemi yapılmadıysa memory_metrics değerinin doldurulmayabileceğini unutmayın. Kullanıcılar, memory_metrics seçeneğini ayarlayarak çöp toplayıcının memory_metrics değerini doldurmak için komutun sonunda çalışmasını zorunlu kılar.

{
  "id": {
    "buildMetrics": {}
  },
  "buildMetrics": {
    "actionSummary": {
      "actionsExecuted": "1"
    },
    "memoryMetrics": {},
    "targetMetrics": {
      "targetsLoaded": "9",
      "targetsConfigured": "19"
    },
    "packageMetrics": {
      "packagesLoaded": "5"
    },
    "timingMetrics": {
      "cpuTimeInMs": "1590",
      "wallTimeInMs": "359"
    }
  }
}

BuildStarted

BEP akışındaki ilk etkinlik olan BuildStarted, herhangi bir anlamlı çalışma başlamadan önce komutu açıklayan meta verileri içerir.

BuildToolLogs

Bir komutun sonunda, derleme aracının davranışını anlamanıza veya hata ayıklamanıza yardımcı olabilecek, derleme aracı tarafından oluşturulan dosyaların URI'leri de dahil olmak üzere tek bir BuildToolLogs etkinliği gönderilir. Bazı bilgiler satır içine dahil edilmiş olabilir.

{
  "id": {
    "buildToolLogs": {}
  },
  "lastMessage": true,
  "buildToolLogs": {
    "log": [
      {
        "name": "elapsed time",
        "contents": "MC4xMjEwMDA="
      },
      {
        "name": "process stats",
        "contents": "MSBwcm9jZXNzOiAxIGludGVybmFsLg=="
      },
      {
        "name": "command.profile.gz",
        "uri": "file:///tmp/.cache/bazel/_bazel_foo/cde87985ad0bfef34eacae575224b8d1/command.profile.gz"
      }
    ]
  }
}

CommandLine

BEP, tüm komut satırı bağımsız değişkenlerinin (seçenekler ve yorumlanmamış bağımsız değişkenler dahil) temsillerini içeren birden fazla CommandLine etkinliği içerir. Her CommandLine etkinliğinin StructuredCommandLineId alanında, hangi temsili aktardığını belirten bir etiket bulunur. BEP'de bu tür üç etkinlik görünür:

  • "original": Komut satırı, Bazel'ın .rc dosyalarından alınan başlangıç seçenekleri olmadan Bazel istemcisinden aldığı şekilde yeniden oluşturuldu.
  • "canonical": .rc dosyalarının genişletildiği ve çağrı politikasının uygulandığı etkili komut satırı.
  • "tool": --experimental_tool_command_line seçeneğinden doldurulur. Bu, Bazel'i BEP üzerinden sarmalayan bir aracın komut satırını iletmek için kullanışlıdır. Bu, doğrudan kullanılan base64 kodlu bir CommandLine ikili protokol arabellek mesajı veya ayrıştırılan ancak yorumlanmayan bir dize olabilir (çünkü aracın seçenekleri Bazel'den farklı olabilir).

Yapılandırma

Bir derlemedeki üst düzey hedeflerde kullanılan her configuration için bir Configuration etkinliği gönderilir. Her zaman en az bir yapılandırma etkinliği bulunur. id, TargetConfigured ve TargetComplete etkinlik kimlikleri tarafından yeniden kullanılır ve çok yapılandırmalı derlemelerde bu etkinliklerin anlamını açıklığa kavuşturmak için gereklidir.

{
  "id": {
    "configuration": {
      "id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
    }
  },
  "configuration": {
    "mnemonic": "k8-fastbuild",
    "platformName": "k8",
    "cpu": "k8",
    "makeVariable": {
      "COMPILATION_MODE": "fastbuild",
      "TARGET_CPU": "k8",
      "GENDIR": "bazel-out/k8-fastbuild/bin",
      "BINDIR": "bazel-out/k8-fastbuild/bin"
    }
  }
}

ConvenienceSymlinksIdentified

Deneysel. --experimental_convenience_symlinks_bep_event seçeneği ayarlanırsa çalışma alanındaki sembolik bağlantıların nasıl yönetilmesi gerektiğini göstermek için build komutları tarafından tek bir ConvenienceSymlinksIdentified etkinliği oluşturulur. Bu sayede, Bazel'i uzaktan çağıran ve ardından yerel çalışma alanını Bazel yerel olarak çalıştırılmış gibi düzenleyen derleme araçları etkinleştirilebilir.

{
  "id": {
    "convenienceSymlinksIdentified":{}
  },
  "convenienceSymlinksIdentified": {
    "convenienceSymlinks": [
      {
        "path": "bazel-bin",
        "action": "CREATE",
        "target": "execroot/google3/bazel-out/k8-fastbuild/bin"
      },
      {
        "path": "bazel-genfiles",
        "action": "CREATE",
        "target": "execroot/google3/bazel-out/k8-fastbuild/genfiles"
      },
      {
        "path": "bazel-out",
        "action": "CREATE",
        "target": "execroot/google3/bazel-out"
      }
    ]
  }
}

Getir

Komut yürütmenin bir parçası olarak Getirme işleminin gerçekleştiğini gösterir. Diğer etkinliklerin aksine, önbelleğe alınmış bir getirme sonucu yeniden kullanılırsa bu etkinlik BEP akışında görünmez.

NamedSetOfFiles

NamedSetOfFiles etkinlikleri, komut değerlendirmesi sırasında oluşturulan bir depset dosyayla eşleşen bir yapıyı bildirir. Geçiş yoluyla dahil edilen depsetler NamedSetOfFilesId ile tanımlanır.

Bir akıştaki NamedSetOfFiles etkinliklerini yorumlama hakkında daha fazla bilgi için BEP örnekleri sayfasına göz atın.

OptionsParsed

Tek bir OptionsParsed etkinliği, komuta uygulanan tüm seçenekleri listeler ve başlangıç seçeneklerini komut seçeneklerinden ayırır. Varsa InvocationPolicy'yi de içerir.

{
  "id": {
    "optionsParsed": {}
  },
  "optionsParsed": {
    "startupOptions": [
      "--max_idle_secs=10800",
      "--noshutdown_on_low_sys_mem",
      "--connect_timeout_secs=30",
      "--output_user_root=/tmp/.cache/bazel/_bazel_foo",
      "--output_base=/tmp/.cache/bazel/_bazel_foo/a61fd0fbee3f9d6c1e30d54b68655d35",
      "--deep_execroot",
      "--idle_server_tasks",
      "--write_command_log",
      "--nowatchfs",
      "--nofatal_event_bus_exceptions",
      "--nowindows_enable_symlinks",
      "--noclient_debug",
    ],
    "cmdLine": [
      "--enable_platform_specific_config",
      "--build_event_json_file=/tmp/bep.json"
    ],
    "explicitCmdLine": [
      "--build_event_json_file=/tmp/bep.json"
    ],
    "invocationPolicy": {}
  }
}

PatternExpanded

PatternExpanded etkinlikleri, komut satırında sağlanan kalıplarla eşleşen tüm hedeflerin kümesini gösterir. Başarılı komutlar için PatternExpandedId içindeki tüm kalıplar ve PatternExpanded etkinliğinin çocuklarındaki tüm hedefleri içeren tek bir etkinlik mevcuttur. Kalıp herhangi bir test_suite genişlerse test_suite tarafından dahil edilen test hedefleri kümesidir. Çözülemeyen her kalıp için BEP, kalıbı tanımlayan bir PatternExpandedId içeren ek bir Aborted etkinliği içerir.

{
  "id": {
    "pattern": {
      "pattern":["//base:all"]
    }
  },
  "children": [
    {"targetConfigured":{"label":"//base:foo"}},
    {"targetConfigured":{"label":"//base:foobar"}}
  ],
  "expanded": {
    "testSuiteExpansions": {
      "suiteLabel": "//base:suite",
      "testLabels": "//base:foo_test"
    }
  }
}

İlerleme

İlerleme etkinlikleri, komutun yürütülmesi sırasında Bazel tarafından üretilen standart çıkışı ve standart hatayı içerir. Bu etkinlikler, mantıksal bir "üst öğe" etkinliği (özellikle NamedSetOfFiles) tarafından duyurulmamış etkinlikleri duyurmak için gerektiğinde otomatik olarak da oluşturulur.

TargetComplete

Yürütme aşamasını tamamlayan her (target, configuration, aspect) kombinasyonu için BEP'ye bir TargetComplete etkinliği dahil edilir. Etkinlik, hedefin başarı/başarısızlık durumunu ve hedefin istenen çıkış gruplarını içerir.

{
  "id": {
    "targetCompleted": {
      "label": "//examples/py:bep",
      "configuration": {
        "id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
      }
    }
  },
  "completed": {
    "success": true,
    "outputGroup": [
      {
        "name": "default",
        "fileSets": [
          {
            "id": "0"
          }
        ]
      }
    ]
  }
}

TargetConfigured

Analiz aşamasını tamamlayan her hedef için BEP'ye bir TargetConfigured etkinliği eklenir. Bu, bir hedefin "kural türü" özelliğinin yetkili kaynağıdır. Hedefe uygulanan yapılandırmalar, etkinliğin duyurulan alt öğelerinde görünür.

Örneğin, --experimental_multi_cpu seçenekleriyle oluşturma işlemi, iki yapılandırmaya sahip tek bir hedef için aşağıdaki TargetConfigured etkinliğini oluşturabilir:

{
  "id": {
    "targetConfigured": {
      "label": "//starlark_configurations/multi_arch_binary:foo"
    }
  },
  "children": [
    {
      "targetCompleted": {
        "label": "//starlark_configurations/multi_arch_binary:foo",
        "configuration": {
          "id": "c62b30c8ab7b9fc51a05848af9276529842a11a7655c71327ade26d7c894c818"
        }
      }
    },
    {
      "targetCompleted": {
        "label": "//starlark_configurations/multi_arch_binary:foo",
        "configuration": {
          "id": "eae0379b65abce68d54e0924c0ebcbf3d3df26c6e84ef7b2be51e8dc5b513c99"
        }
      }
    }
  ],
  "configured": {
    "targetKind": "foo_binary rule"
  }
}

TargetSummary

Yürütülen her (target, configuration) çifti için, yapılandırılmış hedefin yürütülmesini ve bu yapılandırılmış hedefe uygulanan tüm yönleri kapsayan toplu bir başarı sonucu içeren bir TargetSummary etkinliği eklenir.

TestResult

Test istenirse her test denemesi, bölüm ve test için bir TestResult etkinliği gönderilir. Bu sayede BEP tüketicileri, testlerinde hangi test işlemlerinin başarısız olduğunu ve her test işleminin test çıkışlarını (ör. günlükler, test.xml dosyaları) tam olarak belirleyebilir.

TestSummary

Test istenirse her test (target, configuration) için test sonuçlarını yorumlamak için gerekli bilgileri içeren bir TestSummary etkinliği gönderilir. BEP tüketicilerinin bu boyutlar arasında yapıları ayırt etmesine olanak tanımak için test başına deneme, parça ve çalıştırma sayısı dahil edilir. FLAKY testlerini FAILED testlerinden ayırmak için toplu TestStatus oluşturulurken test başına girişimler ve çalıştırmalar dikkate alınır.

UnstructuredCommandLine

CommandLine'den farklı olarak bu etkinlik, tüm .bazelrc dosyalarını genişletip --config işaretini dikkate aldıktan sonra derleme aracının karşılaştığı dize biçimindeki ayrıştırılmamış komut satırı işaretlerini taşır.

Belirli bir komutun yürütülmesini tam olarak yeniden oluşturmak için UnstructuredCommandLine etkinliğinden yararlanılabilir.

WorkspaceConfig

Tek bir WorkspaceConfig etkinliği, çalışma alanıyla ilgili yürütme kökü gibi yapılandırma bilgilerini içerir.

WorkspaceStatus

Tek bir WorkspaceStatus etkinliği, çalışma alanı durumu komutunun sonucunu içerir.