mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
vendor: update buildkit to master@cbfd4023383d
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
52
vendor/github.com/moby/buildkit/client/llb/source.go
generated
vendored
52
vendor/github.com/moby/buildkit/client/llb/source.go
generated
vendored
@ -5,10 +5,11 @@ import (
|
||||
_ "crypto/sha256" // for opencontainers/go-digest
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/distribution/reference"
|
||||
"github.com/distribution/reference"
|
||||
"github.com/moby/buildkit/solver/pb"
|
||||
"github.com/moby/buildkit/util/apicaps"
|
||||
"github.com/moby/buildkit/util/gitutil"
|
||||
@ -226,7 +227,7 @@ type ImageInfo struct {
|
||||
// Git returns a state that represents a git repository.
|
||||
// Example:
|
||||
//
|
||||
// st := llb.Git("https://github.com/moby/buildkit.git#v0.11.6")
|
||||
// st := llb.Git("https://github.com/moby/buildkit.git", "v0.11.6")
|
||||
//
|
||||
// The example fetches the v0.11.6 tag of the buildkit repository.
|
||||
// You can also use a commit hash or a branch name.
|
||||
@ -237,29 +238,30 @@ type ImageInfo struct {
|
||||
//
|
||||
// By default the git repository is cloned with `--depth=1` to reduce the amount of data downloaded.
|
||||
// Additionally the ".git" directory is removed after the clone, you can keep ith with the [KeepGitDir] [GitOption].
|
||||
func Git(remote, ref string, opts ...GitOption) State {
|
||||
url := strings.Split(remote, "#")[0]
|
||||
|
||||
var protocolType int
|
||||
remote, protocolType = gitutil.ParseProtocol(remote)
|
||||
|
||||
var sshHost string
|
||||
if protocolType == gitutil.SSHProtocol {
|
||||
parts := strings.SplitN(remote, ":", 2)
|
||||
if len(parts) == 2 {
|
||||
sshHost = parts[0]
|
||||
// keep remote consistent with http(s) version
|
||||
remote = parts[0] + "/" + parts[1]
|
||||
}
|
||||
}
|
||||
if protocolType == gitutil.UnknownProtocol {
|
||||
func Git(url, ref string, opts ...GitOption) State {
|
||||
remote, err := gitutil.ParseURL(url)
|
||||
if errors.Is(err, gitutil.ErrUnknownProtocol) {
|
||||
url = "https://" + url
|
||||
remote, err = gitutil.ParseURL(url)
|
||||
}
|
||||
if remote != nil {
|
||||
remote.Fragment = ""
|
||||
url = remote.String()
|
||||
}
|
||||
|
||||
id := remote
|
||||
|
||||
if ref != "" {
|
||||
id += "#" + ref
|
||||
var id string
|
||||
if err != nil {
|
||||
// If we can't parse the URL, just use the full URL as the ID. The git
|
||||
// operation will fail later on.
|
||||
id = url
|
||||
} else {
|
||||
// We construct the ID manually here, so that we can create the same ID
|
||||
// for different protocols (e.g. https and ssh) that have the same
|
||||
// host/path/fragment combination.
|
||||
id = remote.Host + path.Join("/", remote.Path)
|
||||
if ref != "" {
|
||||
id += "#" + ref
|
||||
}
|
||||
}
|
||||
|
||||
gi := &GitInfo{
|
||||
@ -290,11 +292,11 @@ func Git(remote, ref string, opts ...GitOption) State {
|
||||
addCap(&gi.Constraints, pb.CapSourceGitHTTPAuth)
|
||||
}
|
||||
}
|
||||
if protocolType == gitutil.SSHProtocol {
|
||||
if remote != nil && remote.Scheme == gitutil.SSHProtocol {
|
||||
if gi.KnownSSHHosts != "" {
|
||||
attrs[pb.AttrKnownSSHHosts] = gi.KnownSSHHosts
|
||||
} else if sshHost != "" {
|
||||
keyscan, err := sshutil.SSHKeyScan(sshHost)
|
||||
} else {
|
||||
keyscan, err := sshutil.SSHKeyScan(remote.Host)
|
||||
if err == nil {
|
||||
// best effort
|
||||
attrs[pb.AttrKnownSSHHosts] = keyscan
|
||||
|
Reference in New Issue
Block a user