From badb2de3f2dce142fad48fa4a1027be80c8a3fb1 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Fri, 8 Oct 2021 11:29:23 -0400 Subject: [PATCH 1/8] Initial skeleton of files Signed-off-by: Natalie Arellano --- extensions/curl/bin/build | 36 +++++++++++++++++++++++++++++++++ extensions/curl/bin/detect | 5 +++++ extensions/curl/extension.toml | 8 ++++++++ extensions/rebasable/Dockerfile | 8 ++++++++ stacks/bionic/run/Dockerfile | 5 ++++- 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 extensions/curl/bin/build create mode 100644 extensions/curl/bin/detect create mode 100644 extensions/curl/extension.toml create mode 100644 extensions/rebasable/Dockerfile diff --git a/extensions/curl/bin/build b/extensions/curl/bin/build new file mode 100644 index 00000000..eea5caf0 --- /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/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 From a75609371ce41445f59c453484b08b818a870e15 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Fri, 8 Oct 2021 11:42:11 -0400 Subject: [PATCH 2/8] Update builder.toml Signed-off-by: Natalie Arellano --- builders/bionic/builder.toml | 18 ++++++++++++++++++ extensions/rebasable/extension.toml | 8 ++++++++ 2 files changed, 26 insertions(+) create mode 100644 extensions/rebasable/extension.toml 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/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." From 5712ae92d9a7a8e695ec11b7deaeb26932970dd4 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Wed, 15 Dec 2021 12:30:27 -0500 Subject: [PATCH 3/8] Changes to run with lifecycle poc Signed-off-by: Natalie Arellano --- cnb/ext/samples_curl/0.0.1/bin/build | 36 +++++++++++++++++++ cnb/ext/samples_curl/0.0.1/bin/detect | 5 +++ cnb/ext/samples_curl/0.0.1/extension.toml | 8 +++++ cnb/ext/samples_rebasable/0.0.1/Dockerfile | 8 +++++ .../samples_rebasable/0.0.1/extension.toml | 8 +++++ extensions/curl/bin/build | 6 ++-- layers/empty-plan.toml | 0 layers/group.toml | 11 ++++++ 8 files changed, 79 insertions(+), 3 deletions(-) create mode 100755 cnb/ext/samples_curl/0.0.1/bin/build create mode 100755 cnb/ext/samples_curl/0.0.1/bin/detect create mode 100644 cnb/ext/samples_curl/0.0.1/extension.toml create mode 100644 cnb/ext/samples_rebasable/0.0.1/Dockerfile create mode 100644 cnb/ext/samples_rebasable/0.0.1/extension.toml create mode 100644 layers/empty-plan.toml create mode 100644 layers/group.toml 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..9a50b6dd --- /dev/null +++ b/cnb/ext/samples_rebasable/0.0.1/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/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 index eea5caf0..b15e9af5 100644 --- a/extensions/curl/bin/build +++ b/extensions/curl/bin/build @@ -10,13 +10,13 @@ plan_path=$3 # Create Dockerfile cat << EOF > ${output_dir}/Dockerfile ARG base_image -FROM ${base_image} +FROM \${base_image} ARG some_arg -RUN echo ${some_arg} > /opt/arg.txt +RUN echo \${some_arg} > /opt/arg.txt ARG build_id=0 -RUN echo ${build_id} +RUN echo \${build_id} RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* EOF diff --git a/layers/empty-plan.toml b/layers/empty-plan.toml new file mode 100644 index 00000000..e69de29b diff --git a/layers/group.toml b/layers/group.toml new file mode 100644 index 00000000..3b75ffae --- /dev/null +++ b/layers/group.toml @@ -0,0 +1,11 @@ +[[group]] +id = "samples/curl" +version = "0.0.1" +api = "0.7" +extension = true + +[[group]] +id = "samples/rebasable" +version = "0.0.1" +api = "0.7" +extension = true From 8acb189e8f475af1ac8b3ce4b29701eb3a76e379 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Wed, 15 Dec 2021 12:48:06 -0500 Subject: [PATCH 4/8] Add order Signed-off-by: Natalie Arellano --- layers/{group.toml => order.toml} | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) rename layers/{group.toml => order.toml} (61%) diff --git a/layers/group.toml b/layers/order.toml similarity index 61% rename from layers/group.toml rename to layers/order.toml index 3b75ffae..44617104 100644 --- a/layers/group.toml +++ b/layers/order.toml @@ -1,11 +1,12 @@ -[[group]] +[[order]] +[[order.group]] id = "samples/curl" version = "0.0.1" -api = "0.7" extension = true +optional = true -[[group]] +[[order.group]] id = "samples/rebasable" version = "0.0.1" -api = "0.7" extension = true +optional = true \ No newline at end of file From 73b189321e3fa1b801b6a606282c09070fddea29 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Wed, 15 Dec 2021 14:58:49 -0500 Subject: [PATCH 5/8] Update .gitignore Signed-off-by: Natalie Arellano --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 91f04c02..e0bca80e 100755 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,8 @@ HELP.md .idea out/ .tmp/ + +layers/config/ +layers/group.toml +layers/plan.toml +layers/samples_curl/ \ No newline at end of file From 64ac5d3a63b5d6eeb2fcba7a29c116446cc8c6b9 Mon Sep 17 00:00:00 2001 From: Anthony Emengo Date: Thu, 20 Jan 2022 12:29:50 -0500 Subject: [PATCH 6/8] wip Signed-off-by: Anthony Emengo --- .../samples_use_curl/0.0.1/bin/build | 8 +++ .../samples_use_curl/0.0.1/bin/detect | 3 ++ .../samples_use_curl/0.0.1/buildpack.toml | 8 +++ cnb/ext/samples_rebasable/0.0.1/Dockerfile | 3 +- layers/order.toml | 8 ++- something.sh | 49 +++++++++++++++++++ 6 files changed, 77 insertions(+), 2 deletions(-) create mode 100755 cnb/buildpacks/samples_use_curl/0.0.1/bin/build create mode 100755 cnb/buildpacks/samples_use_curl/0.0.1/bin/detect create mode 100644 cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml create mode 100755 something.sh 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..7d9680b6 --- /dev/null +++ b/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml @@ -0,0 +1,8 @@ +api = "0.7" + +[buildpack] +id = "samples/use_curl" +version = "0.0.1" + +[[stacks]] +id = "*" \ No newline at end of file diff --git a/cnb/ext/samples_rebasable/0.0.1/Dockerfile b/cnb/ext/samples_rebasable/0.0.1/Dockerfile index 9a50b6dd..7f7930ca 100644 --- a/cnb/ext/samples_rebasable/0.0.1/Dockerfile +++ b/cnb/ext/samples_rebasable/0.0.1/Dockerfile @@ -5,4 +5,5 @@ 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 +RUN echo +# RUN curl -L https://example.com/mypkg-install | sh # installs to /opt diff --git a/layers/order.toml b/layers/order.toml index 44617104..0d8df09d 100644 --- a/layers/order.toml +++ b/layers/order.toml @@ -9,4 +9,10 @@ optional = true id = "samples/rebasable" version = "0.0.1" extension = true -optional = true \ No newline at end of file +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/something.sh b/something.sh new file mode 100755 index 00000000..25b60e76 --- /dev/null +++ b/something.sh @@ -0,0 +1,49 @@ +cd $LIFECYCLE_REPO_PATH + +docker image rm test-builder --force + +make clean build-linux-amd64 + +cd out/linux-amd64 + +cat << EOF > Dockerfile +FROM cnbs/sample-builder:bionic +COPY ./lifecycle /cnb/lifecycle +EOF + +docker build -t test-builder . + +cd $SAMPLES_REPO_PATH + +rm -rf $SAMPLES_REPO_PATH/kaniko +mkdir -p $SAMPLES_REPO_PATH/kaniko +rm -rf $SAMPLES_REPO_PATH/layers/kaniko +mkdir -p $SAMPLES_REPO_PATH/layers/kaniko + +docker run \ + -v $PWD/workspace/:/workspace \ + -v $PWD/layers/:/layers \ + -v $PWD/platform/:/platform \ + -v $PWD/cnb/ext/:/cnb/ext \ + test-builder \ + /cnb/lifecycle/detector -order /layers/order.toml -log-level debug + +docker run \ + -v $PWD/workspace/:/workspace \ + -v $PWD/layers/:/layers \ + -v $PWD/platform/:/platform \ + -v $PWD/cnb/ext/:/cnb/ext \ + test-builder \ + /cnb/lifecycle/builder -use-extensions -log-level debug + +docker run \ + -v $PWD/workspace/:/workspace \ + -v $PWD/kaniko/:/kaniko \ + -v $PWD/layers/:/layers \ + -v $PWD/platform/:/platform \ + -v $PWD/cnb/ext/:/cnb/ext \ + -u root \ + test-builder \ + /cnb/lifecycle/extender kaniko build ubuntu:bionic + # args: + From 81200848eb648d64b744d493f334a61161d74d98 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Thu, 20 Jan 2022 14:33:31 -0500 Subject: [PATCH 7/8] Update .gitignore Signed-off-by: Natalie Arellano --- .gitignore | 4 +++- something.sh | 49 ------------------------------------------------- 2 files changed, 3 insertions(+), 50 deletions(-) delete mode 100755 something.sh diff --git a/.gitignore b/.gitignore index e0bca80e..1a2fc1f3 100755 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,9 @@ HELP.md out/ .tmp/ +kaniko/ layers/config/ layers/group.toml +layers/kaniko/ layers/plan.toml -layers/samples_curl/ \ No newline at end of file +layers/samples_curl/ diff --git a/something.sh b/something.sh deleted file mode 100755 index 25b60e76..00000000 --- a/something.sh +++ /dev/null @@ -1,49 +0,0 @@ -cd $LIFECYCLE_REPO_PATH - -docker image rm test-builder --force - -make clean build-linux-amd64 - -cd out/linux-amd64 - -cat << EOF > Dockerfile -FROM cnbs/sample-builder:bionic -COPY ./lifecycle /cnb/lifecycle -EOF - -docker build -t test-builder . - -cd $SAMPLES_REPO_PATH - -rm -rf $SAMPLES_REPO_PATH/kaniko -mkdir -p $SAMPLES_REPO_PATH/kaniko -rm -rf $SAMPLES_REPO_PATH/layers/kaniko -mkdir -p $SAMPLES_REPO_PATH/layers/kaniko - -docker run \ - -v $PWD/workspace/:/workspace \ - -v $PWD/layers/:/layers \ - -v $PWD/platform/:/platform \ - -v $PWD/cnb/ext/:/cnb/ext \ - test-builder \ - /cnb/lifecycle/detector -order /layers/order.toml -log-level debug - -docker run \ - -v $PWD/workspace/:/workspace \ - -v $PWD/layers/:/layers \ - -v $PWD/platform/:/platform \ - -v $PWD/cnb/ext/:/cnb/ext \ - test-builder \ - /cnb/lifecycle/builder -use-extensions -log-level debug - -docker run \ - -v $PWD/workspace/:/workspace \ - -v $PWD/kaniko/:/kaniko \ - -v $PWD/layers/:/layers \ - -v $PWD/platform/:/platform \ - -v $PWD/cnb/ext/:/cnb/ext \ - -u root \ - test-builder \ - /cnb/lifecycle/extender kaniko build ubuntu:bionic - # args: - From 6b2775c339b52834b78ac9170ab095a3a4e0d518 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Thu, 20 Jan 2022 14:50:59 -0500 Subject: [PATCH 8/8] Add buildpack name Signed-off-by: Natalie Arellano --- cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml b/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml index 7d9680b6..12b5c027 100644 --- a/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml +++ b/cnb/buildpacks/samples_use_curl/0.0.1/buildpack.toml @@ -3,6 +3,7 @@ api = "0.7" [buildpack] id = "samples/use_curl" version = "0.0.1" +name = "Buildpack using curl" [[stacks]] id = "*" \ No newline at end of file