Add opt-in OpenTelemetry build tracing - #902
Conversation
3cd45d6 to
13375bd
Compare
Dependency footprintThe vendored diff looks large (~16.5k lines), but it is almost all generated OTLP proto/gRPC code, and the binary barely grows because the OTel SDK and gRPC are already linked into kaniko via the Google Cloud libraries. Adding trace export reuses that already-present code. Binary size (executor,
New modules Promoted indirect → direct (already in the graph via the GCP libraries, no new binary weight):
Newly pulled in for OTLP/HTTP export:
HTTP was chosen over the gRPC exporter deliberately: near-identical footprint (measured ~145 lines apart), but plain HTTP traverses restricted CI egress and proxies more reliably and matches the URL-style Why grpc is pulled at all (upstream note)Most of the vendored diff is grpc + grpc-gateway, pulled transitively by the OTLP proto package even though this is HTTP-only. That is a known upstream limitation: open-telemetry/opentelemetry-proto-go#100, "Split go.opentelemetry.io/proto module to exclude grpc dependencies". The generated It was resolved by publishing a grpc-free module, |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
8f681d5 to
7afff2a
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe change adds opt-in OpenTelemetry tracing around Kaniko builds, command and push timing, assertion events, OTLP export dependencies, vendored tracing infrastructure, and telemetry configuration documentation. ChangesBuild telemetry
Estimated code review effort: 5 (Critical) | ~120 minutes Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@pkg/tracing/tracing.go`:
- Around line 61-84: The telemetry currently exports sensitive raw Dockerfile
and command text without an opt-out. In pkg/tracing/tracing.go:61-84, replace
the full kaniko.dockerfile.content attribute with bounded non-sensitive metadata
such as line count and the existing buildID hash, or gate raw capture behind an
explicit opt-in; in pkg/executor/build.go:574-596, apply the same policy to
kaniko.command, reusing commandHash when hashing; in README.md:1332-1343,
document the exact captured content and whether raw text requires opt-in.
- Around line 128-145: Update Shutdown to create a bounded context with an
explicit timeout before calling provider.Shutdown, and ensure the context is
canceled afterward. Replace context.Background() in the provider shutdown path
while preserving the existing warning log and cleanup behavior.
- Line 72: Remove the global otel.SetTracerProvider(provider) registration from
the tracing initialization flow, keeping the provider local to the kaniko
tracing components that explicitly use it. Ensure cloud.google.com/go/storage
and other unrelated libraries do not inherit this provider or export spans to
KANIKO_TELEMETRY_ENDPOINT.
In `@README.md`:
- Around line 1332-1343: Update the README Telemetry section to explicitly
disclose that telemetry exports the full Dockerfile content and each command’s
raw string as span attributes to the configured KANIKO_TELEMETRY_ENDPOINT,
including third-party collectors. Place this warning alongside the existing
description of exported trace data and preserve the documented best-effort
behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: aa51289c-343f-4db5-ab51-9556917a3bc4
⛔ Files ignored due to path filters (10)
go.sumis excluded by!**/*.sumvendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gw.gois excluded by!**/*.pb.gw.govendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service_grpc.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/resource/v1/resource.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/trace/v1/trace.pb.gois excluded by!**/*.pb.govendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.gois excluded by!**/*.pb.govendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.gois excluded by!**/*.pb.govendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.gois excluded by!**/*.pb.go
📒 Files selected for processing (97)
README.mdcmd/executor/cmd/root.gogo.modpkg/executor/build.gopkg/executor/push.gopkg/timing/timing.gopkg/tracing/tracing.gopkg/util/assert.govendor/github.com/cenkalti/backoff/v5/.gitignorevendor/github.com/cenkalti/backoff/v5/CHANGELOG.mdvendor/github.com/cenkalti/backoff/v5/LICENSEvendor/github.com/cenkalti/backoff/v5/README.mdvendor/github.com/cenkalti/backoff/v5/backoff.govendor/github.com/cenkalti/backoff/v5/error.govendor/github.com/cenkalti/backoff/v5/exponential.govendor/github.com/cenkalti/backoff/v5/retry.govendor/github.com/cenkalti/backoff/v5/ticker.govendor/github.com/cenkalti/backoff/v5/timer.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSEvendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/compile.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/fuzz.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/types.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/doc.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_proto.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/doc.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/readerfactory.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/trie.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/LICENSEvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.mdvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/LICENSEvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/README.mdvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/envconfig.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/tls.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.govendor/go.opentelemetry.io/otel/sdk/trace/README.mdvendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/doc.govendor/go.opentelemetry.io/otel/sdk/trace/event.govendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.govendor/go.opentelemetry.io/otel/sdk/trace/id_generator.govendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.govendor/go.opentelemetry.io/otel/sdk/trace/link.govendor/go.opentelemetry.io/otel/sdk/trace/provider.govendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.govendor/go.opentelemetry.io/otel/sdk/trace/sampling.govendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/snapshot.govendor/go.opentelemetry.io/otel/sdk/trace/span.govendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.govendor/go.opentelemetry.io/otel/sdk/trace/span_limits.govendor/go.opentelemetry.io/otel/sdk/trace/span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/tracer.govendor/go.opentelemetry.io/proto/otlp/LICENSEvendor/modules.txt
7afff2a to
2b7031c
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@pkg/util/assert.go`:
- Around line 53-69: Update notifyViolation and the assertion paths that call it
so the assertion hook does not synchronously shut down tracing before panic
unwinding completes. Defer the violation callback until deferred cleanup such as
timing.DefaultRun.Stop and span.End has finished, while preserving the existing
violation name and message passed to OnAssertionViolation.
In
`@vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.go`:
- Around line 31-33: Correct the Go documentation for the Enabled field in the
retry configuration so it states that Enabled: true enables retrying failed
batch exports. Update the source template that generates this file, then
regenerate the generated retry.go output to keep both aligned.
- Around line 102-113: Update the retry loop around b.NextBackOff and the
computed delay so MaxElapsedTime validation uses the actual wait duration,
delay, rather than throttle. Apply the same correction in the generated source
template, then regenerate the vendor retry file while preserving existing error
propagation.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 2749c7e6-92ec-44d2-b1cb-8b4e0adaccfa
⛔ Files ignored due to path filters (10)
go.sumis excluded by!**/*.sumvendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gw.gois excluded by!**/*.pb.gw.govendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service_grpc.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/resource/v1/resource.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/trace/v1/trace.pb.gois excluded by!**/*.pb.govendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.gois excluded by!**/*.pb.govendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.gois excluded by!**/*.pb.govendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.gois excluded by!**/*.pb.go
📒 Files selected for processing (97)
README.mdcmd/executor/cmd/root.gogo.modpkg/executor/build.gopkg/executor/push.gopkg/timing/timing.gopkg/tracing/tracing.gopkg/util/assert.govendor/github.com/cenkalti/backoff/v5/.gitignorevendor/github.com/cenkalti/backoff/v5/CHANGELOG.mdvendor/github.com/cenkalti/backoff/v5/LICENSEvendor/github.com/cenkalti/backoff/v5/README.mdvendor/github.com/cenkalti/backoff/v5/backoff.govendor/github.com/cenkalti/backoff/v5/error.govendor/github.com/cenkalti/backoff/v5/exponential.govendor/github.com/cenkalti/backoff/v5/retry.govendor/github.com/cenkalti/backoff/v5/ticker.govendor/github.com/cenkalti/backoff/v5/timer.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSEvendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/compile.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/fuzz.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/types.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/doc.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_proto.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/doc.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/readerfactory.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/trie.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/LICENSEvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.mdvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/LICENSEvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/README.mdvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/envconfig.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/tls.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.govendor/go.opentelemetry.io/otel/sdk/trace/README.mdvendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/doc.govendor/go.opentelemetry.io/otel/sdk/trace/event.govendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.govendor/go.opentelemetry.io/otel/sdk/trace/id_generator.govendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.govendor/go.opentelemetry.io/otel/sdk/trace/link.govendor/go.opentelemetry.io/otel/sdk/trace/provider.govendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.govendor/go.opentelemetry.io/otel/sdk/trace/sampling.govendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/snapshot.govendor/go.opentelemetry.io/otel/sdk/trace/span.govendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.govendor/go.opentelemetry.io/otel/sdk/trace/span_limits.govendor/go.opentelemetry.io/otel/sdk/trace/span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/tracer.govendor/go.opentelemetry.io/proto/otlp/LICENSEvendor/modules.txt
🚧 Files skipped from review as they are similar to previous changes (87)
- vendor/go.opentelemetry.io/otel/sdk/trace/README.md
- vendor/github.com/cenkalti/backoff/v5/LICENSE
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.go
- vendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/fuzz.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/doc.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/doc.go
- vendor/go.opentelemetry.io/otel/sdk/trace/event.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.go
- vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_proto.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.md
- vendor/go.opentelemetry.io/otel/sdk/trace/link.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSE
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.go
- vendor/github.com/cenkalti/backoff/v5/timer.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span_processor.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/README.md
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/readerfactory.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/LICENSE
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.go
- vendor/github.com/cenkalti/backoff/v5/ticker.go
- vendor/go.opentelemetry.io/proto/otlp/LICENSE
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/trie.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.go
- vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/compile.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go
- vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
- vendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/LICENSE
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go
- vendor/github.com/cenkalti/backoff/v5/error.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/types.go
- vendor/modules.txt
- vendor/github.com/cenkalti/backoff/v5/retry.go
- vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
- pkg/executor/push.go
- cmd/executor/cmd/root.go
- vendor/github.com/cenkalti/backoff/v5/exponential.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.go
- README.md
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.go
- vendor/github.com/cenkalti/backoff/v5/CHANGELOG.md
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.go
- vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.go
- vendor/github.com/cenkalti/backoff/v5/backoff.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.go
- vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
- pkg/tracing/tracing.go
- vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go
- pkg/executor/build.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.go
- go.mod
- pkg/timing/timing.go
- vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
2b7031c to
7590710
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
pkg/assert/assert.go (1)
28-28: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDocument the exported callback.
Add a Go doc comment explaining when
OnAssertionViolationruns and that it must not panic or block. As per coding guidelines, “Non-internal, non-test packages should have Go doc comments, usually indoc.go.”🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@pkg/assert/assert.go` at line 28, Document the exported OnAssertionViolation callback with a Go doc comment, preferably in the package documentation, describing when it is invoked and stating that the callback must not panic or block.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.go`:
- Around line 309-315: Update the float64 branch in the enum unmarshaling switch
to validate that the JSON number is integral and within the int32 range before
converting and assigning it to rv. Return an unmarshaling error for fractional
or out-of-range values; preserve successful assignment for valid enum numbers.
---
Nitpick comments:
In `@pkg/assert/assert.go`:
- Line 28: Document the exported OnAssertionViolation callback with a Go doc
comment, preferably in the package documentation, describing when it is invoked
and stating that the callback must not panic or block.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 7a6aa67e-dd83-4a02-aa4f-ec3589ac9abf
⛔ Files ignored due to path filters (10)
go.sumis excluded by!**/*.sumvendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gw.gois excluded by!**/*.pb.gw.govendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service_grpc.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/resource/v1/resource.pb.gois excluded by!**/*.pb.govendor/go.opentelemetry.io/proto/otlp/trace/v1/trace.pb.gois excluded by!**/*.pb.govendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.gois excluded by!**/*.pb.govendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.gois excluded by!**/*.pb.govendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.gois excluded by!**/*.pb.go
📒 Files selected for processing (97)
README.mdcmd/executor/cmd/root.gogo.modpkg/assert/assert.gopkg/executor/build.gopkg/executor/push.gopkg/timing/timing.gopkg/tracing/tracing.govendor/github.com/cenkalti/backoff/v5/.gitignorevendor/github.com/cenkalti/backoff/v5/CHANGELOG.mdvendor/github.com/cenkalti/backoff/v5/LICENSEvendor/github.com/cenkalti/backoff/v5/README.mdvendor/github.com/cenkalti/backoff/v5/backoff.govendor/github.com/cenkalti/backoff/v5/error.govendor/github.com/cenkalti/backoff/v5/exponential.govendor/github.com/cenkalti/backoff/v5/retry.govendor/github.com/cenkalti/backoff/v5/ticker.govendor/github.com/cenkalti/backoff/v5/timer.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSEvendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/compile.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/fuzz.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/types.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/doc.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_proto.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/doc.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/readerfactory.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.govendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/trie.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/LICENSEvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.mdvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/LICENSEvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/README.mdvendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/envconfig.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/tls.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.govendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.govendor/go.opentelemetry.io/otel/sdk/trace/README.mdvendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/doc.govendor/go.opentelemetry.io/otel/sdk/trace/event.govendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.govendor/go.opentelemetry.io/otel/sdk/trace/id_generator.govendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.govendor/go.opentelemetry.io/otel/sdk/trace/link.govendor/go.opentelemetry.io/otel/sdk/trace/provider.govendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.govendor/go.opentelemetry.io/otel/sdk/trace/sampling.govendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/snapshot.govendor/go.opentelemetry.io/otel/sdk/trace/span.govendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.govendor/go.opentelemetry.io/otel/sdk/trace/span_limits.govendor/go.opentelemetry.io/otel/sdk/trace/span_processor.govendor/go.opentelemetry.io/otel/sdk/trace/tracer.govendor/go.opentelemetry.io/proto/otlp/LICENSEvendor/modules.txt
🚧 Files skipped from review as they are similar to previous changes (82)
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.md
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/LICENSE
- vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
- vendor/go.opentelemetry.io/otel/sdk/trace/link.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.go
- vendor/github.com/cenkalti/backoff/v5/timer.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/readerfactory.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/fuzz.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/LICENSE
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.go
- vendor/go.opentelemetry.io/otel/sdk/trace/README.md
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.go
- vendor/go.opentelemetry.io/otel/sdk/trace/event.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/doc.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_proto.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSE
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/types.go
- vendor/go.opentelemetry.io/proto/otlp/LICENSE
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/README.md
- vendor/github.com/cenkalti/backoff/v5/error.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.go
- vendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.go
- vendor/github.com/cenkalti/backoff/v5/exponential.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span_processor.go
- vendor/github.com/cenkalti/backoff/v5/ticker.go
- pkg/executor/build.go
- pkg/executor/push.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.go
- vendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go
- vendor/github.com/cenkalti/backoff/v5/retry.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.go
- vendor/github.com/cenkalti/backoff/v5/backoff.go
- vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go
- README.md
- cmd/executor/cmd/root.go
- pkg/timing/timing.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.go
- vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/trie.go
- vendor/modules.txt
- vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
- vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/compile.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.go
- vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
- vendor/go.opentelemetry.io/otel/sdk/trace/span.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.go
- pkg/tracing/tracing.go
- vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
- go.mod
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.go
- vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.go
- vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go
- vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go
- vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
7590710 to
3d2d706
Compare
- stop timers on all error paths so failed builds and --dryrun export their spans; the failing command's span was the one being dropped - bound the exit flush to 5s and print the error before flushing - flush on logrus.Fatal via an exit handler
3d2d706 to
6868d5e
Compare
kaniko reads its tracer from the provider directly. The global registration would silently switch on client spans in the vendored GCS and GCR transports, polluting the trace.
- content-address build_id so it is not constant across a fleet - low-cardinality "Command" span name, full text stays in kaniko.command - classify phase by command type so cached RUNs are not "build" - emit kaniko.stage as an int - emit kaniko.cache.hit only when caching is on - strip the FF_KANIKO_ prefix from kaniko.ff.* keys
|
@CodeRabbit review |
✅ Action performedReview finished.
|
Forward KANIKO_TELEMETRY_ENDPOINT / OTEL_EXPORTER_OTLP_HEADERS / OTEL_RESOURCE_ATTRIBUTES from the CI environment into every executor run via KanikoEnv, and set them in the integration-tests workflow from the repo variable/secret. Empty when unset (e.g. fork PRs) so tracing.Init no-ops and builds still pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Kaniko builds are opaque at fleet scale. There is no way to see where a build spent its time, which Dockerfile instructions keep busting the cache, or how feature flags change performance across many builds. This adds opt-in OpenTelemetry tracing so operators can ship that data to a collector they run.
It is off by default and a no-op unless
KANIKO_TELEMETRY_ENDPOINTis set, so stock behaviour is unchanged. It never phones home to a hardcoded endpoint, and auth and fleet labels reuse the standardOTEL_EXPORTER_OTLP_HEADERSandOTEL_RESOURCE_ATTRIBUTES. Each build becomes one trace: a root span plus a span per timing phase, with cache hit or miss, cache key, instruction line, stage, andFF_KANIKO_*flags as attributes, and the Dockerfile attached verbatim. Spans stream as they end, so a build that is killed still reports what it finished, and a violated assertion flushes and is recorded on the build span before the panic escapes. Per-file hashing and snapshot sub-steps are kept out of the trace to avoid flooding it.Summary by CodeRabbit
KANIKO_TELEMETRY_ENDPOINT, supports standard OTEL collector auth and labeling variables, and exports “best effort” (disabled by default; never fails builds).