mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
vendor: update buildkit
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
54
vendor/github.com/moby/buildkit/util/bklog/log.go
generated
vendored
Normal file
54
vendor/github.com/moby/buildkit/util/bklog/log.go
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
package bklog
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
)
|
||||
|
||||
var (
|
||||
G = GetLogger
|
||||
L = logrus.NewEntry(logrus.StandardLogger())
|
||||
)
|
||||
|
||||
var (
|
||||
logWithTraceID = false
|
||||
)
|
||||
|
||||
func EnableLogWithTraceID(b bool) {
|
||||
logWithTraceID = b
|
||||
}
|
||||
|
||||
type (
|
||||
loggerKey struct{}
|
||||
)
|
||||
|
||||
// WithLogger returns a new context with the provided logger. Use in
|
||||
// combination with logger.WithField(s) for great effect.
|
||||
func WithLogger(ctx context.Context, logger *logrus.Entry) context.Context {
|
||||
return context.WithValue(ctx, loggerKey{}, logger)
|
||||
}
|
||||
|
||||
// GetLogger retrieves the current logger from the context. If no logger is
|
||||
// available, the default logger is returned.
|
||||
func GetLogger(ctx context.Context) (l *logrus.Entry) {
|
||||
logger := ctx.Value(loggerKey{})
|
||||
|
||||
if logger != nil {
|
||||
l = logger.(*logrus.Entry)
|
||||
} else {
|
||||
l = L
|
||||
}
|
||||
|
||||
if logWithTraceID {
|
||||
if spanContext := trace.SpanFromContext(ctx).SpanContext(); spanContext.IsValid() {
|
||||
return l.WithFields(logrus.Fields{
|
||||
"traceID": spanContext.TraceID(),
|
||||
"spanID": spanContext.SpanID(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return l
|
||||
}
|
2
vendor/github.com/moby/buildkit/util/progress/progresswriter/progress.go
generated
vendored
2
vendor/github.com/moby/buildkit/util/progress/progresswriter/progress.go
generated
vendored
@ -5,7 +5,7 @@ import (
|
||||
|
||||
"github.com/moby/buildkit/client"
|
||||
"github.com/moby/buildkit/identity"
|
||||
"github.com/opencontainers/go-digest"
|
||||
digest "github.com/opencontainers/go-digest"
|
||||
)
|
||||
|
||||
type Logger func(*client.SolveStatus)
|
||||
|
2
vendor/github.com/moby/buildkit/util/progress/progresswriter/writer.go
generated
vendored
2
vendor/github.com/moby/buildkit/util/progress/progresswriter/writer.go
generated
vendored
@ -5,7 +5,7 @@ import (
|
||||
|
||||
"github.com/moby/buildkit/client"
|
||||
"github.com/moby/buildkit/identity"
|
||||
"github.com/opencontainers/go-digest"
|
||||
digest "github.com/opencontainers/go-digest"
|
||||
)
|
||||
|
||||
type Writer interface {
|
||||
|
2
vendor/github.com/moby/buildkit/util/stack/generate.go
generated
vendored
2
vendor/github.com/moby/buildkit/util/stack/generate.go
generated
vendored
@ -1,3 +1,3 @@
|
||||
package stack
|
||||
|
||||
//go:generate protoc -I=. -I=../../vendor/ --go_out=. stack.proto
|
||||
//go:generate protoc -I=. -I=../../vendor/ --go_out=. --go_opt=paths=source_relative --go_opt=Mstack.proto=/util/stack stack.proto
|
||||
|
29
vendor/github.com/moby/buildkit/util/system/seccomp_linux.go
generated
vendored
29
vendor/github.com/moby/buildkit/util/system/seccomp_linux.go
generated
vendored
@ -1,29 +0,0 @@
|
||||
// +build linux,seccomp
|
||||
|
||||
package system
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
var seccompSupported bool
|
||||
var seccompOnce sync.Once
|
||||
|
||||
func SeccompSupported() bool {
|
||||
seccompOnce.Do(func() {
|
||||
seccompSupported = getSeccompSupported()
|
||||
})
|
||||
return seccompSupported
|
||||
}
|
||||
|
||||
func getSeccompSupported() bool {
|
||||
if err := unix.Prctl(unix.PR_GET_SECCOMP, 0, 0, 0, 0); err != unix.EINVAL {
|
||||
// Make sure the kernel has CONFIG_SECCOMP_FILTER.
|
||||
if err := unix.Prctl(unix.PR_SET_SECCOMP, unix.SECCOMP_MODE_FILTER, 0, 0, 0); err != unix.EINVAL {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
7
vendor/github.com/moby/buildkit/util/system/seccomp_nolinux.go
generated
vendored
7
vendor/github.com/moby/buildkit/util/system/seccomp_nolinux.go
generated
vendored
@ -1,7 +0,0 @@
|
||||
// +build !linux,seccomp
|
||||
|
||||
package system
|
||||
|
||||
func SeccompSupported() bool {
|
||||
return false
|
||||
}
|
7
vendor/github.com/moby/buildkit/util/system/seccomp_noseccomp.go
generated
vendored
7
vendor/github.com/moby/buildkit/util/system/seccomp_noseccomp.go
generated
vendored
@ -1,7 +0,0 @@
|
||||
// +build !seccomp
|
||||
|
||||
package system
|
||||
|
||||
func SeccompSupported() bool {
|
||||
return false
|
||||
}
|
5
vendor/github.com/moby/buildkit/util/tracing/detect/detect.go
generated
vendored
5
vendor/github.com/moby/buildkit/util/tracing/detect/detect.go
generated
vendored
@ -8,6 +8,7 @@ import (
|
||||
"strconv"
|
||||
"sync"
|
||||
|
||||
"github.com/moby/buildkit/util/bklog"
|
||||
"github.com/pkg/errors"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
@ -82,6 +83,10 @@ func detect() error {
|
||||
if exp == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
// enable log with traceID when valid exporter
|
||||
bklog.EnableLogWithTraceID(true)
|
||||
|
||||
res, err := resource.Detect(context.Background(), serviceNameDetector{})
|
||||
if err != nil {
|
||||
return err
|
||||
|
2
vendor/github.com/moby/buildkit/util/tracing/otlptracegrpc/client.go
generated
vendored
2
vendor/github.com/moby/buildkit/util/tracing/otlptracegrpc/client.go
generated
vendored
@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package otlptracegrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
|
||||
package otlptracegrpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
84
vendor/github.com/moby/buildkit/util/tracing/tracing.go
generated
vendored
84
vendor/github.com/moby/buildkit/util/tracing/tracing.go
generated
vendored
@ -3,9 +3,12 @@ package tracing
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptrace"
|
||||
|
||||
"github.com/moby/buildkit/util/bklog"
|
||||
"go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace"
|
||||
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
"go.opentelemetry.io/otel/propagation"
|
||||
@ -22,6 +25,7 @@ func StartSpan(ctx context.Context, operationName string, opts ...trace.SpanStar
|
||||
tracer = parent.TracerProvider().Tracer("")
|
||||
}
|
||||
ctx, span := tracer.Start(ctx, operationName, opts...)
|
||||
ctx = bklog.WithLogger(ctx, bklog.GetLogger(ctx).WithField("span", operationName))
|
||||
return span, ctx
|
||||
}
|
||||
|
||||
@ -53,81 +57,17 @@ func ContextWithSpanFromContext(ctx, ctx2 context.Context) context.Context {
|
||||
return ctx
|
||||
}
|
||||
|
||||
var DefaultTransport http.RoundTripper = &Transport{
|
||||
RoundTripper: NewTransport(http.DefaultTransport),
|
||||
}
|
||||
var DefaultTransport http.RoundTripper = NewTransport(http.DefaultTransport)
|
||||
|
||||
var DefaultClient = &http.Client{
|
||||
Transport: DefaultTransport,
|
||||
}
|
||||
|
||||
var propagators = propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})
|
||||
|
||||
type Transport struct {
|
||||
http.RoundTripper
|
||||
}
|
||||
|
||||
func NewTransport(rt http.RoundTripper) http.RoundTripper {
|
||||
// TODO: switch to otelhttp. needs upstream updates to avoid transport-global tracer
|
||||
return &Transport{
|
||||
RoundTripper: rt,
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
span := trace.SpanFromContext(req.Context())
|
||||
if !span.SpanContext().IsValid() { // no tracer connected with either request or transport
|
||||
return t.RoundTripper.RoundTrip(req)
|
||||
}
|
||||
|
||||
ctx, span := span.TracerProvider().Tracer("").Start(req.Context(), req.Method)
|
||||
|
||||
req = req.WithContext(ctx)
|
||||
span.SetAttributes(semconv.HTTPClientAttributesFromHTTPRequest(req)...)
|
||||
propagators.Inject(ctx, propagation.HeaderCarrier(req.Header))
|
||||
|
||||
resp, err := t.RoundTripper.RoundTrip(req)
|
||||
if err != nil {
|
||||
span.RecordError(err)
|
||||
span.End()
|
||||
return resp, err
|
||||
}
|
||||
|
||||
span.SetAttributes(semconv.HTTPAttributesFromHTTPStatusCode(resp.StatusCode)...)
|
||||
span.SetStatus(semconv.SpanStatusFromHTTPStatusCode(resp.StatusCode))
|
||||
|
||||
if req.Method == "HEAD" {
|
||||
span.End()
|
||||
} else {
|
||||
resp.Body = &wrappedBody{ctx: ctx, span: span, body: resp.Body}
|
||||
}
|
||||
|
||||
return resp, err
|
||||
}
|
||||
|
||||
type wrappedBody struct {
|
||||
ctx context.Context
|
||||
span trace.Span
|
||||
body io.ReadCloser
|
||||
}
|
||||
|
||||
var _ io.ReadCloser = &wrappedBody{}
|
||||
|
||||
func (wb *wrappedBody) Read(b []byte) (int, error) {
|
||||
n, err := wb.body.Read(b)
|
||||
|
||||
switch err {
|
||||
case nil:
|
||||
// nothing to do here but fall through to the return
|
||||
case io.EOF:
|
||||
wb.span.End()
|
||||
default:
|
||||
wb.span.RecordError(err)
|
||||
}
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (wb *wrappedBody) Close() error {
|
||||
wb.span.End()
|
||||
return wb.body.Close()
|
||||
return otelhttp.NewTransport(rt,
|
||||
otelhttp.WithPropagators(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})),
|
||||
otelhttp.WithClientTrace(func(ctx context.Context) *httptrace.ClientTrace {
|
||||
return otelhttptrace.NewClientTrace(ctx, otelhttptrace.WithoutSubSpans())
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user