Derleme Etkinlik Protokolü Sözlüğü

Sorun bildirin Kaynağı göster

Her BEP etkinlik türünün, build_event_stream.proto içerisinde minimum düzeyde belgelenen kendi anlamı vardır. Her etkinlik türü aşağıdaki sözlükte açıklanmıştır.

İptal edildi

Aborted etkinliği, diğer türlerin yerine geçtiğinde, diğer etkinliklerden farklı olarak Aborted için karşılık gelen bir kimlik türü bulunmaz. Bu etkinlik, derlemenin erken sonlandırıldığını ve altında göründüğü etkinlik kimliğinin normal bir şekilde oluşturulmadığını gösterir. Aborted, derlemenin neden tamamlanmadığını açıklamak için bir numaralandırma ve kullanıcıların okuyabileceği 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 derlemedeki belirli bir İşlemin yürütülmesi hakkında ayrıntılı bilgi sağlar. Varsayılan olarak bu etkinlik, derleme hatalarının temel nedenini belirlemeyi desteklemek amacıyla 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 komut için çıkış kodunu içerir. Bu etkinlik güvenilir 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 (tanımlayıcılar gibi) tesisat yaparak Bazel'in diğer araçlarla entegrasyonunu desteklemek için oluşturulmuştur.

BuildMetrics

Her komutun sonunda tek bir BuildMetrics etkinliği gönderilir ve komut sırasında derleme aracının davranışını ölçmek için yararlı sayaçlar/göstergeler içerir. Bu metrikler, çalışmaların gerçekten tamamlandığını gösterir ve önbelleğe alınmış çalışmaları 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 öğesini doldurmak için komutun sonunda çöp toplayıcıyı çalışmaya zorlayan --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

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

BuildToolLogs

Komutun sonunda, derleme aracı tarafından oluşturulan ve derleme aracı davranışını anlamaya veya hata ayıklamaya yardımcı olabilecek dosyaların URI'lerini içeren tek bir BuildToolLogs etkinliği gönderilir. 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, 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 gösterimi aktardığını belirten bir etiket bulunur. Bu tür üç etkinlik BEP'de 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ı genişletildi ve çağrı politikası uygulanmış olan etkili komut satırı.
  • "tool": --experimental_tool_command_line seçeneğinden doldurulur. Bu, Bazel'i BEP aracılığıyla sarmalayan bir aracın komut satırını aktarmak için yararlıdır. Bu, doğrudan kullanılan base64 kodlu bir CommandLine ikili protokolü arabellek mesajı veya ayrıştırılan ancak yorumlanmayan bir dize (araç seçenekleri Bazel'ınkinden farklı olabilir) 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 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

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. Böylece, Bazel'i uzaktan çağıran araçlar derlenebilir ve ardından yerel çalışma alanı Bazel yerel olarak çalıştırılmış gibi ayarlanabilir.

{
  "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"
      }
    ]
  }
}

Getirme

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ünmez.

NamedSetOfFiles

NamedSetOfFiles etkinlikleri, komut değerlendirmesi sırasında oluşturulan bir depset dosyayla eşleşen bir yapıyı bildirir. 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 BEP örnekleri sayfasına göz atın.

OptionsParsed

Tek bir OptionsParsed etkinliği, komuta uygulanan tüm seçenekleri listeleyerek başlangıç seçeneklerini komut seçeneklerinden ayırır. Ayrıca 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",
      "--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 hedeflerin kümesini gösterir. Başarılı komutlar için PatternExpandedId içindeki tüm kalıplarla ve PatternExpanded etkinliğinin alt öğelerindeki tüm hedeflerle tek bir etkinlik bulunur. Kalıp, test_suite ile eklenen test hedefleri test_suite herhangi bir kısmına genişlerse. Çözümlenemeyen 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, komut yürütme sırasında Bazel tarafından oluşturulan standart çıkışı ve standart hatayı içerir. Bu etkinlikler ayrıca, mantıksal bir "parent" etkinliği (özellikle NamedSetOfFiles) tarafından bildirilmeyen etkinlikleri duyurmak için gerektiğinde otomatik olarak 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ılı/başarısızlığını 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 alt öğelerinde görünür.

Örneğin, --experimental_multi_cpu seçenekleriyle derleme yapmak, 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önlerini kapsayan toplam başarı sonucuna sahip bir TargetSummary etkinliği eklenir.

TestResult

Test istenirse her test denemesi, parçalama ve test başına çalıştırma için bir TestResult etkinliği gönderilir. Bu, BEP tüketicilerinin, testlerinde başarısız olan test işlemlerini tam olarak tanımlamalarına ve her test işlemi için test çıkışlarını (günlükler, test.xml dosyaları gibi) tanımlamalarına olanak tanır.

TestSummary

Test istenirse her test (target, configuration) için test sonuçlarının yorumlanması için gereken bilgileri içeren bir TestSummary etkinliği gönderilir. Test başına deneme, parça ve çalıştırma sayısı dahil edilmiştir. Böylece, BEP tüketicilerinin yapıları bu boyutlarda birbirinden ayırt edebilmesi sağlanmış olur. FLAKY testlerini FAILED testlerinden ayırt etmek için toplu TestStatus oluşturulurken test başına deneme ve çalıştırma sayısı dikkate alınır.

UnstructuredCommandLine

CommandLine'ın aksine bu etkinlik, tüm .bazelrc dosyalarını genişlettikten ve --config işareti dikkate alındıktan sonra derleme aracının karşılaştığı ayrıştırılmamış komut satırı işaretlerini dize biçiminde taşır.

Belirli bir komut yürütmesini hassas bir şekilde yeniden üretmek 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ı durum komutunun sonucunu içerir.