Derleme Etkinlik Protokolü Sözlüğü

Her BEP etkinlik türünün kendi semantiği vardır ve bu semantik, build_event_stream.proto dosyasında minimum düzeyde belgelenmiştir. Aşağıdaki sözlükte her etkinlik türü açıklanmaktadır.

İptal edildi

Diğer etkinliklerin aksine, Aborted etkinliği diğer türlerdeki etkinliklerin yerini aldığından Aborted için karşılık gelen bir kimlik türü yoktur. Bu etkinlik, derlemenin erken sonlandırıldığını ve göründüğü etkinlik kimliğinin normal şekilde oluşturulmadığını gösterir. Aborted, derlemenin neden tamamlanmadığını açıklamak için bir enum ve kullanıcı dostu bir açıklama içerir.

Örneğin, kullanıcı Bazel'i durdurduğunda bir derleme 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 işlemin yürütülmesiyle ilgili ayrıntıları sağlar. Varsayılan olarak bu etkinlik, derleme hatalarının temel nedenini belirlemeyi desteklemek için yalnızca başarısız işlemler için BEP'ye dahil edilir. Kullanıcılar, tüm ActionExecuted etkinliklerini dahil etmek için --build_event_publish_all_actions işaretini ayarlayabilir.

BuildFinished

Komut tamamlandıktan sonra tek bir BuildFinished etkinliği gönderilir ve komutun çıkış kodu bu etkinliğe dahil edilir. Bu etkinlik, yetkili başarı/başarısızlık bilgileri sağlar.

BuildMetadata

--build_metadata işaretinin ayrıştırılmış içeriğini içerir. Bu etkinlik, harici verileri (ör. tanımlayıcılar) kullanarak 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, komut sırasında derleme aracının davranışını ölçmek için yararlı olan sayaçlar/ölçümler içerir. Bu metrikler, gerçekten yapılan işi gösterir ve yeniden kullanılan önbelleğe alınmış işi saymaz.

Komut yürütülürken Java çöp toplama işlemi yapılmadıysa memory_metrics değerinin doldurulmayabileceğini unutmayın. Kullanıcılar, memory_metrics öğesini doldurmak için komutun sonunda çöp toplayıcının çalışmasını zorunlu kılan --memory_profile=/dev/null seçeneğini ayarlayabilir.

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

BuildStarted

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

BuildToolLogs

Bir komutun sonunda, derleme aracı davranışını anlamaya veya hata ayıklamaya 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çi olarak 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, 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 içinde, hangi temsili aktardığını belirten bir etiket bulunur. BEP'de bu tür üç etkinlik gösterilir:

  • "original": Komut satırı, .rc dosyalarından alınan başlangıç seçenekleri olmadan Bazel istemcisinden alındığı şekilde yeniden oluşturulur.
  • "canonical": .rc dosyaları genişletilmiş ve çağırma politikası uygulanmış etkili komut satırı.
  • "tool": --experimental_tool_command_line seçeneğinden doldurulur. Bu, BEP aracılığıyla Bazel'i 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'in seçeneklerinden farklı olabilir).

Yapılandırma

Bir derlemedeki üst düzey hedeflerde kullanılan her configuration için bir Configuration etkinliği gönderilir. En az bir yapılandırma etkinliği her zaman bulunur. id, TargetConfigured ve TargetComplete etkinlik kimlikleri tarafından yeniden kullanılır ve çoklu yapılandırma derlemelerinde bu etkinlikleri netleştirmek 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

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

{
  "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 kapsamında bir 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 dosyaların depset ile eşleşen bir yapıyı bildirir. Geçişli olarak dahil edilen bağımlılık kümeleri NamedSetOfFilesId ile tanımlanır.

Bir yayınla ilgili NamedSetOfFiles etkinliklerini yorumlama hakkında daha fazla bilgi için BEP örnekleri sayfasına bakı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 de dahildir.

{
  "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, komut satırında sağlanan kalıplarla eşleşen tüm hedefleri gösterir. Başarılı komutlar için, PatternExpandedId içindeki tüm kalıpları ve PatternExpanded içindeki tüm hedefleri içeren tek bir etkinlik bulunur. Bu etkinlik, alt öğeler içerir. Kalıp, test_suite tarafından dahil edilen test hedefleri kümesi olarak genişlerse.test_suite Çözülemeyen her desen için BEP, deseni tanımlayan bir PatternExpandedId ile 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, komut yürütme sırasında Bazel tarafından üretilen standart çıkışı ve standart hatayı içerir. Bu etkinlikler, mantıksal bir "üst" etkinlik (ö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 dahil edilir. Bu, bir hedefin "kural türü" özelliği için yetkili kaynaktır. Hedefe uygulanan yapılandırmalar, etkinliğin duyurulan çocuklarında görünür.

Örneğin, --experimental_multi_cpu seçenekleriyle oluşturulan bir hedefleme, 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 test başına, parça başına ve test çalıştırması başına bir TestResult etkinliği gönderilir. Bu sayede BEP tüketicileri, testlerinin hangi test işlemleri tarafından başarısız olduğunu ve her test işlemi için test çıktılarını (ör. günlükler, test.xml dosyaları) tam olarak belirleyebilir.

TestSummary

Test istenirse test sonuçlarının yorumlanması için gerekli bilgileri içeren TestSummary etkinliği gönderilir (target, configuration). BEP tüketicilerinin bu boyutlardaki yapay nesneleri ayırt edebilmesi için test başına deneme, parça ve çalıştırma sayısı dahil edilir. TestStatus testlerini FLAKY testlerinden ayırt etmek için toplu TestStatus oluşturulurken test başına deneme ve çalıştırma sayısı dikkate alınır.FAILED

UnstructuredCommandLine

CommandLine'dan farklı olarak bu etkinlik, tüm .bazelrc dosyaları genişletildikten ve --config işareti dikkate alındıktan sonra derleme aracı tarafından karşılaşılan, ayrıştırılmamış komut satırı işaretlerini dize biçiminde taşır.

UnstructuredCommandLine etkinliği, belirli bir komut yürütme işlemini tam olarak yeniden oluşturmak için kullanılabilir.

WorkspaceConfig

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

WorkspaceStatus

Tek bir WorkspaceStatus etkinliği, workspace status komutunun sonucunu içerir.