Skip to content

Commit 2643422

Browse files
committed
shim pkg/build/builder source-to-image types
1 parent 246a98a commit 2643422

File tree

3 files changed

+58
-4
lines changed

3 files changed

+58
-4
lines changed

pkg/build/builder/common.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/docker/distribution/reference"
1919
"github.com/fsouza/go-dockerclient"
2020

21+
s2igit "github.com/openshift/source-to-image/pkg/scm/git"
2122
"github.com/openshift/source-to-image/pkg/util"
2223

2324
buildapi "github.com/openshift/origin/pkg/build/apis/build"
@@ -263,6 +264,22 @@ func buildEnv(build *buildapi.Build, sourceInfo *git.SourceInfo) []dockerfile.Ke
263264
return kv
264265
}
265266

267+
// TODO: remove this shim (required to adapt vendored types)
268+
func toS2ISourceInfo(sourceInfo *git.SourceInfo) *s2igit.SourceInfo {
269+
return &s2igit.SourceInfo{
270+
Ref: sourceInfo.Ref,
271+
CommitID: sourceInfo.CommitID,
272+
Date: sourceInfo.Date,
273+
AuthorName: sourceInfo.AuthorName,
274+
AuthorEmail: sourceInfo.AuthorEmail,
275+
CommitterName: sourceInfo.CommitterName,
276+
CommitterEmail: sourceInfo.CommitterEmail,
277+
Message: sourceInfo.Message,
278+
Location: sourceInfo.Location,
279+
ContextDir: sourceInfo.ContextDir,
280+
}
281+
}
282+
266283
// buildLabels returns a slice of KeyValue pairs in a format that appendLabel can
267284
// consume.
268285
func buildLabels(build *buildapi.Build, sourceInfo *git.SourceInfo) []dockerfile.KeyValue {
@@ -273,7 +290,7 @@ func buildLabels(build *buildapi.Build, sourceInfo *git.SourceInfo) []dockerfile
273290
if len(build.Spec.Source.ContextDir) > 0 {
274291
sourceInfo.ContextDir = build.Spec.Source.ContextDir
275292
}
276-
labels = util.GenerateLabelsFromSourceInfo(labels, &sourceInfo.SourceInfo, buildapi.DefaultDockerLabelNamespace)
293+
labels = util.GenerateLabelsFromSourceInfo(labels, toS2ISourceInfo(sourceInfo), buildapi.DefaultDockerLabelNamespace)
277294
addBuildLabels(labels, build)
278295

279296
kv := make([]dockerfile.KeyValue, 0, len(labels)+len(build.Spec.Output.ImageLabels))

pkg/build/builder/sti.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (s *S2IBuilder) Build() error {
128128
}
129129
var s2iSourceInfo *s2igit.SourceInfo
130130
if sourceInfo != nil {
131-
s2iSourceInfo = &sourceInfo.SourceInfo
131+
s2iSourceInfo = toS2ISourceInfo(sourceInfo)
132132
}
133133
injections := s2iapi.VolumeList{}
134134
for _, s := range s.build.Spec.Source.Secrets {
@@ -250,7 +250,7 @@ func (s *S2IBuilder) Build() error {
250250
return err
251251
}
252252
if glog.Is(4) {
253-
redactedConfig := buildutil.SafeForLoggingS2IConfig(config)
253+
redactedConfig := SafeForLoggingS2IConfig(config)
254254
glog.V(4).Infof("Creating a new S2I builder with config: %#v\n", describe.Config(client, redactedConfig))
255255
}
256256
builder, buildInfo, err := s.builder.Builder(config, s2ibuild.Overrides{Downloader: nil})
@@ -370,7 +370,7 @@ func s2iBuildLabels(build *buildapi.Build, sourceInfo *git.SourceInfo) map[strin
370370
sourceInfo.ContextDir = build.Spec.Source.ContextDir
371371
}
372372

373-
labels = s2iutil.GenerateLabelsFromSourceInfo(labels, &sourceInfo.SourceInfo, buildapi.DefaultDockerLabelNamespace)
373+
labels = s2iutil.GenerateLabelsFromSourceInfo(labels, toS2ISourceInfo(sourceInfo), buildapi.DefaultDockerLabelNamespace)
374374

375375
// override autogenerated labels
376376
for _, lbl := range build.Spec.Output.ImageLabels {

pkg/build/builder/util.go

+37
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import (
1313
docker "github.com/fsouza/go-dockerclient"
1414

1515
buildapi "github.com/openshift/origin/pkg/build/apis/build"
16+
buildutil "github.com/openshift/origin/pkg/build/util"
17+
s2iapi "github.com/openshift/source-to-image/pkg/api"
18+
s2iutil "github.com/openshift/source-to-image/pkg/util"
1619
)
1720

1821
var (
@@ -151,3 +154,37 @@ func extractParentFromCgroupMap(cgMap map[string]string) (string, error) {
151154
glog.V(5).Infof("found cgroup parent %v", cgroupParent)
152155
return cgroupParent, nil
153156
}
157+
158+
// SafeForLoggingEnvironmentList returns a copy of an s2i EnvironmentList array with
159+
// proxy credential values redacted.
160+
func SafeForLoggingEnvironmentList(env s2iapi.EnvironmentList) s2iapi.EnvironmentList {
161+
newEnv := make(s2iapi.EnvironmentList, len(env))
162+
copy(newEnv, env)
163+
proxyRegex := regexp.MustCompile("(?i)proxy")
164+
for i, env := range newEnv {
165+
if proxyRegex.MatchString(env.Name) {
166+
newEnv[i].Value, _ = s2iutil.SafeForLoggingURL(env.Value)
167+
}
168+
}
169+
return newEnv
170+
}
171+
172+
// SafeForLoggingS2IConfig returns a copy of an s2i Config with
173+
// proxy credentials redacted.
174+
func SafeForLoggingS2IConfig(config *s2iapi.Config) *s2iapi.Config {
175+
newConfig := *config
176+
newConfig.Environment = SafeForLoggingEnvironmentList(config.Environment)
177+
if config.ScriptDownloadProxyConfig != nil {
178+
newProxy := *config.ScriptDownloadProxyConfig
179+
newConfig.ScriptDownloadProxyConfig = &newProxy
180+
if newConfig.ScriptDownloadProxyConfig.HTTPProxy != nil {
181+
newConfig.ScriptDownloadProxyConfig.HTTPProxy = buildutil.SafeForLoggingURL(newConfig.ScriptDownloadProxyConfig.HTTPProxy)
182+
}
183+
184+
if newConfig.ScriptDownloadProxyConfig.HTTPProxy != nil {
185+
newConfig.ScriptDownloadProxyConfig.HTTPSProxy = buildutil.SafeForLoggingURL(newConfig.ScriptDownloadProxyConfig.HTTPProxy)
186+
}
187+
}
188+
newConfig.ScriptsURL, _ = s2iutil.SafeForLoggingURL(newConfig.ScriptsURL)
189+
return &newConfig
190+
}

0 commit comments

Comments
 (0)