Derleme Etkinlik Protokolü Sözlüğü

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Her BEP etkinlik türünün kendi anlamları vardır ve build_event_stream.proto. Her etkinlik türü aşağıdaki sözlükte açıklanmıştır.

İptal edildi

Diğer etkinliklerin aksine Aborted için karşılık gelen bir kimlik türü yoktur. Bunun nedeni Aborted etkinliği, diğer türdeki etkinliklerin yerine geçer. Bu etkinlik, derleme erken sonlandırıldı ve altında göründüğü etkinlik kimliği oluşturulmadı gerekir. Aborted, açıklama için bir numaralandırma ve kullanıcıların kullanabileceği bir açıklama içeriyor tamamlamadığını fark ettim.

Örneğin, kullanıcı Bazel'ı 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

Belirli bir yürütmenin yürütülmesi hakkında ayrıntılı bilgi Derlemedeki işlem. Bu etkinlik varsayılan olarak temel nedenin belirlenmesini desteklemek, yalnızca başarısız işlemler için BEP'ye dahil edilmiştir pek çok yolu vardır. Kullanıcılar --build_event_publish_all_actions işaretini ayarlayabilir ekleyin.ActionExecuted

BuildFinished

Komut tamamlandıktan sonra tek bir BuildFinished etkinliği gönderilir ve komutun çıkış kodunu içerir. Bu etkinlik, (başarı/başarısızlık bilgileri)

BuildMetadata

--build_metadata işaretinin ayrıştırılmış içeriğini içerir. Bu etkinlik mevcut su tesisatı hizmetleri sağlayarak Bazel'in diğer araçlarla entegrasyonunu desteklemek için (örneğin, tanımlayıcılar) için kullanılır.

BuildMetrics

Her komutun sonunda tek bir BuildMetrics etkinliği gönderilir ve bu etkinlik sırasında derleme aracının davranışını ölçmek için yararlı sayaçlar/göstergeler komutuna ekleyin. Bu metrikler, işin gerçekten yapıldığını gösterir ve önbelleğe alınmış sayılmaz. işleri de kapsar.

Java çöpü yoksa memory_metrics öğesinin doldurulmayabileceğini unutmayın veri toplama işlemi yapılır. Kullanıcılar, Çöpü zorlayan --memory_profile=/dev/null seçeneği toplayıcının memory_metrics alanını doldurmak için komutun sonunda çalıştırılması gerekir.

