From 52fda81f19a30b2e8d5df8c6e64ddae7e3f6e149 Mon Sep 17 00:00:00 2001 From: "Joshua T. Casey" Date: Mon, 7 Mar 2022 18:01:25 -0600 Subject: [PATCH] Add optional git buildpack to all build orders - it's put before any other buildpacks that should need it, such as "go mod" --- .gitignore | 1 + buildpack.toml | 15 ++++++ integration/build_test.go | 2 + integration/dep_test.go | 8 +++- integration/go_mod_test.go | 47 ++++++++++++++++++- .../testdata/dep/git-credentials/credentials | 2 + integration/testdata/dep/git-credentials/type | 1 + .../go_mod/git-credentials/credentials | 2 + .../testdata/go_mod/git-credentials/type | 1 + .../git-credentials/credentials | 2 + .../go_mod_vendored/git-credentials/type | 1 + package.toml | 3 ++ 12 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 integration/testdata/dep/git-credentials/credentials create mode 100644 integration/testdata/dep/git-credentials/type create mode 100644 integration/testdata/go_mod/git-credentials/credentials create mode 100644 integration/testdata/go_mod/git-credentials/type create mode 100644 integration/testdata/go_mod_vendored/git-credentials/credentials create mode 100644 integration/testdata/go_mod_vendored/git-credentials/type diff --git a/.gitignore b/.gitignore index 5298fd94..779c8b15 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /.bin /build +.idea/ diff --git a/buildpack.toml b/buildpack.toml index 9b9aed91..981f0c3c 100644 --- a/buildpack.toml +++ b/buildpack.toml @@ -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" @@ -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" @@ -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" diff --git a/integration/build_test.go b/integration/build_test.go index 29ff03bf..b0d9fa1a 100644 --- a/integration/build_test.go +++ b/integration/build_test.go @@ -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() { @@ -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"))) }) }) diff --git a/integration/dep_test.go b/integration/dep_test.go index 0d3b89cd..e32fb06e 100644 --- a/integration/dep_test.go +++ b/integration/dep_test.go @@ -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() { @@ -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"))) @@ -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"}). diff --git a/integration/go_mod_test.go b/integration/go_mod_test.go index 701c4cee..c2e971f0 100644 --- a/integration/go_mod_test.go +++ b/integration/go_mod_test.go @@ -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() { @@ -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"))) @@ -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"}). @@ -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{ @@ -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"))) diff --git a/integration/testdata/dep/git-credentials/credentials b/integration/testdata/dep/git-credentials/credentials new file mode 100644 index 00000000..059e73a4 --- /dev/null +++ b/integration/testdata/dep/git-credentials/credentials @@ -0,0 +1,2 @@ +username= +password= diff --git a/integration/testdata/dep/git-credentials/type b/integration/testdata/dep/git-credentials/type new file mode 100644 index 00000000..c7e5685f --- /dev/null +++ b/integration/testdata/dep/git-credentials/type @@ -0,0 +1 @@ +git-credentials diff --git a/integration/testdata/go_mod/git-credentials/credentials b/integration/testdata/go_mod/git-credentials/credentials new file mode 100644 index 00000000..059e73a4 --- /dev/null +++ b/integration/testdata/go_mod/git-credentials/credentials @@ -0,0 +1,2 @@ +username= +password= diff --git a/integration/testdata/go_mod/git-credentials/type b/integration/testdata/go_mod/git-credentials/type new file mode 100644 index 00000000..c7e5685f --- /dev/null +++ b/integration/testdata/go_mod/git-credentials/type @@ -0,0 +1 @@ +git-credentials diff --git a/integration/testdata/go_mod_vendored/git-credentials/credentials b/integration/testdata/go_mod_vendored/git-credentials/credentials new file mode 100644 index 00000000..059e73a4 --- /dev/null +++ b/integration/testdata/go_mod_vendored/git-credentials/credentials @@ -0,0 +1,2 @@ +username= +password= diff --git a/integration/testdata/go_mod_vendored/git-credentials/type b/integration/testdata/go_mod_vendored/git-credentials/type new file mode 100644 index 00000000..c7e5685f --- /dev/null +++ b/integration/testdata/go_mod_vendored/git-credentials/type @@ -0,0 +1 @@ +git-credentials diff --git a/package.toml b/package.toml index 31951615..77dfb7ec 100644 --- a/package.toml +++ b/package.toml @@ -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"