// buildLabels returns a slice of KeyValue pairs in a format that appendEnv can // consume. func (d *DockerBuilder) buildLabels(dir string) []dockerfile.KeyValue { labels := map[string]string{} // TODO: allow source info to be overridden by build sourceInfo := &git.SourceInfo{} if d.build.Spec.Source.Git != nil { var errors []error sourceInfo, errors = d.gitClient.GetInfo(dir) if len(errors) > 0 { for _, e := range errors { glog.V(0).Infof("warning: Unable to retrieve Git info: %v", e.Error()) } } } if len(d.build.Spec.Source.ContextDir) > 0 { sourceInfo.ContextDir = d.build.Spec.Source.ContextDir } labels = util.GenerateLabelsFromSourceInfo(labels, &sourceInfo.SourceInfo, api.DefaultDockerLabelNamespace) kv := make([]dockerfile.KeyValue, 0, len(labels)+len(d.build.Spec.Output.ImageLabels)) for k, v := range labels { kv = append(kv, dockerfile.KeyValue{Key: k, Value: v}) } // override autogenerated labels for _, lbl := range d.build.Spec.Output.ImageLabels { kv = append(kv, dockerfile.KeyValue{Key: lbl.Name, Value: lbl.Value}) } return kv }
// buildLabels returns a slice of KeyValue pairs in a format that appendEnv can // consume. func (d *DockerBuilder) buildLabels(dir string) []dockerfile.KeyValue { labels := map[string]string{} sourceInfo := d.git.GetInfo(dir) if len(d.build.Spec.Source.ContextDir) > 0 { sourceInfo.ContextDir = d.build.Spec.Source.ContextDir } labels = util.GenerateLabelsFromSourceInfo(labels, sourceInfo, api.DefaultDockerLabelNamespace) kv := make([]dockerfile.KeyValue, 0, len(labels)) for k, v := range labels { kv = append(kv, dockerfile.KeyValue{Key: k, Value: v}) } return kv }
// buildLabels returns a slice of KeyValue pairs in a format that appendEnv can // consume. func (d *DockerBuilder) buildLabels(dir string) []dockerfile.KeyValue { labels := map[string]string{} // TODO: allow source info to be overriden by build sourceInfo := &s2iapi.SourceInfo{} if d.build.Spec.Source.Git != nil { sourceInfo = d.git.GetInfo(dir) } if len(d.build.Spec.Source.ContextDir) > 0 { sourceInfo.ContextDir = d.build.Spec.Source.ContextDir } labels = util.GenerateLabelsFromSourceInfo(labels, sourceInfo, api.DefaultDockerLabelNamespace) kv := make([]dockerfile.KeyValue, 0, len(labels)) for k, v := range labels { kv = append(kv, dockerfile.KeyValue{Key: k, Value: v}) } return kv }
// addBuildParameters checks if a Image is set to replace the default base image. // If that's the case then change the Dockerfile to make the build with the given image. // Also append the environment variables and labels in the Dockerfile. func (d *DockerBuilder) addBuildParameters(dir string) error { dockerfilePath := filepath.Join(dir, "Dockerfile") if d.build.Spec.Strategy.DockerStrategy != nil && len(d.build.Spec.Source.ContextDir) > 0 { dockerfilePath = filepath.Join(dir, d.build.Spec.Source.ContextDir, "Dockerfile") } fileStat, err := os.Lstat(dockerfilePath) if err != nil { return err } filePerm := fileStat.Mode() fileData, err := ioutil.ReadFile(dockerfilePath) if err != nil { return err } var newFileData string if d.build.Spec.Strategy.DockerStrategy.From != nil && d.build.Spec.Strategy.DockerStrategy.From.Kind == "DockerImage" { newFileData, err = replaceValidCmd(dockercmd.From, d.build.Spec.Strategy.DockerStrategy.From.Name, fileData) if err != nil { return err } } else { newFileData = newFileData + string(fileData) } envVars := getBuildEnvVars(d.build) newFileData = appendMetadata(Env, newFileData, envVars) labels := map[string]string{} sourceInfo := d.git.GetInfo(dir) if len(d.build.Spec.Source.ContextDir) > 0 { sourceInfo.ContextDir = d.build.Spec.Source.ContextDir } labels = util.GenerateLabelsFromSourceInfo(labels, sourceInfo, api.DefaultDockerLabelNamespace) newFileData = appendMetadata(Label, newFileData, labels) if ioutil.WriteFile(dockerfilePath, []byte(newFileData), filePerm); err != nil { return err } return nil }
// buildLabels returns a slice of KeyValue pairs in a format that appendEnv can // consume. func (d *DockerBuilder) buildLabels(sourceInfo *git.SourceInfo) []dockerfile.KeyValue { labels := map[string]string{} if sourceInfo == nil { sourceInfo = &git.SourceInfo{} } if len(d.build.Spec.Source.ContextDir) > 0 { sourceInfo.ContextDir = d.build.Spec.Source.ContextDir } labels = util.GenerateLabelsFromSourceInfo(labels, &sourceInfo.SourceInfo, api.DefaultDockerLabelNamespace) kv := make([]dockerfile.KeyValue, 0, len(labels)+len(d.build.Spec.Output.ImageLabels)) for k, v := range labels { kv = append(kv, dockerfile.KeyValue{Key: k, Value: v}) } // override autogenerated labels for _, lbl := range d.build.Spec.Output.ImageLabels { kv = append(kv, dockerfile.KeyValue{Key: lbl.Name, Value: lbl.Value}) } return kv }