-
Notifications
You must be signed in to change notification settings - Fork 238
/
buildkit.go
69 lines (57 loc) · 2.05 KB
/
buildkit.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package imgsrc
import (
"context"
"fmt"
"os"
"strconv"
"github.com/docker/docker/api/types"
dockerclient "github.com/docker/docker/client"
"github.com/moby/buildkit/session"
"github.com/moby/buildkit/session/auth"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func buildkitEnabled(docker *dockerclient.Client) (buildkitEnabled bool, err error) {
ping, err := docker.Ping(context.Background())
if err != nil {
return false, err
}
buildkitEnabled = ping.BuilderVersion == types.BuilderBuildKit
if buildkitEnv := os.Getenv("DOCKER_BUILDKIT"); buildkitEnv != "" {
buildkitEnabled, err = strconv.ParseBool(buildkitEnv)
if err != nil {
return false, fmt.Errorf("DOCKER_BUILDKIT environment variable expects boolean value: %w", err)
}
}
return buildkitEnabled, nil
}
func newBuildkitAuthProvider(token string) session.Attachable {
return &buildkitAuthProvider{
token: token,
}
}
type buildkitAuthProvider struct {
token string
}
func (ap *buildkitAuthProvider) Register(server *grpc.Server) {
auth.RegisterAuthServer(server, ap)
}
func (ap *buildkitAuthProvider) Credentials(ctx context.Context, req *auth.CredentialsRequest) (*auth.CredentialsResponse, error) {
auths := authConfigs(ap.token)
res := &auth.CredentialsResponse{}
if a, ok := auths[req.Host]; ok {
res.Username = a.Username
res.Secret = a.Password
}
return res, nil
}
func (ap *buildkitAuthProvider) FetchToken(ctx context.Context, req *auth.FetchTokenRequest) (*auth.FetchTokenResponse, error) {
return nil, status.Errorf(codes.Unavailable, "client side tokens disabled")
}
func (ap *buildkitAuthProvider) GetTokenAuthority(ctx context.Context, req *auth.GetTokenAuthorityRequest) (*auth.GetTokenAuthorityResponse, error) {
return nil, status.Errorf(codes.Unavailable, "client side tokens disabled")
}
func (ap *buildkitAuthProvider) VerifyTokenAuthority(ctx context.Context, req *auth.VerifyTokenAuthorityRequest) (*auth.VerifyTokenAuthorityResponse, error) {
return nil, status.Errorf(codes.Unavailable, "client side tokens disabled")
}