Skip to content

Commit f74872c

Browse files
Updates buildpack.toml with 2.7.2, 4.0.7, 4.0.8, 2.7.1 (#1019)
* Updating buildpack.toml with new versions 2.7.2, 4.0.7, 4.0.8, 2.7.1 * Adjust version to test for/ add noble builder * Adjust tests to test based on bundler major version * Introduce tests for bundler 4.* * Introduce tests for bundler 4.* * Introduce tests for bundler 4.* * Introduce tests for bundler 4.* --------- Co-authored-by: BG <bguttmann@anynines.com>
1 parent 07de0f8 commit f74872c

17 files changed

Lines changed: 345 additions & 39 deletions

File tree

buildpack.toml

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,60 @@ api = "0.7"
1919
bundler = "2.x.x"
2020

2121
[[metadata.dependencies]]
22-
checksum = "sha256:6a5adb60124e5e636829f28cc3b399fbde74549be8bf5e566d22315feb486719"
23-
cpe = "cpe:2.3:a:bundler:bundler:2.5.17:*:*:*:*:ruby:*:*"
22+
checksum = "sha256:8c95d4d96b83db82fb71ba2670296666aedf985fe63c1a201ec2da126b98c86e"
23+
cpe = "cpe:2.3:a:bundler:bundler:2.7.1:*:*:*:*:ruby:*:*"
2424
id = "bundler"
2525
licenses = ["MIT"]
2626
name = "bundler"
27-
purl = "pkg:generic/bundler@2.5.17?checksum=c4ef7050367e22f28e7928eb95ba055d111c2c4cd398de2ba8f6ab1532e46d3a&download_url=https://rubygems.org/downloads/bundler-2.5.17.gem"
28-
source = "https://rubygems.org/downloads/bundler-2.5.17.gem"
29-
source-checksum = "sha256:c4ef7050367e22f28e7928eb95ba055d111c2c4cd398de2ba8f6ab1532e46d3a"
30-
stacks = ["io.buildpacks.stacks.bionic", "io.buildpacks.stacks.jammy"]
27+
purl = "pkg:generic/bundler@2.7.1?checksum=0ad5a002a879776b2a98be652f557ac8731be3353612d63fa4ef1b2706dc1e0b&download_url=https://rubygems.org/downloads/bundler-2.7.1.gem"
28+
source = "https://rubygems.org/downloads/bundler-2.7.1.gem"
29+
source-checksum = "sha256:0ad5a002a879776b2a98be652f557ac8731be3353612d63fa4ef1b2706dc1e0b"
30+
stacks = ["io.buildpacks.stacks.jammy", "io.buildpacks.stacks.noble"]
3131
strip-components = 2
32-
uri = "https://artifacts.paketo.io/bundler/bundler-ubuntu-2.5.17-6a5adb60.tgz"
33-
version = "2.5.17"
32+
uri = "https://artifacts.paketo.io/bundler/bundler-noble-2.7.1-8c95d4d9.tgz"
33+
version = "2.7.1"
3434

3535
[[metadata.dependencies]]
36-
checksum = "sha256:8078c215730265a323844ce4f83b1a68e308b3cc8a16201f6011abcc49b90714"
37-
cpe = "cpe:2.3:a:bundler:bundler:2.5.18:*:*:*:*:ruby:*:*"
36+
checksum = "sha256:6d82ca8c7d3814b6474c56dabf62339bcc8d6be3973f819a1867b438958d3aaa"
37+
cpe = "cpe:2.3:a:bundler:bundler:2.7.2:*:*:*:*:ruby:*:*"
3838
id = "bundler"
3939
licenses = ["MIT"]
4040
name = "bundler"
41-
purl = "pkg:generic/bundler@2.5.18?checksum=042439fa8a5a2a64c37df8e4f6be5cd98d3f8fd5bcf511a1858b4878ef408a31&download_url=https://rubygems.org/downloads/bundler-2.5.18.gem"
42-
source = "https://rubygems.org/downloads/bundler-2.5.18.gem"
43-
source-checksum = "sha256:042439fa8a5a2a64c37df8e4f6be5cd98d3f8fd5bcf511a1858b4878ef408a31"
44-
stacks = ["io.buildpacks.stacks.bionic", "io.buildpacks.stacks.jammy"]
41+
purl = "pkg:generic/bundler@2.7.2?checksum=1decaf9e2e1acb91b6586a2925c8f3f6da2334a82731a62ff2ded1b83c283871&download_url=https://rubygems.org/downloads/bundler-2.7.2.gem"
42+
source = "https://rubygems.org/downloads/bundler-2.7.2.gem"
43+
source-checksum = "sha256:1decaf9e2e1acb91b6586a2925c8f3f6da2334a82731a62ff2ded1b83c283871"
44+
stacks = ["io.buildpacks.stacks.jammy", "io.buildpacks.stacks.noble"]
4545
strip-components = 2
46-
uri = "https://artifacts.paketo.io/bundler/bundler-ubuntu-2.5.18-8078c215.tgz"
47-
version = "2.5.18"
46+
uri = "https://artifacts.paketo.io/bundler/bundler-noble-2.7.2-6d82ca8c.tgz"
47+
version = "2.7.2"
48+
49+
[[metadata.dependencies]]
50+
checksum = "sha256:47a8b8bd2d2c76e8f287acac6c884271b1bd6053c4a05f05ac03b30b451b841f"
51+
cpe = "cpe:2.3:a:bundler:bundler:4.0.7:*:*:*:*:ruby:*:*"
52+
id = "bundler"
53+
licenses = ["MIT"]
54+
name = "bundler"
55+
purl = "pkg:generic/bundler@4.0.7?checksum=f8d8ab45cfdb755983de2c867a29680196a5340f6979f8a354b9244a49c20b17&download_url=https://rubygems.org/downloads/bundler-4.0.7.gem"
56+
source = "https://rubygems.org/downloads/bundler-4.0.7.gem"
57+
source-checksum = "sha256:f8d8ab45cfdb755983de2c867a29680196a5340f6979f8a354b9244a49c20b17"
58+
stacks = ["io.buildpacks.stacks.jammy", "io.buildpacks.stacks.noble"]
59+
strip-components = 2
60+
uri = "https://artifacts.paketo.io/bundler/bundler-noble-4.0.7-47a8b8bd.tgz"
61+
version = "4.0.7"
62+
63+
[[metadata.dependencies]]
64+
checksum = "sha256:b48c023388f8348dd880d6efaac2068115bc2c05430338cb60e5098e21fcf93f"
65+
cpe = "cpe:2.3:a:bundler:bundler:4.0.8:*:*:*:*:ruby:*:*"
66+
id = "bundler"
67+
licenses = ["MIT"]
68+
name = "bundler"
69+
purl = "pkg:generic/bundler@4.0.8?checksum=ad75e7903192d544bc62b377a35815d477459b7fbea6660991492e453e0be9b4&download_url=https://rubygems.org/downloads/bundler-4.0.8.gem"
70+
source = "https://rubygems.org/downloads/bundler-4.0.8.gem"
71+
source-checksum = "sha256:ad75e7903192d544bc62b377a35815d477459b7fbea6660991492e453e0be9b4"
72+
stacks = ["io.buildpacks.stacks.jammy", "io.buildpacks.stacks.noble"]
73+
strip-components = 2
74+
uri = "https://artifacts.paketo.io/bundler/bundler-noble-4.0.8-b48c0233.tgz"
75+
version = "4.0.8"
4876

4977
[[metadata.dependency-constraints]]
5078
constraint = "2.*.*"

integration.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"builders": [
3-
"index.docker.io/paketobuildpacks/builder-jammy-buildpackless-base:latest"
3+
"index.docker.io/paketobuildpacks/builder-jammy-buildpackless-base:latest",
4+
"index.docker.io/paketobuildpacks/ubuntu-noble-builder-buildpackless:latest"
45
],
56
"build-plan": "index.docker.io/paketocommunity/build-plan",
67
"mri": "github.com/paketo-buildpacks/mri"

integration/buildpack_yml_test.go

Lines changed: 60 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,25 +75,81 @@ func testBuildpackYML(t *testing.T, context spec.G, it spec.S) {
7575

7676
Eventually(container).Should(BeAvailable())
7777
Eventually(container).Should(Serve(ContainSubstring(fmt.Sprintf("/layers/%s/bundler/bin/bundler", strings.ReplaceAll(settings.Buildpack.ID, "/", "_")))).OnPort(8080))
78-
Eventually(container).Should(Serve(MatchRegexp(`Bundler version 2\.5\.\d+`)).OnPort(8080))
78+
Eventually(container).Should(Serve(MatchRegexp(`Bundler version 2\.\d+\.\d+`)).OnPort(8080))
7979

8080
Expect(logs).To(ContainLines(
8181
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
8282
" Resolving Bundler version",
8383
" Candidate version sources (in priority order):",
84-
" buildpack.yml -> \"2.5.*\"",
84+
" buildpack.yml -> \"2.*\"",
8585
" <unknown> -> \"\"",
8686
))
8787
Expect(logs).To(ContainLines(
88-
MatchRegexp(` Selected bundler version \(using buildpack\.yml\): 2\.5\.\d+`),
88+
MatchRegexp(` Selected bundler version \(using buildpack\.yml\): 2\.\d+\.\d+`),
8989
))
9090
Expect(logs).To(ContainLines(
9191
" WARNING: Setting the Bundler version through buildpack.yml will be deprecated soon in Bundler Buildpack v2.0.0.",
9292
" Please specify the version through the $BP_BUNDLER_VERSION environment variable instead. See README.md for more information.",
9393
))
9494
Expect(logs).To(ContainLines(
9595
" Executing build process",
96-
MatchRegexp(` Installing Bundler 2\.5\.\d+`),
96+
MatchRegexp(` Installing Bundler 2\.\d+\.\d+`),
97+
MatchRegexp(` Completed in \d+\.?\d*`),
98+
))
99+
Expect(logs).To(ContainLines(
100+
" Configuring build environment",
101+
MatchRegexp(fmt.Sprintf(` GEM_PATH -> "\$GEM_PATH:/layers/%s/bundler"`, strings.ReplaceAll(settings.Buildpack.ID, "/", "_"))),
102+
))
103+
Expect(logs).To(ContainLines(
104+
" Configuring launch environment",
105+
MatchRegexp(fmt.Sprintf(` GEM_PATH -> "\$GEM_PATH:/layers/%s/bundler"`, strings.ReplaceAll(settings.Buildpack.ID, "/", "_"))),
106+
))
107+
})
108+
109+
it("installs Bundler 4.x when specified in buildpack.yml", func() {
110+
var err error
111+
source, err = occam.Source(filepath.Join("testdata", "buildpack_yml_version_4"))
112+
Expect(err).NotTo(HaveOccurred())
113+
114+
var logs fmt.Stringer
115+
image, logs, err = pack.WithNoColor().Build.
116+
WithPullPolicy("never").
117+
WithBuildpacks(
118+
settings.Buildpacks.MRI.Online,
119+
settings.Buildpacks.Bundler.Online,
120+
settings.Buildpacks.BuildPlan.Online,
121+
).
122+
Execute(name, source)
123+
Expect(err).ToNot(HaveOccurred(), logs.String)
124+
125+
container, err = docker.Container.Run.
126+
WithEnv(map[string]string{"PORT": "8080"}).
127+
WithPublish("8080").
128+
WithPublishAll().
129+
WithCommand("ruby run.rb").Execute(image.ID)
130+
Expect(err).NotTo(HaveOccurred())
131+
132+
Eventually(container).Should(BeAvailable())
133+
Eventually(container).Should(Serve(ContainSubstring(fmt.Sprintf("/layers/%s/bundler/bin/bundler", strings.ReplaceAll(settings.Buildpack.ID, "/", "_")))).OnPort(8080))
134+
Eventually(container).Should(Serve(MatchRegexp(`4\.\d+\.\d+ \(`)).OnPort(8080))
135+
136+
Expect(logs).To(ContainLines(
137+
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
138+
" Resolving Bundler version",
139+
" Candidate version sources (in priority order):",
140+
" buildpack.yml -> \"4.*\"",
141+
" <unknown> -> \"\"",
142+
))
143+
Expect(logs).To(ContainLines(
144+
MatchRegexp(` Selected bundler version \(using buildpack\.yml\): 4\.\d+\.\d+`),
145+
))
146+
Expect(logs).To(ContainLines(
147+
" WARNING: Setting the Bundler version through buildpack.yml will be deprecated soon in Bundler Buildpack v2.0.0.",
148+
" Please specify the version through the $BP_BUNDLER_VERSION environment variable instead. See README.md for more information.",
149+
))
150+
Expect(logs).To(ContainLines(
151+
" Executing build process",
152+
MatchRegexp(` Installing Bundler 4\.\d+\.\d+`),
97153
MatchRegexp(` Completed in \d+\.?\d*`),
98154
))
99155
Expect(logs).To(ContainLines(

integration/env_var_test.go

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func testRunWithEnvVar(t *testing.T, context spec.G, it spec.S) {
8383
" Resolving Bundler version",
8484
" Candidate version sources (in priority order):",
8585
" BP_BUNDLER_VERSION -> \"2.*\"",
86-
" buildpack.yml -> \"2.5.*\"",
86+
" buildpack.yml -> \"2.*\"",
8787
" <unknown> -> \"\"",
8888
))
8989
Expect(logs).To(ContainLines(
@@ -103,5 +103,59 @@ func testRunWithEnvVar(t *testing.T, context spec.G, it spec.S) {
103103
MatchRegexp(fmt.Sprintf(` GEM_PATH -> "\$GEM_PATH:/layers/%s/bundler"`, strings.ReplaceAll(settings.Buildpack.ID, "/", "_"))),
104104
))
105105
})
106+
107+
it("builds app successfully with Bundler 4.x when specified in $BP_BUNDLER_VERSION", func() {
108+
var err error
109+
source, err = occam.Source(filepath.Join("testdata", "buildpack_yml_version"))
110+
Expect(err).NotTo(HaveOccurred())
111+
112+
var logs fmt.Stringer
113+
image, logs, err = pack.WithNoColor().Build.
114+
WithPullPolicy("never").
115+
WithBuildpacks(
116+
settings.Buildpacks.MRI.Online,
117+
settings.Buildpacks.Bundler.Online,
118+
settings.Buildpacks.BuildPlan.Online,
119+
).
120+
WithEnv(map[string]string{"BP_BUNDLER_VERSION": "4.*"}).
121+
Execute(name, source)
122+
Expect(err).ToNot(HaveOccurred(), logs.String)
123+
124+
container, err = docker.Container.Run.
125+
WithEnv(map[string]string{"PORT": "8080"}).
126+
WithPublish("8080").
127+
WithPublishAll().
128+
WithCommand("ruby run.rb").Execute(image.ID)
129+
Expect(err).NotTo(HaveOccurred())
130+
131+
Eventually(container).Should(BeAvailable())
132+
Eventually(container).Should(Serve(ContainSubstring(fmt.Sprintf("/layers/%s/bundler/bin/bundler", strings.ReplaceAll(settings.Buildpack.ID, "/", "_")))).OnPort(8080))
133+
Eventually(container).Should(Serve(MatchRegexp(`4\.\d+\.\d+ \(`)).OnPort(8080))
134+
135+
Expect(logs).To(ContainLines(
136+
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
137+
" Resolving Bundler version",
138+
" Candidate version sources (in priority order):",
139+
" BP_BUNDLER_VERSION -> \"4.*\"",
140+
" buildpack.yml -> \"2.*\"",
141+
" <unknown> -> \"\"",
142+
))
143+
Expect(logs).To(ContainLines(
144+
MatchRegexp(` Selected bundler version \(using BP_BUNDLER_VERSION\): 4\.\d+\.\d+`),
145+
))
146+
Expect(logs).To(ContainLines(
147+
" Executing build process",
148+
MatchRegexp(` Installing Bundler 4\.\d+\.\d+`),
149+
MatchRegexp(` Completed in \d+\.?\d*`),
150+
))
151+
Expect(logs).To(ContainLines(
152+
" Configuring build environment",
153+
MatchRegexp(fmt.Sprintf(` GEM_PATH -> "\$GEM_PATH:/layers/%s/bundler"`, strings.ReplaceAll(settings.Buildpack.ID, "/", "_"))),
154+
))
155+
Expect(logs).To(ContainLines(
156+
" Configuring launch environment",
157+
MatchRegexp(fmt.Sprintf(` GEM_PATH -> "\$GEM_PATH:/layers/%s/bundler"`, strings.ReplaceAll(settings.Buildpack.ID, "/", "_"))),
158+
))
159+
})
106160
})
107161
}

