Skip to content

Commit 3045256

Browse files
author
Aaron Schlesinger
committed
fix(build.go): default to slug builds
this commit also splits the build selection code into a separate func, so that it can be more easily tested
1 parent f6c4cb3 commit 3045256

3 files changed

Lines changed: 63 additions & 7 deletions

File tree

pkg/gitreceive/build.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,18 @@ func build(conf *Config, builderKey, gitSha string) error {
123123
return fmt.Errorf("running %s (%s)", strings.Join(tarCmd.Args, " "), err)
124124
}
125125

126-
usingDockerfile := true
127-
rawProcFile, err := ioutil.ReadFile(fmt.Sprintf("%s/Procfile", tmpDir))
128-
if err == nil {
129-
usingDockerfile = false
130-
}
126+
bType := getBuildTypeForDir(tmpDir)
127+
usingDockerfile := bType == buildTypeDockerfile
128+
131129
var procType pkg.ProcessType
132-
if err := yaml.Unmarshal(rawProcFile, &procType); err != nil {
133-
return fmt.Errorf("procfile %s/ProcFile is malformed (%s)", tmpDir, err)
130+
if bType == buildTypeProcfile {
131+
rawProcFile, err := ioutil.ReadFile(fmt.Sprintf("%s/Procfile", tmpDir))
132+
if err != nil {
133+
return fmt.Errorf("reading %s/Procfile", tmpDir)
134+
}
135+
if err := yaml.Unmarshal(rawProcFile, &procType); err != nil {
136+
return fmt.Errorf("procfile %s/ProcFile is malformed (%s)", tmpDir, err)
137+
}
134138
}
135139

136140
var srcManifest string

pkg/gitreceive/build_type.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package gitreceive
2+
3+
import (
4+
"fmt"
5+
"os"
6+
)
7+
8+
type buildType string
9+
10+
func (b buildType) String() string {
11+
return string(b)
12+
}
13+
14+
const (
15+
buildTypeProcfile buildType = "procfile"
16+
buildTypeDockerfile buildType = "dockerfile"
17+
)
18+
19+
func getBuildTypeForDir(dirName string) buildType {
20+
_, err := os.Stat(fmt.Sprintf("%s/Dockerfile", dirName))
21+
if err == nil {
22+
return buildTypeDockerfile
23+
}
24+
return buildTypeProcfile
25+
}

pkg/gitreceive/build_type_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package gitreceive
2+
3+
import (
4+
"os"
5+
"testing"
6+
)
7+
8+
func TestGetBuildTypeForDir(t *testing.T) {
9+
tmpDir := os.TempDir()
10+
bType := getBuildTypeForDir(tmpDir)
11+
if bType != buildTypeProcfile {
12+
t.Fatalf("expected procfile build, got %s", bType)
13+
}
14+
if _, err := os.Create(tmpDir + "/Dockerfile"); err != nil {
15+
t.Fatalf("error creating %s/Dockerfile (%s)", tmpDir, err)
16+
}
17+
defer func() {
18+
if err := os.Remove(tmpDir + "/Dockerfile"); err != nil {
19+
t.Fatalf("failed to remove Dockerfile from %s (%s)", tmpDir, err)
20+
}
21+
}()
22+
23+
bType = getBuildTypeForDir(tmpDir)
24+
if bType != buildTypeDockerfile {
25+
t.Fatalf("expected dockerfile build, got %s", bType)
26+
}
27+
}

0 commit comments

Comments
 (0)