From 47d4354ad201e0a14fa6ee6fc83008c19d2cbe89 Mon Sep 17 00:00:00 2001 From: Dick Postma <108724920+DickPostma@users.noreply.github.com> Date: Thu, 27 Aug 2026 14:28:53 +0200 Subject: [PATCH 1/2] Initial circeci config --- .circleci/config.yaml | 134 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 .circleci/config.yaml diff --git a/.circleci/config.yaml b/.circleci/config.yaml new file mode 100644 index 0000000..7c2537c --- /dev/null +++ b/.circleci/config.yaml @@ -0,0 +1,134 @@ +version: 2.1 + +jobs: + + validate-images: + machine: + image: ubuntu-2204:current + + steps: + - checkout + + - run: + name: Validate changed image directories + command: | + set -e + + git fetch origin main + + CHANGED_DIRS=$( + git diff --name-only origin/main...HEAD \ + | cut -d/ -f1 \ + | sort -u + ) + + echo "Changed directories:" + echo "$CHANGED_DIRS" + + FOUND_IMAGE=false + + for dir in $CHANGED_DIRS + do + if [ -d "$dir" ] && \ + [ -f "$dir/Dockerfile" ] && \ + [ -f "$dir/Makefile" ] + then + + FOUND_IMAGE=true + + echo "" + echo "Validating $dir" + + grep -q "^name=" "$dir/Makefile" || \ + (echo "Missing name= in $dir/Makefile" && exit 1) + + grep -q "^tag=" "$dir/Makefile" || \ + (echo "Missing tag= in $dir/Makefile" && exit 1) + + IMAGE_NAME=$(grep "^name=" "$dir/Makefile" | cut -d= -f2) + IMAGE_TAG=$(grep "^tag=" "$dir/Makefile" | cut -d= -f2) + + echo "Found image: $IMAGE_NAME:$IMAGE_TAG" + + if docker manifest inspect "$IMAGE_NAME:$IMAGE_TAG" >/dev/null 2>&1 + then + echo "" + echo "ERROR:" + echo "Image already exists:" + echo "$IMAGE_NAME:$IMAGE_TAG" + exit 1 + fi + + fi + done + + if [ "$FOUND_IMAGE" = false ] + then + echo "No Docker images modified." + fi + + build-and-push-images: + machine: + image: ubuntu-2204:current + + steps: + - checkout + + - run: + name: Docker Login + command: | + echo "$DOCKER_PASSWORD" | docker login \ + -u "$DOCKER_USERNAME" \ + --password-stdin + + - run: + name: Detect and build changed images + command: | + set -e + + CHANGED_DIRS=$( + git diff --name-only HEAD~1 HEAD \ + | cut -d/ -f1 \ + | sort -u + ) + + echo "Changed directories:" + echo "$CHANGED_DIRS" + + for dir in $CHANGED_DIRS + do + if [ -d "$dir" ] && \ + [ -f "$dir/Dockerfile" ] && \ + [ -f "$dir/Makefile" ] + then + + echo "" + echo "Building $dir" + + ( + cd "$dir" + + make build-image + make push-image + ) + fi + done + +workflows: + version: 2 + + validate-pull-request: + jobs: + - validate-images: + filters: + branches: + ignore: + - main + + build-on-main: + jobs: + - build-and-push-images: + filters: + branches: + only: + - main From 420f3b902131a4344fda864a3951e382e20c3d13 Mon Sep 17 00:00:00 2001 From: Dick Postma <108724920+DickPostma@users.noreply.github.com> Date: Thu, 27 Aug 2026 14:51:31 +0200 Subject: [PATCH 2/2] Change filename --- .circleci/config.yml | 134 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..7c2537c --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,134 @@ +version: 2.1 + +jobs: + + validate-images: + machine: + image: ubuntu-2204:current + + steps: + - checkout + + - run: + name: Validate changed image directories + command: | + set -e + + git fetch origin main + + CHANGED_DIRS=$( + git diff --name-only origin/main...HEAD \ + | cut -d/ -f1 \ + | sort -u + ) + + echo "Changed directories:" + echo "$CHANGED_DIRS" + + FOUND_IMAGE=false + + for dir in $CHANGED_DIRS + do + if [ -d "$dir" ] && \ + [ -f "$dir/Dockerfile" ] && \ + [ -f "$dir/Makefile" ] + then + + FOUND_IMAGE=true + + echo "" + echo "Validating $dir" + + grep -q "^name=" "$dir/Makefile" || \ + (echo "Missing name= in $dir/Makefile" && exit 1) + + grep -q "^tag=" "$dir/Makefile" || \ + (echo "Missing tag= in $dir/Makefile" && exit 1) + + IMAGE_NAME=$(grep "^name=" "$dir/Makefile" | cut -d= -f2) + IMAGE_TAG=$(grep "^tag=" "$dir/Makefile" | cut -d= -f2) + + echo "Found image: $IMAGE_NAME:$IMAGE_TAG" + + if docker manifest inspect "$IMAGE_NAME:$IMAGE_TAG" >/dev/null 2>&1 + then + echo "" + echo "ERROR:" + echo "Image already exists:" + echo "$IMAGE_NAME:$IMAGE_TAG" + exit 1 + fi + + fi + done + + if [ "$FOUND_IMAGE" = false ] + then + echo "No Docker images modified." + fi + + build-and-push-images: + machine: + image: ubuntu-2204:current + + steps: + - checkout + + - run: + name: Docker Login + command: | + echo "$DOCKER_PASSWORD" | docker login \ + -u "$DOCKER_USERNAME" \ + --password-stdin + + - run: + name: Detect and build changed images + command: | + set -e + + CHANGED_DIRS=$( + git diff --name-only HEAD~1 HEAD \ + | cut -d/ -f1 \ + | sort -u + ) + + echo "Changed directories:" + echo "$CHANGED_DIRS" + + for dir in $CHANGED_DIRS + do + if [ -d "$dir" ] && \ + [ -f "$dir/Dockerfile" ] && \ + [ -f "$dir/Makefile" ] + then + + echo "" + echo "Building $dir" + + ( + cd "$dir" + + make build-image + make push-image + ) + fi + done + +workflows: + version: 2 + + validate-pull-request: + jobs: + - validate-images: + filters: + branches: + ignore: + - main + + build-on-main: + jobs: + - build-and-push-images: + filters: + branches: + only: + - main