Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions buildpack.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ api = "0.8"
id = "paketo-buildpacks/pipenv-install"
version = "0.7.44"

[[order.group]]
id = "paketo-buildpacks/tini"
optional = true
version = "0.4.8"

[[order.group]]
id = "paketo-buildpacks/python-start"
version = "0.18.0"
Expand Down Expand Up @@ -82,6 +87,11 @@ api = "0.8"
id = "paketo-buildpacks/pip-install"
version = "0.7.45"

[[order.group]]
id = "paketo-buildpacks/tini"
optional = true
version = "0.4.8"

[[order.group]]
id = "paketo-buildpacks/python-start"
version = "0.18.0"
Expand Down Expand Up @@ -121,6 +131,11 @@ api = "0.8"
id = "paketo-buildpacks/conda-env-update"
version = "0.8.42"

[[order.group]]
id = "paketo-buildpacks/tini"
optional = true
version = "0.4.8"

[[order.group]]
id = "paketo-buildpacks/python-start"
version = "0.18.0"
Expand Down Expand Up @@ -215,6 +230,11 @@ api = "0.8"
id = "paketo-buildpacks/poetry-install"
version = "0.6.50"

[[order.group]]
id = "paketo-buildpacks/tini"
optional = true
version = "0.4.8"

[[order.group]]
id = "paketo-buildpacks/python-start"
version = "0.18.0"
Expand Down Expand Up @@ -302,6 +322,11 @@ api = "0.8"
id = "paketo-buildpacks/python-package-managers-run"
version = "0.6.6"

[[order.group]]
id = "paketo-buildpacks/tini"
optional = true
version = "0.4.8"

[[order.group]]
id = "paketo-buildpacks/python-start"
version = "0.18.0"
Expand Down Expand Up @@ -337,6 +362,11 @@ api = "0.8"
id = "paketo-buildpacks/cpython"
version = "1.18.45"

[[order.group]]
id = "paketo-buildpacks/tini"
optional = true
version = "0.4.8"

[[order.group]]
id = "paketo-buildpacks/python-start"
version = "0.18.0"
Expand Down
52 changes: 52 additions & 0 deletions integration/conda_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,58 @@ func testConda(t *testing.T, context spec.G, it spec.S) {
Expect(image.Labels["some-label"]).To(Equal("some-value"))
})

it("creates a working OCI image using tini", func() {
var err error
source, err = occam.Source(filepath.Join("testdata", "conda"))
Expect(err).NotTo(HaveOccurred())

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithBuildpacks(pythonBuildpack).
WithPullPolicy("never").
WithEnv(map[string]string{
"BPE_SOME_VARIABLE": "some-value",
"BP_IMAGE_LABELS": "some-label=some-value",
"BP_LIVE_RELOAD_ENABLED": "true",
"BP_LAUNCH_WITH_TINI": "true",
}).
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(BeAvailable())

response, err := http.Get(fmt.Sprintf("http://localhost:%s", container.HostPort("8080")))
Expect(err).NotTo(HaveOccurred())
defer func() { Expect(response.Body.Close()).ToNot(HaveOccurred()) }()

Expect(response.StatusCode).To(Equal(http.StatusOK))

content, err := io.ReadAll(response.Body)
Expect(err).NotTo(HaveOccurred())
Expect(string(content)).To(ContainSubstring("Hello, world!"))

Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CA Certificates")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Miniconda")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Conda Env Update")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Tini")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Python Start")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Procfile")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Environment Variables")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Image Labels")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Watchexec")))

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"))
})

context("when using CA certificates", func() {
var client *http.Client

Expand Down
53 changes: 53 additions & 0 deletions integration/pip_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,59 @@ func testPip(t *testing.T, context spec.G, it spec.S) {
Expect(image.Labels["some-label"]).To(Equal("some-value"))
})

it("creates a working OCI image using tini", func() {
var err error
source, err = occam.Source(filepath.Join("testdata", "pip"))
Expect(err).NotTo(HaveOccurred())

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithBuildpacks(pythonBuildpack).
WithPullPolicy("never").
WithEnv(map[string]string{
"BPE_SOME_VARIABLE": "some-value",
"BP_IMAGE_LABELS": "some-label=some-value",
"BP_LIVE_RELOAD_ENABLED": "true",
"BP_LAUNCH_WITH_TINI": "true",
}).
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(BeAvailable())

response, err := http.Get(fmt.Sprintf("http://localhost:%s", container.HostPort("8080")))
Expect(err).NotTo(HaveOccurred())
defer func() { Expect(response.Body.Close()).ToNot(HaveOccurred()) }()

Expect(response.StatusCode).To(Equal(http.StatusOK))

content, err := io.ReadAll(response.Body)
Expect(err).NotTo(HaveOccurred())
Expect(string(content)).To(ContainSubstring("Hello, World with pip!"))

Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CA Certificates")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CPython")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Pip")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Pip Install")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Tini")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Python Start")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Procfile")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Environment Variables")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Image Labels")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Watchexec")))

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"))
})

