Merge pull request #6634 from baude/v2buildfixes

fix misc remote build issues
This commit is contained in:
OpenShift Merge Robot
2020-06-17 15:36:02 -04:00
committed by GitHub
4 changed files with 127 additions and 46 deletions

View File

@ -48,34 +48,34 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
defer os.RemoveAll(anchorDir)
query := struct {
Dockerfile string `schema:"dockerfile"`
Tag string `schema:"t"`
ExtraHosts string `schema:"extrahosts"`
Remote string `schema:"remote"`
Quiet bool `schema:"q"`
NoCache bool `schema:"nocache"`
CacheFrom string `schema:"cachefrom"`
Pull bool `schema:"pull"`
Rm bool `schema:"rm"`
ForceRm bool `schema:"forcerm"`
Memory int64 `schema:"memory"`
MemSwap int64 `schema:"memswap"`
CpuShares uint64 `schema:"cpushares"` //nolint
CpuSetCpus string `schema:"cpusetcpus"` //nolint
CpuPeriod uint64 `schema:"cpuperiod"` //nolint
CpuQuota int64 `schema:"cpuquota"` //nolint
BuildArgs string `schema:"buildargs"`
ShmSize int `schema:"shmsize"`
Squash bool `schema:"squash"`
Labels string `schema:"labels"`
NetworkMode string `schema:"networkmode"`
Platform string `schema:"platform"`
Target string `schema:"target"`
Outputs string `schema:"outputs"`
Registry string `schema:"registry"`
Dockerfile string `schema:"dockerfile"`
Tag []string `schema:"t"`
ExtraHosts string `schema:"extrahosts"`
Remote string `schema:"remote"`
Quiet bool `schema:"q"`
NoCache bool `schema:"nocache"`
CacheFrom string `schema:"cachefrom"`
Pull bool `schema:"pull"`
Rm bool `schema:"rm"`
ForceRm bool `schema:"forcerm"`
Memory int64 `schema:"memory"`
MemSwap int64 `schema:"memswap"`
CpuShares uint64 `schema:"cpushares"` //nolint
CpuSetCpus string `schema:"cpusetcpus"` //nolint
CpuPeriod uint64 `schema:"cpuperiod"` //nolint
CpuQuota int64 `schema:"cpuquota"` //nolint
BuildArgs string `schema:"buildargs"`
ShmSize int `schema:"shmsize"`
Squash bool `schema:"squash"`
Labels string `schema:"labels"`
NetworkMode string `schema:"networkmode"`
Platform string `schema:"platform"`
Target string `schema:"target"`
Outputs string `schema:"outputs"`
Registry string `schema:"registry"`
}{
Dockerfile: "Dockerfile",
Tag: "",
Tag: []string{},
ExtraHosts: "",
Remote: "",
Quiet: false,
@ -107,20 +107,19 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
}
var (
// Tag is the name with optional tag...
name = query.Tag
tag = "latest"
output string
additionalNames []string
)
if strings.Contains(query.Tag, ":") {
tokens := strings.SplitN(query.Tag, ":", 2)
name = tokens[0]
tag = tokens[1]
if len(query.Tag) > 0 {
output = query.Tag[0]
}
if len(query.Tag) > 1 {
additionalNames = query.Tag[1:]
}
if _, found := r.URL.Query()["target"]; found {
name = query.Target
output = query.Target
}
var buildArgs = map[string]string{}
if _, found := r.URL.Query()["buildargs"]; found {
if err := json.Unmarshal([]byte(query.BuildArgs), &buildArgs); err != nil {
@ -168,8 +167,8 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
TransientMounts: nil,
Compression: archive.Gzip,
Args: buildArgs,
Output: name,
AdditionalTags: []string{tag},
Output: output,
AdditionalTags: additionalNames,
Log: func(format string, args ...interface{}) {
buildEvents = append(buildEvents, fmt.Sprintf(format, args...))
},

View File

@ -410,7 +410,7 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error {
// swagger:operation POST /build compat buildImage
// ---
// tags:
// - images
// - images (compat)
// summary: Create image
// description: Build an image from the given Dockerfile(s)
// parameters:
@ -425,7 +425,7 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error {
// name: t
// type: string
// default: latest
// description: A name and optional tag to apply to the image in the `name:tag` format.
// description: A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default latest value is assumed. You can provide several t parameters.
// - in: query
// name: extrahosts
// type: string
@ -1211,7 +1211,7 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error {
// name: t
// type: string
// default: latest
// description: A name and optional tag to apply to the image in the `name:tag` format.
// description: A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default latest value is assumed. You can provide several t parameters.
// - in: query
// name: extrahosts
// type: string