Skip to content

Commit bdccd7d

Browse files
author
OpenShift Bot
authored
Merge pull request #11982 from jim-minter/trello123-pipeline-buildconfigs-2
Merged by openshift-bot
2 parents 75aa09c + 9c2cb79 commit bdccd7d

File tree

2 files changed

+85
-11
lines changed

2 files changed

+85
-11
lines changed

pkg/generate/app/cmd/resolve.go

+12-11
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,18 @@ func AddMissingComponentsToRefBuilder(
517517
case info == nil:
518518
errs = append(errs, fmt.Errorf("source not detected for repository %q", repo))
519519
continue
520+
521+
case info.Jenkinsfile && (g.Strategy == generate.StrategyUnspecified || g.Strategy == generate.StrategyPipeline):
522+
refs := b.AddComponents([]string{"pipeline"}, func(input *app.ComponentInput) app.ComponentReference {
523+
input.Resolver = pipelineResolver
524+
input.Use(repo)
525+
input.ExpectToBuild = true
526+
repo.UsedBy(input)
527+
repo.SetStrategy(generate.StrategyPipeline)
528+
return input
529+
})
530+
result = append(result, refs...)
531+
520532
case info.Dockerfile != nil && (g.Strategy == generate.StrategyUnspecified || g.Strategy == generate.StrategyDocker):
521533
node := info.Dockerfile.AST()
522534
baseImage := dockerfileutil.LastBaseImage(node)
@@ -534,17 +546,6 @@ func AddMissingComponentsToRefBuilder(
534546
})
535547
result = append(result, refs...)
536548

537-
case info.Jenkinsfile && (g.Strategy == generate.StrategyUnspecified || g.Strategy == generate.StrategyPipeline):
538-
refs := b.AddComponents([]string{"pipeline"}, func(input *app.ComponentInput) app.ComponentReference {
539-
input.Resolver = pipelineResolver
540-
input.Use(repo)
541-
input.ExpectToBuild = true
542-
repo.UsedBy(input)
543-
repo.SetStrategy(generate.StrategyPipeline)
544-
return input
545-
})
546-
result = append(result, refs...)
547-
548549
default:
549550
// TODO: Add support for searching for more than one language if len(info.Types) > 1
550551
if len(info.Types) == 0 {

pkg/generate/app/cmd/resolve_test.go

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package cmd
2+
3+
import (
4+
"testing"
5+
6+
"github.com/openshift/origin/pkg/generate"
7+
"github.com/openshift/origin/pkg/generate/app"
8+
)
9+
10+
// TestResolveJenkinsfileAndDockerfile ensures that if a repo has a Jenkinsfile
11+
// and a Dockerfile, we use the Jenkinsfile.
12+
func TestResolveJenkinsfileAndDockerfile(t *testing.T) {
13+
dockerfile, _ := app.NewDockerfile("FROM centos\n")
14+
i := app.SourceRepositoryInfo{Dockerfile: dockerfile, Jenkinsfile: true}
15+
16+
repo := app.SourceRepository{}
17+
repo.SetInfo(&i)
18+
repositories := app.SourceRepositories{&repo}
19+
20+
resolvers := Resolvers{}
21+
componentrefs, err := AddMissingComponentsToRefBuilder(&app.ReferenceBuilder{}, repositories, resolvers.DockerfileResolver(), resolvers.SourceResolver(), resolvers.PipelineResolver(), &GenerationInputs{})
22+
23+
checkResolveResult(t, componentrefs, err, generate.StrategyPipeline)
24+
}
25+
26+
// TestResolveJenkinsfileAndSource ensures that if a repo has a Jenkinsfile and
27+
// source, we use the Jenkinsfile.
28+
func TestResolveJenkinsfileAndSource(t *testing.T) {
29+
i := app.SourceRepositoryInfo{Jenkinsfile: true, Types: []app.SourceLanguageType{{Platform: "foo"}}}
30+
31+
repo := app.SourceRepository{}
32+
repo.SetInfo(&i)
33+
repositories := app.SourceRepositories{&repo}
34+
35+
resolvers := Resolvers{}
36+
componentrefs, err := AddMissingComponentsToRefBuilder(&app.ReferenceBuilder{}, repositories, resolvers.DockerfileResolver(), resolvers.SourceResolver(), resolvers.PipelineResolver(), &GenerationInputs{})
37+
38+
checkResolveResult(t, componentrefs, err, generate.StrategyPipeline)
39+
}
40+
41+
// TestResolveDockerfileAndSource ensures that if a repo has a Dockerfile and
42+
// source, we use the Dockerfile.
43+
func TestResolveDockerfileAndSource(t *testing.T) {
44+
dockerfile, _ := app.NewDockerfile("FROM centos\n")
45+
i := app.SourceRepositoryInfo{Dockerfile: dockerfile, Types: []app.SourceLanguageType{{Platform: "foo"}}}
46+
47+
repo := app.SourceRepository{}
48+
repo.SetInfo(&i)
49+
repositories := app.SourceRepositories{&repo}
50+
51+
resolvers := Resolvers{}
52+
componentrefs, err := AddMissingComponentsToRefBuilder(&app.ReferenceBuilder{}, repositories, resolvers.DockerfileResolver(), resolvers.SourceResolver(), resolvers.PipelineResolver(), &GenerationInputs{})
53+
54+
checkResolveResult(t, componentrefs, err, generate.StrategyDocker)
55+
}
56+
57+
func checkResolveResult(t *testing.T, componentrefs app.ComponentReferences, err error, strategy generate.Strategy) {
58+
if err != nil {
59+
t.Fatal(err)
60+
}
61+
62+
if len(componentrefs) != 1 {
63+
t.Fatal("expected len(componentrefs) == 1")
64+
}
65+
66+
if componentrefs[0].Input().Uses == nil {
67+
t.Fatal("expected non-nil componentrefs[0].Input().Uses")
68+
}
69+
70+
if componentrefs[0].Input().Uses.GetStrategy() != strategy {
71+
t.Fatalf("expected componentrefs[0].Input().Uses.GetStrategy() == %s", strategy)
72+
}
73+
}

0 commit comments

Comments
 (0)