Skip to content

Commit bc5e070

Browse files
committed
Merge pull request #127 from arschles/build-choice
fix(Makefile,build.go,build_type.go,build_type_test.go): choose slug builds by default, unless a Dockerfile is present
2 parents 45dff0c + f6216d8 commit bc5e070

5 files changed

Lines changed: 68 additions & 19 deletions

File tree

Makefile

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ RC := manifests/deis-${SHORT_NAME}-rc.yaml
2727
SVC := manifests/deis-${SHORT_NAME}-service.yaml
2828
IMAGE := ${DEIS_REGISTRY}${IMAGE_PREFIX}/${SHORT_NAME}:${VERSION}
2929

30+
TEST_PACKAGES := $(shell ${DEV_ENV_CMD} glide nv)
3031

3132
all:
3233
@echo "Use a Makefile to control top-level building of the project."
@@ -45,12 +46,7 @@ build:
4546
@$(call check-static-binary,$(BINARY_DEST_DIR)/boot)
4647

4748
test:
48-
${DEV_ENV_CMD} go test ./pkg && \
49-
${DEV_ENV_CMD} go test ./pkg/confd && \
50-
${DEV_ENV_CMD} go test ./pkg/env && \
51-
${DEV_ENV_CMD} go test ./pkg/etcd && \
52-
${DEV_ENV_CMD} go test ./pkg/git && \
53-
${DEV_ENV_CMD} go test ./pkg/sshd
49+
${DEV_ENV_CMD} go test ${TEST_PACKAGES}
5450

5551
docker-build:
5652
docker build --rm -t ${IMAGE} rootfs

glide.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ import:
2121
- package: gopkg.in/yaml.v2
2222
version: eca94c41d994ae2215d455ce578ae6e2dc6ee516
2323
- package: github.com/labstack/gommon
24-
- package: code.google.com/p/go-uuid
25-
version: 35bc42037350f0078e3c974c6ea690f1926603ab
26-
subpackages:
27-
- uuid
24+
- package: https://github.com/pborman/uuid
2825
- package: github.com/deis/pkg
2926
subpackages:
3027
- /time

pkg/gitreceive/build.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import (
1010
"strings"
1111
"time"
1212

13-
"code.google.com/p/go-uuid/uuid"
1413
"github.com/deis/builder/pkg"
1514
"github.com/deis/builder/pkg/gitreceive/log"
15+
"github.com/pborman/uuid"
1616
"gopkg.in/yaml.v2"
1717
)
1818

@@ -123,18 +123,22 @@ 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
137-
if err == os.ErrNotExist {
141+
if creds == nil {
138142
// both key and secret are missing, proceed with no credentials
139143
if usingDockerfile {
140144
srcManifest = "/etc/deis-dockerbuilder-no-creds.yaml"

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)