{
  "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, komutu vermelidir.

BuildToolLogs

Komutun sonunda, URI'leri içeren tek bir BuildToolLogs etkinliği gönderilir anlama veya hata ayıklamaya yardımcı olabilecek, derleme aracı tarafından oluşturulan dosyaların sayısı geliştirmenizi sağlar. Bazı bilgiler satır içinde eklenebilir.

{
  "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, aşağıdaki tüm etkinliklerin temsillerini içeren birden çok CommandLine etkinliği içerir: komut satırı bağımsız değişkenleri (seçenekler ve yorumlanmamış bağımsız değişkenler dahil). Her CommandLine etkinliğinin StructuredCommandLineId içinde şu özelliklere sahip bir etiketi vardır: hangi gösterimi aktardığını gösterir; bu üç olay BEP'de yer alıyor:

  • "original": Komut satırı, Bazel'in Bazel'den aldığı şekilde yeniden oluşturuldu istemcisini kullanarak, .rc dosyalarından gelen başlangıç seçenekleri olmadan çalışır.
  • "canonical": .rc dosyaları içeren etkili komut satırı genişletildi ve çağrı politikası uygulandı.
  • "tool": --experimental_tool_command_line seçeneğinden doldurulur. Bu BEP aracılığıyla Bazel'i sarmalayan bir aracın komut satırını aktarmak için yararlıdır. Bu, base64 kodlu bir CommandLine ikili protokol arabellek mesajı olabilir veya ayrıştırılan ancak yorumlanmayan bir dize (örneğin, aracın seçenekleri Bazel'inkinden farklı olabilir).

Yapılandırma

Her configuration için bir Configuration etkinliği gönderilir kullanılan veri türlerini ifade eder. En az bir yapılandırma etkinliği daima hazır bulunun. id, TargetConfigured ve TargetComplete etkinlik kimliği vardır ve bu etkinlikleri derlemelerini inceleyin.

{
  "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 tek bir ConvenienceSymlinksIdentified etkinliği Çalışma alanındaki sembolik bağlantıların nasıl yönetilmesi gerektiğini belirten build komutları. Bu, Bazel'ı uzaktan çağıran ve ardından yerel çalışma alanını Bazel yerel olarak çalıştırılmış gibi çalıştırabilirsiniz.

{
  "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ütme işleminin parçası olarak bir Getirme işleminin gerçekleştirildiğini belirtir. Diğer etkinliklerin aksine, önbelleğe alınan getirme sonucu yeniden kullanılırsa bu etkinlik BEP akışında görünür.

NamedSetOfFiles

NamedSetOfFiles etkinlik, Komut değerlendirmesi sırasında oluşturulan dosya sayısı depset. Geçişli olarak dahil edilen tanımlayıcılar NamedSetOfFilesId tarafından tanımlanır.

Bir akışın NamedSetOfFiles etkinliklerini yorumlama hakkında daha fazla bilgi için bkz. BEP örnekleri sayfası.

OptionsParsed

Tek bir OptionsParsed etkinliğinde, komuta uygulanan tüm seçenekler listelenir. başlangıç seçeneklerini komut seçeneklerinden ayırma. Ayrıca, InvocationPolicy (varsa).

{
  "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",
      "--expand_configs_in_place",
      "--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, kalıplarla eşleşen tüm hedeflerin kümesini gösterir komut satırında yer alır. Başarılı komutlar için tek bir etkinlik vardır PatternExpandedId içindeki tüm kalıplarla ve PatternExpanded etkinliğinin çocukları. Kalıp, herhangi bir test_suite, test_suite tarafından eklenen test hedefleri grubunu belirtir. Her bir kalıp çözülemezse BEP ek bir Aborted etkinliği tanımlayan bir PatternExpandedId 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, Bazel'in oluşturduğu standart çıkışı ve standart hatayı içerir yardımcı olur. Bu etkinlikler ayrıca, gerektiğinde otomatik olarak oluşturulur. mantıksal bir "ebeveyn" tarafından duyurulmayan etkinlikleri duyurmak etkinlik ( (NamedSetOfFiles gibi).

TargetComplete

Şunları tamamlayan her (target, configuration, aspect) kombinasyonu için: yürütme aşamasında, BEP'ye TargetComplete etkinliği dahil edilir. Etkinlik şunları içeriyor: hedefin başarılı/başarısızlığı ile hedefin istenen çıkış grupları.

{
  "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 bir TargetConfigured etkinliği BEP'ye dahil edildi. Bu, bir hedefin "kural türü" için yetkili kaynaktır özelliğini gönderin. Hedefe uygulanan yapılandırmalar, duyurulan çocuklar olarak gönderin.

Örneğin, --experimental_multi_cpu seçenekleriyle derleme yapmak iki öğeli tek bir hedef için aşağıdaki TargetConfigured etkinliği yapılandırma:

{
  "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 bir TargetSummary etkinlik, yapılandırılmış ve yeniden oluşturulmuş ve yapılandırılan hedefe uygulanan tüm yönlerden oluşur.

TestResult

Test istenirse her test denemesi için bir TestResult etkinliği gönderilir ve test başına çalıştırmasını sağlar. Bu, BEP tüketicilerinin hangi ve test işlemlerinin testlerini geçemediğini ve test çıkışlarının (örneğin, günlükler, test.xml dosyaları) kaldırın.

TestSummary

Test istenirse her test (target, configuration) için testin sonucunu yorumlamak için gerekli bilgileri içeren bir TestSummary etkinliği gönderilir sonuç. Test başına düşen deneme, parçalama ve çalıştırma işlemlerinin sayısı, BEP tüketicileri bu boyutlardaki yapıları ayırt edebilir. Denemeler ve test başına çalıştırma değerleri dikkate alınır. Bu testler, toplam TestStatus FLAKY testlerini FAILED testlerinden ayırt edin.

UnstructuredCommandLine

CommandLine'ın aksine, bu etkinlik ayrıştırılmamış komut satırını taşır tüm öğeleri genişlettikten sonra derleme aracının karşılaştığı dize biçimindeki .bazelrc dosyaları ve --config işaretini dikkate alıyoruz.

Bir öğeyi tam olarak yeniden üretmek için UnstructuredCommandLine etkinliğinden yararlanılabilir. verilen komut dosyasıdır.

WorkspaceConfig

Tek bir WorkspaceConfig etkinliği, çalışma alanında olmasını sağlayın.

WorkspaceStatus

Tek bir WorkspaceStatus etkinliği, çalışma alanı durumunun sonucunu içerir komutunu kullanın.