integration/gemfile_lock_test.go

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func testGemfileLock(t *testing.T, context spec.G, it spec.S) {
7575

7676
Eventually(container).Should(BeAvailable())
7777
Eventually(container).Should(Serve(ContainSubstring(fmt.Sprintf("/layers/%s/bundler/bin/bundler", strings.ReplaceAll(settings.Buildpack.ID, "/", "_")))).OnPort(8080))
78-
Eventually(container).Should(Serve(MatchRegexp(`Bundler version 2\.5\.\d+`)).OnPort(8080))
78+
Eventually(container).Should(Serve(MatchRegexp(`Bundler version 2\.\d+\.\d+`)).OnPort(8080))
7979

8080
Expect(logs).To(ContainLines(
8181
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
@@ -85,11 +85,63 @@ func testGemfileLock(t *testing.T, context spec.G, it spec.S) {
8585
" <unknown> -> \"\"",
8686
))
8787
Expect(logs).To(ContainLines(
88-
MatchRegexp(` Selected bundler version \(using Gemfile\.lock\): 2\.5\.\d+`),
88+
MatchRegexp(` Selected bundler version \(using Gemfile\.lock\): 2\.\d+\.\d+`),
8989
))
9090
Expect(logs).To(ContainLines(
9191
" Executing build process",
92-
MatchRegexp(` Installing Bundler 2\.5\.\d+`),
92+
MatchRegexp(` Installing Bundler 2\.\d+\.\d+`),
93+
MatchRegexp(` Completed in \d+\.?\d*`),
94+
))
95+
Expect(logs).To(ContainLines(
96+
" Configuring build environment",
97+
MatchRegexp(fmt.Sprintf(` GEM_PATH -> "\$GEM_PATH:/layers/%s/bundler"`, strings.ReplaceAll(settings.Buildpack.ID, "/", "_"))),
98+
))
99+
Expect(logs).To(ContainLines(
100+
" Configuring launch environment",
101+
MatchRegexp(fmt.Sprintf(` GEM_PATH -> "\$GEM_PATH:/layers/%s/bundler"`, strings.ReplaceAll(settings.Buildpack.ID, "/", "_"))),
102+
))
103+
})
104+
105+
it("installs Bundler 4.x when specified in Gemfile.lock", func() {
106+
var err error
107+
source, err = occam.Source(filepath.Join("testdata", "gemfile_lock_version_4"))
108+
Expect(err).NotTo(HaveOccurred())
109+
110+
var logs fmt.Stringer
111+
image, logs, err = pack.WithNoColor().Build.
112+
WithPullPolicy("never").
113+
WithBuildpacks(
114+
settings.Buildpacks.MRI.Online,
115+
settings.Buildpacks.Bundler.Online,
116+
settings.Buildpacks.BuildPlan.Online,
117+
).
118+
Execute(name, source)
119+
Expect(err).ToNot(HaveOccurred(), logs.String)
120+
121+
container, err = docker.Container.Run.
122+
WithEnv(map[string]string{"PORT": "8080"}).
123+
WithPublish("8080").
124+
WithPublishAll().
125+
WithCommand("ruby run.rb").Execute(image.ID)
126+
Expect(err).NotTo(HaveOccurred())
127+
128+
Eventually(container).Should(BeAvailable())
129+
Eventually(container).Should(Serve(ContainSubstring(fmt.Sprintf("/layers/%s/bundler/bin/bundler", strings.ReplaceAll(settings.Buildpack.ID, "/", "_")))).OnPort(8080))
130+
Eventually(container).Should(Serve(MatchRegexp(`4\.\d+\.\d+ \(`)).OnPort(8080))
131+
132+
Expect(logs).To(ContainLines(
133+
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
134+
" Resolving Bundler version",
135+
" Candidate version sources (in priority order):",
136+
" Gemfile.lock -> \"4.*.*\"",
137+
" <unknown> -> \"\"",
138+
))
139+
Expect(logs).To(ContainLines(
140+
MatchRegexp(` Selected bundler version \(using Gemfile\.lock\): 4\.\d+\.\d+`),
141+
))
142+
Expect(logs).To(ContainLines(
143+
" Executing build process",
144+
MatchRegexp(` Installing Bundler 4\.\d+\.\d+`),
93145
MatchRegexp(` Completed in \d+\.?\d*`),
94146
))
95147
Expect(logs).To(ContainLines(

integration/logging_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func testLogging(t *testing.T, context spec.G, it spec.S) {
123123
" Executing build process",
124124
MatchRegexp(` Installing Bundler 2\.\d+\.\d+`),
125125
fmt.Sprintf(" Installation path: /layers/%s/bundler", strings.ReplaceAll(settings.Buildpack.ID, "/", "_")),
126-
MatchRegexp(` Source URI\: https\:\/\/\S+\/bundler\/bundler-ubuntu-2\.\d+\.\d+(-\w+)*\.tgz`),
126+
MatchRegexp(` Source URI\: https\:\/\/\S+\/bundler\/bundler-[a-z0-9-]+-2\.\d+\.\d+(-\w+)*\.tgz`),
127127
MatchRegexp(` Completed in \d+\.?\d*`),
128128
))
129129
Expect(logs).To(ContainLines(

0 commit comments

Comments
 (0)