Derleme Etkinlik Protokolü Sözlüğü

Sorun bildir Kaynağı göster

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

İptal edildi

Aborted etkinliği diğer türlerdeki etkinliklerin yerini aldığından diğer etkinliklerden farklı olarak Aborted için karşılık gelen bir kimlik türü yoktur. Bu etkinlik, derlemenin erken sonlandırıldığını ve altında göründüğü etkinlik kimliğinin normal şekilde üretilmediğini belirtir. Aborted, derlemenin neden tamamlanmadığını açıklayan bir enum ve kullanıcılara uygun 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ülmesiyle ilgili ayrıntıları sağlar. Derleme hatalarının temel nedeninin belirlenmesini desteklemek amacıyla, bu etkinlik varsayılan olarak yalnızca başarısız işlemler için BEP'ye dahil edilir. Kullanıcılar, --build_event_publish_all_actions işaretini tüm ActionExecuted etkinliklerini içerecek şekilde ayarlayabilir.

BuildFinished

Komut tamamlandıktan sonra tek bir BuildFinished etkinliği gönderilir ve komutun çıkış kodunu içerir. Bu etkinlikte güvenilir başarı/başarısız bilgiler sağlanır.

BuildMetadata

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

BuildMetrics

Her komutun sonunda tek bir BuildMetrics etkinliği gönderilir ve komut sırasında derleme aracının davranışını ölçmeye yarayan sayaçlar/ölçümler içerir. Bu metrikler, yapılan çalışmaların gerçekliğini gösterir ve yeniden kullanılan önbelleğe alınmış çalışmaları saymaz.

Komutun yürütülmesi sırasında Java çöp toplama işlemi gerçekleşmediyse memory_metrics dosyasının doldurulmayabileceğini unutmayın. Kullanıcılar, --memory_profile=/dev/null seçeneğini ayarlayarak çöp toplayıcıyı komutun sonunda memory_metrics alanını doldurmaya zorlayabilir.

{
  "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, anlamlı bir çalışma başlamadan önce komutu açıklayan meta verileri içerir.

BuildToolLogs

Komutun sonunda, derleme aracı tarafından oluşturulan ve geliştirme aracı davranışını anlamaya veya hata ayıklamaya yardımcı olabilecek dosyaların URI'larını da içeren 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 bölümünde hangi temsili ilettiğini belirten bir etiket bulunur. Bu tür üç etkinlik BEP'de yer alır:

  • "original": Bazel'ın, .rc dosyalarından kaynaklanan başlatma seçenekleri olmadan Bazel istemcisinden aldığı komut satırı yeniden oluşturuldu.
  • "canonical": .rc dosyalarının genişletildiği ve çağrı politikasının uygulandığı geçerli komut satırı.
  • "tool": --experimental_tool_command_line seçeneğinden doldurulur. Bu, Bazel'i BEP üzerinden saran bir aracın komut satırını aktarmak için yararlıdır. Bu, doğrudan kullanılan base64 kodlu CommandLine ikili protokol arabellek mesajı veya ayrıştırılan ancak yorumlanmayan bir dize (aracın seçenekleri Bazel'in seçeneklerinden farklı olabileceği için) 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 mevcuttur. 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

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

Getirme

Komut yürütme işleminin parçası olarak bir Getirme işleminin gerçekleştiğini belirtir. 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 kadarı ile eşleşen bir yapı bildirir. Transit olarak dahil edilen alt noktalar NamedSetOfFilesId ile 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, başlatma seçeneklerini komut seçeneklerinden ayırarak komuta uygulanan tüm seçenekleri listeler. Ayrıca, varsa InvocationPolicy'yi 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 hedefler grubunu belirtir. Başarılı komutlar için tek bir etkinlik, PatternExpandedId içindeki tüm kalıplarla ve PatternExpanded etkinliğinin altlarındaki tüm hedefleriyle mevcut olur. Kalıp herhangi bir test_suite değerine genişlerse test_suite tarafından dahil edilen test hedefleri grubu. BEP, çözümlenemeyen her kalıp için kalıbı tanımlayan bir PatternExpandedId içeren ek 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, mantıksal bir "parent" etkinlik (özellikle, NamedSetOfFiles) tarafından duyurulmayan 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ız 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 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 yapılandırılan hedefe uygulanan tüm unsurları kapsayan toplam başarılı sonuçla birlikte bir TargetSummary etkinliği eklenir.

TestResult

Test istenirse her test denemesi, parça ve test 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ını ve her test işlemi için test çıkışlarını (ör. günlükler, test.xml dosyaları) tanımlamalarını sağlar.

TestSummary

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

UnstructuredCommandLine

CommandLine'ın aksine bu etkinlik, tüm .bazelrc dosyalarını genişletip --config işaretini değerlendirdikten sonra derleme aracının karşılaştığı dize biçiminde ayrıştırılmamış komut satırı işaretlerini taşır.

Belirli bir komut yürütmesini hassas bir şekilde yeniden oluşturmak için UnstructuredCommandLine etkinliğinden yararlanabilirsiniz.

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, çalışma alanı durum komutunun sonucunu içerir.