Skip to content

Commit

Permalink
Add optional git buildpack to all build orders
Browse files Browse the repository at this point in the history
- it's put before any other buildpacks that should need it, such as "go mod"
  • Loading branch information
joshuatcasey authored and ryanmoran committed Mar 8, 2022
1 parent dada1d2 commit 52fda81
Show file tree
Hide file tree
Showing 12 changed files with 81 additions and 4 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/.bin
/build
.idea/
15 changes: 15 additions & 0 deletions buildpack.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ api = "0.6"
id = "paketo-buildpacks/go-dist"
version = "0.8.4"

[[order.group]]
id = "paketo-buildpacks/git"
optional = true
version = "0.4.1"

[[order.group]]
id = "paketo-buildpacks/go-mod-vendor"
version = "0.5.0"
Expand Down Expand Up @@ -67,6 +72,11 @@ api = "0.6"
id = "paketo-buildpacks/go-dist"
version = "0.8.4"

[[order.group]]
id = "paketo-buildpacks/git"
optional = true
version = "0.4.1"

[[order.group]]
id = "paketo-buildpacks/dep"
version = "0.3.0"
Expand Down Expand Up @@ -106,6 +116,11 @@ api = "0.6"
optional = true
version = "2.2.0"

[[order.group]]
id = "paketo-buildpacks/git"
optional = true
version = "0.4.1"

[[order.group]]
id = "paketo-buildpacks/go-dist"
version = "0.8.4"
Expand Down
2 changes: 2 additions & 0 deletions integration/build_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
Expect(logs).NotTo(ContainLines(ContainSubstring("Procfile Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Image Labels Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Git Buildpack")))
})

context("using optional utility buildpacks", func() {
Expand Down Expand Up @@ -170,6 +171,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
Expect(logs).NotTo(ContainLines(ContainSubstring("Procfile Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Image Labels Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Git Buildpack")))
})
})

Expand Down
8 changes: 6 additions & 2 deletions integration/dep_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ func testDep(t *testing.T, context spec.G, it spec.S) {
Expect(logs).NotTo(ContainLines(ContainSubstring("Procfile Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Image Labels Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Git Buildpack")))
})

context("when using utility buildpacks", func() {
Expand All @@ -105,12 +106,14 @@ func testDep(t *testing.T, context spec.G, it spec.S) {
"BPE_SOME_VARIABLE": "some-value",
"BP_IMAGE_LABELS": "some-label=some-value",
"BP_LIVE_RELOAD_ENABLED": "true",
"SERVICE_BINDING_ROOT": "/bindings",
}).
WithVolumes(fmt.Sprintf("%s:/bindings/git-credentials", filepath.Join(source, "git-credentials"))).
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())

Expect(image.Buildpacks[7].Key).To(Equal("paketo-buildpacks/environment-variables"))
Expect(image.Buildpacks[7].Layers["environment-variables"].Metadata["variables"]).To(Equal(map[string]interface{}{"SOME_VARIABLE": "some-value"}))
Expect(image.Buildpacks[8].Key).To(Equal("paketo-buildpacks/environment-variables"))
Expect(image.Buildpacks[8].Layers["environment-variables"].Metadata["variables"]).To(Equal(map[string]interface{}{"SOME_VARIABLE": "some-value"}))
Expect(image.Labels["some-label"]).To(Equal("some-value"))

