From b9b117512660214ee5c12c72a92058f7f18fc87d Mon Sep 17 00:00:00 2001 From: Mischa Taylor Date: Sun, 19 Nov 2023 18:54:37 -0500 Subject: [PATCH] Convert buildpack-deps to use a bake file --- .github/workflows/ci.yml | 1 + bin/test.sh | 13 ++++- buildpack-deps/ubuntu/jammy/Containerfile | 37 ++++++++++++- buildpack-deps/ubuntu/jammy/Polly.toml | 4 -- .../ubuntu/jammy/curl/.dockerignore | 3 -- .../ubuntu/jammy/curl/Containerfile | 25 --------- buildpack-deps/ubuntu/jammy/curl/Polly.toml | 4 -- .../ubuntu/jammy/curl/test/controls/focal.rb | 3 -- buildpack-deps/ubuntu/jammy/docker-bake.hcl | 54 +++++++++++++++++++ buildpack-deps/ubuntu/jammy/scm/.dockerignore | 3 -- buildpack-deps/ubuntu/jammy/scm/Containerfile | 13 ----- buildpack-deps/ubuntu/jammy/scm/Polly.toml | 4 -- .../ubuntu/jammy/scm/test/controls/focal.rb | 3 -- .../ubuntu/jammy/test/controls/focal.rb | 8 +++ 14 files changed, 111 insertions(+), 64 deletions(-) delete mode 100644 buildpack-deps/ubuntu/jammy/Polly.toml delete mode 100644 buildpack-deps/ubuntu/jammy/curl/.dockerignore delete mode 100644 buildpack-deps/ubuntu/jammy/curl/Containerfile delete mode 100644 buildpack-deps/ubuntu/jammy/curl/Polly.toml delete mode 100644 buildpack-deps/ubuntu/jammy/curl/test/controls/focal.rb create mode 100644 buildpack-deps/ubuntu/jammy/docker-bake.hcl delete mode 100644 buildpack-deps/ubuntu/jammy/scm/.dockerignore delete mode 100644 buildpack-deps/ubuntu/jammy/scm/Containerfile delete mode 100644 buildpack-deps/ubuntu/jammy/scm/Polly.toml delete mode 100644 buildpack-deps/ubuntu/jammy/scm/test/controls/focal.rb diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56b8609..75aa64b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,6 +36,7 @@ jobs: base: ${{ github.ref }} filters: | aws-cli: 'aws-cli/**' + buildpack-deps/ubuntu/jammy: 'buildpack-deps/ubuntu/jammy/**' fpm: 'fpm/**' meshcmd: 'meshcmd/**' python/3.8/slim-jammy: 'python/3.8/slim-jammy/**' diff --git a/bin/test.sh b/bin/test.sh index d7e5d0f..c3f8ac6 100755 --- a/bin/test.sh +++ b/bin/test.sh @@ -1,5 +1,6 @@ #!/bin/bash +set -x set -eu set -o pipefail @@ -8,7 +9,17 @@ CINC_AUDITOR_CONTAINER_IMAGE=docker.io/boxcutter/cinc-auditor:6.6.0 BIN_DIR="$(dirname -- "$(readlink -f "${BASH_SOURCE[0]}")")" CONTAINERFILE_DIR=$(pwd) CINC_PROFILE_DIR="${CONTAINERFILE_DIR}/test" -DEFAULT_TAG="$(docker buildx bake local --print 2>/dev/null | jq -r '.target.local.tags | first')" +# DEFAULT_TAG="$(docker buildx bake local --print 2>/dev/null | jq -r '.target.local.tags | first')" + +json_data="$(docker buildx bake local --print 2>/dev/null)" +# Check if .group.local.targets.default exists, and if it does, extract its value +exit_code=0 +result=$(echo "$json_data" | jq -e '.group.local.targets') || exit_code=$? +if [ $exit_code -eq 0 ]; then + DEFAULT_TAG=$(echo "$json_data" | jq -r '.target.default.tags | first') +else + DEFAULT_TAG=$(echo "$json_data" | jq -r '.target.local.tags | first') +fi usage() { cat < /dev/null; then \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + gnupg \ + dirmngr \ + ; \ + rm -rf /var/lib/apt/lists/*; \ + fi + +FROM curl as scm + +# procps is very common in build systems, and is a reasonably small package +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + mercurial \ + openssh-client \ + subversion \ + \ + procps \ + && rm -rf /var/lib/apt/lists/* + +FROM scm SHELL ["/bin/bash", "-o", "pipefail", "-c"] # hadolint ignore=SC2046 diff --git a/buildpack-deps/ubuntu/jammy/Polly.toml b/buildpack-deps/ubuntu/jammy/Polly.toml deleted file mode 100644 index 58dc57a..0000000 --- a/buildpack-deps/ubuntu/jammy/Polly.toml +++ /dev/null @@ -1,4 +0,0 @@ -[container_image] -name="buildpack-deps" -tags=["jammy", "22.04"] -readme="buildpack-deps/README.md" diff --git a/buildpack-deps/ubuntu/jammy/curl/.dockerignore b/buildpack-deps/ubuntu/jammy/curl/.dockerignore deleted file mode 100644 index 00343f2..0000000 --- a/buildpack-deps/ubuntu/jammy/curl/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -README.md -Polly.toml -test/ diff --git a/buildpack-deps/ubuntu/jammy/curl/Containerfile b/buildpack-deps/ubuntu/jammy/curl/Containerfile deleted file mode 100644 index 30ecf92..0000000 --- a/buildpack-deps/ubuntu/jammy/curl/Containerfile +++ /dev/null @@ -1,25 +0,0 @@ -# syntax=docker/dockerfile:1 -ARG CONTAINER_REGISTRY=docker.io -FROM $CONTAINER_REGISTRY/ubuntu:jammy-20230308 - -RUN set -eux; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - netbase \ - wget \ -# https://bugs.debian.org/929417 - tzdata \ - ; \ - rm -rf /var/lib/apt/lists/* - -RUN set -ex; \ - if ! command -v gpg > /dev/null; then \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - gnupg \ - dirmngr \ - ; \ - rm -rf /var/lib/apt/lists/*; \ - fi diff --git a/buildpack-deps/ubuntu/jammy/curl/Polly.toml b/buildpack-deps/ubuntu/jammy/curl/Polly.toml deleted file mode 100644 index 1284819..0000000 --- a/buildpack-deps/ubuntu/jammy/curl/Polly.toml +++ /dev/null @@ -1,4 +0,0 @@ -[container_image] -name = "buildpack-deps" -tags = ["jammy-curl", "22.04-curl"] -readme = "buildpack-deps/README.md" diff --git a/buildpack-deps/ubuntu/jammy/curl/test/controls/focal.rb b/buildpack-deps/ubuntu/jammy/curl/test/controls/focal.rb deleted file mode 100644 index 4354b33..0000000 --- a/buildpack-deps/ubuntu/jammy/curl/test/controls/focal.rb +++ /dev/null @@ -1,3 +0,0 @@ -describe command('curl') do - it { should exist } -end diff --git a/buildpack-deps/ubuntu/jammy/docker-bake.hcl b/buildpack-deps/ubuntu/jammy/docker-bake.hcl new file mode 100644 index 0000000..951b250 --- /dev/null +++ b/buildpack-deps/ubuntu/jammy/docker-bake.hcl @@ -0,0 +1,54 @@ +variable "IMAGE_NAME" { + default = "buildpack-deps" +} + +variable "CONTAINER_REGISTRY" { + default = "docker.io/boxcutter" +} + +# There's no darwin-based Docker, so if we're running on macOS, change the platform to linux +variable "LOCAL_PLATFORM" { + default = regex_replace("${BAKE_LOCAL_PLATFORM}", "^(darwin)", "linux") +} + +target "_common" { + dockerfile = "Containerfile" + labels = { + "org.opencontainers.image.source" = "https://github.com/polymathrobotics/oci" + "org.opencontainers.image.licenses" = "Apache-2.0" + "org.opencontainers.image.description" = "A collection of common build dependencies used for installing various modules." + "org.opencontainers.image.title" = "${IMAGE_NAME}" + } +} + +target "curl" { + inherits = ["_common"] + target = "curl" + tags = [ + "${CONTAINER_REGISTRY}/${IMAGE_NAME}:jammy-curl", + "${CONTAINER_REGISTRY}/${IMAGE_NAME}:22.04-curl" + ] +} + +target "scm" { + inherits = ["_common"] + target = "scm" + tags = [ + "${CONTAINER_REGISTRY}/${IMAGE_NAME}:jammy-scm", + "${CONTAINER_REGISTRY}/${IMAGE_NAME}:22.04-scm" + ] +} + +group "local" { + targets = ["curl", "scm", "default"] + platforms = ["${LOCAL_PLATFORM}"] +} + +target "default" { + inherits = ["_common"] + tags = [ + "${CONTAINER_REGISTRY}/${IMAGE_NAME}:jammy", + "${CONTAINER_REGISTRY}/${IMAGE_NAME}:22.04" + ] + platforms = ["linux/amd64", "linux/arm64/v8", "linux/arm/v7"] +} diff --git a/buildpack-deps/ubuntu/jammy/scm/.dockerignore b/buildpack-deps/ubuntu/jammy/scm/.dockerignore deleted file mode 100644 index 00343f2..0000000 --- a/buildpack-deps/ubuntu/jammy/scm/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -README.md -Polly.toml -test/ diff --git a/buildpack-deps/ubuntu/jammy/scm/Containerfile b/buildpack-deps/ubuntu/jammy/scm/Containerfile deleted file mode 100644 index 8b6ae23..0000000 --- a/buildpack-deps/ubuntu/jammy/scm/Containerfile +++ /dev/null @@ -1,13 +0,0 @@ -# syntax=docker/dockerfile:1 -ARG CONTAINER_REGISTRY=docker.io -FROM $CONTAINER_REGISTRY/boxcutter/buildpack-deps:jammy-curl - -# procps is very common in build systems, and is a reasonably small package -RUN apt-get update && apt-get install -y --no-install-recommends \ - git \ - mercurial \ - openssh-client \ - subversion \ - \ - procps \ - && rm -rf /var/lib/apt/lists/* diff --git a/buildpack-deps/ubuntu/jammy/scm/Polly.toml b/buildpack-deps/ubuntu/jammy/scm/Polly.toml deleted file mode 100644 index 3566839..0000000 --- a/buildpack-deps/ubuntu/jammy/scm/Polly.toml +++ /dev/null @@ -1,4 +0,0 @@ -[container_image] -name = "buildpack-deps" -tags = ["jammy-scm", "22.04-scm"] -readme = "buildpack-deps/README.md" diff --git a/buildpack-deps/ubuntu/jammy/scm/test/controls/focal.rb b/buildpack-deps/ubuntu/jammy/scm/test/controls/focal.rb deleted file mode 100644 index ad29732..0000000 --- a/buildpack-deps/ubuntu/jammy/scm/test/controls/focal.rb +++ /dev/null @@ -1,3 +0,0 @@ -describe command('git') do - it { should exist } -end diff --git a/buildpack-deps/ubuntu/jammy/test/controls/focal.rb b/buildpack-deps/ubuntu/jammy/test/controls/focal.rb index f2c6615..7c6c33b 100644 --- a/buildpack-deps/ubuntu/jammy/test/controls/focal.rb +++ b/buildpack-deps/ubuntu/jammy/test/controls/focal.rb @@ -1,3 +1,11 @@ +describe command('curl') do + it { should exist } +end + +describe command('git') do + it { should exist } +end + describe command('unzip') do it { should exist } end