diff --git a/.gitignore b/.gitignore index 91f04c02..1a2fc1f3 100755 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,10 @@ HELP.md .idea out/ .tmp/ + +kaniko/ +layers/config/ +layers/group.toml +layers/kaniko/ +layers/plan.toml +layers/samples_curl/ diff --git a/builders/bionic/builder.toml b/builders/bionic/builder.toml index 4ad3c7df..cfe08878 100644 --- a/builders/bionic/builder.toml +++ b/builders/bionic/builder.toml @@ -1,4 +1,14 @@ # Buildpacks to include in builder +[[buildpacks]] +id = "samples/curl" +version = "0.0.1" +uri = "../../extensions/curl" + +[[buildpacks]] +id = "samples/rebasable" +version = "0.0.1" +uri = "../../extensions/rebasable" + [[buildpacks]] id = "samples/java-maven" version = "0.0.1" @@ -19,6 +29,14 @@ uri = "docker://cnbs/sample-package:hello-universe" # Order used for detection [[order]] +[[order.group]] +id = "samples/curl" +version = "0.0.1" + +[[order.group]] +id = "samples/rebasable" +version = "0.0.1" + [[order.group]] id = "samples/java-maven" version = "0.0.1" diff --git a/cnb/buildpacks/samples_use_curl/0.0.1/bin/build b/cnb/buildpacks/samples_use_curl/0.0.1/bin/build new file mode 100755 index 00000000..c2248a84 --- /dev/null +++ b/cnb/buildpacks/samples_use_curl/0.0.1/bin/build @@ -0,0 +1,8 @@ +#!/bin/bash + +echo "Running 'curl google.com' ......" +echo +echo +echo +echo +curl google.com diff --git a/cnb/buildpacks/samples_use_curl/0.0.1/bin/detect b/cnb/buildpacks/samples_use_curl/0.0.1/bin/detect new file mode 100755 index 00000000..8c3cbfc3 --- /dev/null +++ b/cnb/buildpacks/samples_use_curl/0.0.1/bin/detect @@ -0,0 +1,3 @@ +#!/bin/bash + +exit 0 diff --git a/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml b/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml new file mode 100644 index 00000000..12b5c027 --- /dev/null +++ b/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml @@ -0,0 +1,9 @@ +api = "0.7" + +[buildpack] +id = "samples/use_curl" +version = "0.0.1" +name = "Buildpack using curl" + +[[stacks]] +id = "*" \ No newline at end of file diff --git a/cnb/ext/samples_curl/0.0.1/bin/build b/cnb/ext/samples_curl/0.0.1/bin/build new file mode 100755 index 00000000..b15e9af5 --- /dev/null +++ b/cnb/ext/samples_curl/0.0.1/bin/build @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -eo pipefail + +# INPUT ARGUMENTS +platform_dir=$2 +env_dir=${platform_dir}/env +output_dir=$1 +plan_path=$3 + +# Create Dockerfile +cat << EOF > ${output_dir}/Dockerfile +ARG base_image +FROM \${base_image} + +ARG some_arg +RUN echo \${some_arg} > /opt/arg.txt + +ARG build_id=0 +RUN echo \${build_id} + +RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* +EOF + +# Create build.toml +cat << EOF > ${output_dir}/build.toml +[[args]] +name = "some_arg" +value = "some-arg-build-value" +EOF + +# Create launch.toml +cat << EOF > ${output_dir}/launch.toml +[[args]] +name = "some_arg" +value = "some-arg-launch-value" +EOF diff --git a/cnb/ext/samples_curl/0.0.1/bin/detect b/cnb/ext/samples_curl/0.0.1/bin/detect new file mode 100755 index 00000000..c715d81c --- /dev/null +++ b/cnb/ext/samples_curl/0.0.1/bin/detect @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -eo pipefail + +# Always detect +exit 0 diff --git a/cnb/ext/samples_curl/0.0.1/extension.toml b/cnb/ext/samples_curl/0.0.1/extension.toml new file mode 100644 index 00000000..9fc04cd7 --- /dev/null +++ b/cnb/ext/samples_curl/0.0.1/extension.toml @@ -0,0 +1,8 @@ +api = "0.7" + +[extension] +id = "samples/curl" +name = "Curl Extension" +version = "0.0.1" +homepage = "https://github.com/buildpacks/samples/tree/main/extensions/curl" +description = "This extension always installs the latest version of curl." diff --git a/cnb/ext/samples_rebasable/0.0.1/Dockerfile b/cnb/ext/samples_rebasable/0.0.1/Dockerfile new file mode 100644 index 00000000..7f7930ca --- /dev/null +++ b/cnb/ext/samples_rebasable/0.0.1/Dockerfile @@ -0,0 +1,9 @@ +ARG base_image +FROM ${base_image} +ARG build_id=0 + +LABEL io.buildpacks.rebasable=true + +# TODO: replace with real package +RUN echo +# RUN curl -L https://example.com/mypkg-install | sh # installs to /opt diff --git a/cnb/ext/samples_rebasable/0.0.1/extension.toml b/cnb/ext/samples_rebasable/0.0.1/extension.toml new file mode 100644 index 00000000..d99fdcbe --- /dev/null +++ b/cnb/ext/samples_rebasable/0.0.1/extension.toml @@ -0,0 +1,8 @@ +api = "0.7" + +[extension] +id = "samples/rebasable" +name = "Rebasable Extension" +version = "0.0.1" +homepage = "https://github.com/buildpacks/samples/tree/main/extensions/rebasable" +description = "This extension is rebasable because it creates a single directory under /opt." diff --git a/extensions/curl/bin/build b/extensions/curl/bin/build new file mode 100644 index 00000000..b15e9af5 --- /dev/null +++ b/extensions/curl/bin/build @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -eo pipefail + +# INPUT ARGUMENTS +platform_dir=$2 +env_dir=${platform_dir}/env +output_dir=$1 +plan_path=$3 + +# Create Dockerfile +cat << EOF > ${output_dir}/Dockerfile +ARG base_image +FROM \${base_image} + +ARG some_arg +RUN echo \${some_arg} > /opt/arg.txt + +ARG build_id=0 +RUN echo \${build_id} + +RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* +EOF + +# Create build.toml +cat << EOF > ${output_dir}/build.toml +[[args]] +name = "some_arg" +value = "some-arg-build-value" +EOF + +# Create launch.toml +cat << EOF > ${output_dir}/launch.toml +[[args]] +name = "some_arg" +value = "some-arg-launch-value" +EOF diff --git a/extensions/curl/bin/detect b/extensions/curl/bin/detect new file mode 100644 index 00000000..c715d81c --- /dev/null +++ b/extensions/curl/bin/detect @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -eo pipefail + +# Always detect +exit 0 diff --git a/extensions/curl/extension.toml b/extensions/curl/extension.toml new file mode 100644 index 00000000..9fc04cd7 --- /dev/null +++ b/extensions/curl/extension.toml @@ -0,0 +1,8 @@ +api = "0.7" + +[extension] +id = "samples/curl" +name = "Curl Extension" +version = "0.0.1" +homepage = "https://github.com/buildpacks/samples/tree/main/extensions/curl" +description = "This extension always installs the latest version of curl." diff --git a/extensions/rebasable/Dockerfile b/extensions/rebasable/Dockerfile new file mode 100644 index 00000000..9a50b6dd --- /dev/null +++ b/extensions/rebasable/Dockerfile @@ -0,0 +1,8 @@ +ARG base_image +FROM ${base_image} +ARG build_id=0 + +LABEL io.buildpacks.rebasable=true + +# TODO: replace with real package +RUN curl -L https://example.com/mypkg-install | sh # installs to /opt diff --git a/extensions/rebasable/extension.toml b/extensions/rebasable/extension.toml new file mode 100644 index 00000000..d99fdcbe --- /dev/null +++ b/extensions/rebasable/extension.toml @@ -0,0 +1,8 @@ +api = "0.7" + +[extension] +id = "samples/rebasable" +name = "Rebasable Extension" +version = "0.0.1" +homepage = "https://github.com/buildpacks/samples/tree/main/extensions/rebasable" +description = "This extension is rebasable because it creates a single directory under /opt." diff --git a/layers/empty-plan.toml b/layers/empty-plan.toml new file mode 100644 index 00000000..e69de29b diff --git a/layers/order.toml b/layers/order.toml new file mode 100644 index 00000000..0d8df09d --- /dev/null +++ b/layers/order.toml @@ -0,0 +1,18 @@ +[[order]] +[[order.group]] +id = "samples/curl" +version = "0.0.1" +extension = true +optional = true + +[[order.group]] +id = "samples/rebasable" +version = "0.0.1" +extension = true +optional = true + +[[order.group]] +id = "samples/use_curl" +version = "0.0.1" +extension = false +optional = false \ No newline at end of file diff --git a/stacks/bionic/run/Dockerfile b/stacks/bionic/run/Dockerfile index e3ff6ca8..8b32bb22 100755 --- a/stacks/bionic/run/Dockerfile +++ b/stacks/bionic/run/Dockerfile @@ -6,4 +6,7 @@ ARG stack_id LABEL io.buildpacks.stack.id="${stack_id}" # Set user and group (as declared in base image) -USER ${CNB_USER_ID}:${CNB_GROUP_ID} \ No newline at end of file +USER ${CNB_USER_ID}:${CNB_GROUP_ID} + +# TODO: add genpkgs +COPY genpkgs /cnb/image/genpkgs