context("when using CA certificates", func() {
var client *http.Client

Expand Down
54 changes: 54 additions & 0 deletions integration/pipenv_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,60 @@ func testPipenv(t *testing.T, context spec.G, it spec.S) {
Expect(image.Labels["some-label"]).To(Equal("some-value"))
})

it("creates a working OCI image using tini", func() {
var err error
source, err = occam.Source(filepath.Join("testdata", "pipenv"))
Expect(err).NotTo(HaveOccurred())

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithBuildpacks(pythonBuildpack).
WithPullPolicy("never").
WithEnv(map[string]string{
"BPE_SOME_VARIABLE": "some-value",
"BP_IMAGE_LABELS": "some-label=some-value",
"BP_LIVE_RELOAD_ENABLED": "true",
"BP_LAUNCH_WITH_TINI": "true",
}).
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(BeAvailable())

response, err := http.Get(fmt.Sprintf("http://localhost:%s", container.HostPort("8080")))
Expect(err).NotTo(HaveOccurred())
defer func() { Expect(response.Body.Close()).ToNot(HaveOccurred()) }()

Expect(response.StatusCode).To(Equal(http.StatusOK))

content, err := io.ReadAll(response.Body)
Expect(err).NotTo(HaveOccurred())
Expect(string(content)).To(ContainSubstring("Hello, World with pipenv!"))

Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CA Certificates")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CPython")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Pip")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Pipenv")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Pipenv Install")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Tini")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Python Start")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Procfile")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Environment Variables")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Image Labels")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Watchexec")))

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

context("when using CA certificates", func() {
var client *http.Client

Expand Down
52 changes: 52 additions & 0 deletions integration/pixi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,58 @@ func testPixi(t *testing.T, context spec.G, it spec.S) {
Expect(image.Labels["some-label"]).To(Equal("some-value"))
})

it("creates a working OCI image using tini", func() {
var err error
source, err = occam.Source(filepath.Join("testdata", "pixi"))
Expect(err).NotTo(HaveOccurred())

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithBuildpacks(pythonBuildpack).
WithPullPolicy("never").
WithEnv(map[string]string{
"BPE_SOME_VARIABLE": "some-value",
"BP_IMAGE_LABELS": "some-label=some-value",
"BP_LIVE_RELOAD_ENABLED": "true",
"BP_LAUNCH_WITH_TINI": "true",
}).
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(BeAvailable())

response, err := http.Get(fmt.Sprintf("http://localhost:%s", container.HostPort("8080")))
Expect(err).NotTo(HaveOccurred())
defer func() { Expect(response.Body.Close()).ToNot(HaveOccurred()) }()

Expect(response.StatusCode).To(Equal(http.StatusOK))

content, err := io.ReadAll(response.Body)
Expect(err).NotTo(HaveOccurred())
Expect(string(content)).To(ContainSubstring("Hello, world!"))

Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CA Certificates")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack to install python package managers")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for all python package managers")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Tini")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Python Start")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Procfile")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Environment Variables")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Image Labels")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Watchexec")))

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"))
})

context("when using CA certificates", func() {
var client *http.Client

Expand Down
54 changes: 54 additions & 0 deletions integration/poetry_dep_only_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,5 +102,59 @@ func testPoetryDepOnly(t *testing.T, context spec.G, it spec.S) {
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"))
})

it("creates a working OCI image using tini", func() {
var err error
source, err = occam.Source(filepath.Join("testdata", "poetry-dep-only"))
Expect(err).NotTo(HaveOccurred())

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithBuildpacks(pythonBuildpack).
WithPullPolicy("never").
WithEnv(map[string]string{
"BPE_SOME_VARIABLE": "some-value",
"BP_IMAGE_LABELS": "some-label=some-value",
"BP_LIVE_RELOAD_ENABLED": "true",
"BP_LAUNCH_WITH_TINI": "true",
}).
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(BeAvailable())

response, err := http.Get(fmt.Sprintf("http://localhost:%s", container.HostPort("8080")))
Expect(err).NotTo(HaveOccurred())
defer func() { Expect(response.Body.Close()).ToNot(HaveOccurred()) }()

Expect(response.StatusCode).To(Equal(http.StatusOK))

content, err := io.ReadAll(response.Body)
Expect(err).NotTo(HaveOccurred())
Expect(string(content)).To(ContainSubstring("Hello, World!"))

Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CA Certificates")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Watchexec")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for CPython")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Pip")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Poetry")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Poetry Install")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Tini")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Python Start")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Procfile")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Environment Variables")))
Expect(logs).To(ContainLines(ContainSubstring("Buildpack for Image Labels")))

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