Expect(logs).To(ContainLines(ContainSubstring("Go Distribution Buildpack")))
Expand All @@ -121,6 +124,7 @@ func testDep(t *testing.T, context spec.G, it spec.S) {
Expect(logs).To(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Image Labels Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Watchexec Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Git Buildpack")))

container, err = docker.Container.Run.
WithEnv(map[string]string{"PORT": "8080"}).
Expand Down
47 changes: 45 additions & 2 deletions integration/go_mod_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ func testGoMod(t *testing.T, context spec.G, it spec.S) {
Expect(logs).NotTo(ContainLines(ContainSubstring("Procfile Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Image Labels Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Git Buildpack")))
})

context("when using utility buildpacks", func() {
Expand All @@ -104,12 +105,14 @@ func testGoMod(t *testing.T, context spec.G, it spec.S) {
"BPE_SOME_VARIABLE": "some-value",
"BP_IMAGE_LABELS": "some-label=some-value",
"BP_LIVE_RELOAD_ENABLED": "true",
"SERVICE_BINDING_ROOT": "/bindings",
}).
WithVolumes(fmt.Sprintf("%s:/bindings/git-credentials", filepath.Join(source, "git-credentials"))).
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())

Expect(image.Buildpacks[6].Key).To(Equal("paketo-buildpacks/environment-variables"))
Expect(image.Buildpacks[6].Layers["environment-variables"].Metadata["variables"]).To(Equal(map[string]interface{}{"SOME_VARIABLE": "some-value"}))
Expect(image.Buildpacks[7].Key).To(Equal("paketo-buildpacks/environment-variables"))
Expect(image.Buildpacks[7].Layers["environment-variables"].Metadata["variables"]).To(Equal(map[string]interface{}{"SOME_VARIABLE": "some-value"}))
Expect(image.Labels["some-label"]).To(Equal("some-value"))

Expect(logs).To(ContainLines(ContainSubstring("Go Distribution Buildpack")))
Expand All @@ -119,6 +122,7 @@ func testGoMod(t *testing.T, context spec.G, it spec.S) {
Expect(logs).To(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Image Labels Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Watchexec Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Git Buildpack")))

container, err = docker.Container.Run.
WithEnv(map[string]string{"PORT": "8080"}).
Expand Down Expand Up @@ -188,6 +192,8 @@ func testGoMod(t *testing.T, context spec.G, it spec.S) {
Expect(logs).To(ContainLines(ContainSubstring("Go Distribution Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Go Build Buildpack")))

Expect(logs).NotTo(ContainLines(ContainSubstring("Git Buildpack")))

container, err = docker.Container.Run.
WithPublish("8080").
WithEnv(map[string]string{
Expand Down Expand Up @@ -274,6 +280,43 @@ func testGoMod(t *testing.T, context spec.G, it spec.S) {
Expect(logs).To(ContainLines(ContainSubstring("Go Mod Vendor Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Go Build Buildpack")))

Expect(logs).NotTo(ContainLines(ContainSubstring("Dep Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Procfile Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Image Labels Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Git Buildpack")))
})

it("when using git utility buildpack", func() {
var err error
var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithBuildpacks(goBuildpack).
WithEnv(map[string]string{
"PORT": "8080",
"SERVICE_BINDING_ROOT": "/bindings",
}).
WithVolumes(fmt.Sprintf("%s:/bindings/git-credentials", filepath.Join(source, "git-credentials"))).
WithPullPolicy("never").
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())

container, err = docker.Container.Run.
WithEnv(map[string]string{
"PORT": "8080",
}).
WithPublish("8080").
WithPublishAll().
Execute(image.ID)
Expect(err).NotTo(HaveOccurred())

Eventually(container).Should(Serve(ContainSubstring("Hello, World!")).OnPort(8080))

Expect(logs).To(ContainLines(ContainSubstring("Go Distribution Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Go Mod Vendor Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Go Build Buildpack")))
Expect(logs).To(ContainLines(ContainSubstring("Git Buildpack")))

Expect(logs).NotTo(ContainLines(ContainSubstring("Dep Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Procfile Buildpack")))
Expect(logs).NotTo(ContainLines(ContainSubstring("Environment Variables Buildpack")))
Expand Down
2 changes: 2 additions & 0 deletions integration/testdata/dep/git-credentials/credentials
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
username=<your username>
password=<your password>
1 change: 1 addition & 0 deletions integration/testdata/dep/git-credentials/type
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
git-credentials
2 changes: 2 additions & 0 deletions integration/testdata/go_mod/git-credentials/credentials
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
username=<your username>
password=<your password>
1 change: 1 addition & 0 deletions integration/testdata/go_mod/git-credentials/type
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
git-credentials
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
username=<your username>
password=<your password>
1 change: 1 addition & 0 deletions integration/testdata/go_mod_vendored/git-credentials/type
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
git-credentials
3 changes: 3 additions & 0 deletions package.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@

[[dependencies]]
uri = "docker://gcr.io/paketo-buildpacks/watchexec:2.2.0"

[[dependencies]]
uri = "docker://gcr.io/paketo-buildpacks/git:0.4.1"

0 comments on commit 52fda81

Please sign in to comment.