From 49961f7a50ee57465dc8140c489f54b9457fc1f8 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Fri, 20 Dec 2024 20:10:08 +1100 Subject: [PATCH] feat: setup multirelease builds - manage almalinux 8 and 9 deployments --- Makefile | 54 +++++++++++++++++++----------- Dockerfile => release/8/Dockerfile | 0 release/9/Dockerfile | 19 +++++++++++ 3 files changed, 54 insertions(+), 19 deletions(-) rename Dockerfile => release/8/Dockerfile (100%) create mode 100644 release/9/Dockerfile diff --git a/Makefile b/Makefile index 18ed55a..8688711 100644 --- a/Makefile +++ b/Makefile @@ -1,33 +1,49 @@ -# Get the current Git commit hash +# Variables GIT_COMMIT := $(shell git rev-parse --short HEAD) - -# Get the current date in YYYYMMDD format DATE_TAG := $(shell date +%Y%m%d) - -# Set the Docker image name and repository information IMAGE_NAME := almalinux8-runnerdnd REGISTRY := git.query.consul OWNER := unkin -# Build the Docker image (without tags) -build: - docker build --network=host -t $(REGISTRY)/$(OWNER)/$(IMAGE_NAME) . +# List of releases (directories under ./release) +RELEASES := $(shell find release -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) -# Tag the Docker image with the Git commit hash, the date, and 'latest' -tag: - docker tag $(REGISTRY)/$(OWNER)/$(IMAGE_NAME) $(REGISTRY)/$(OWNER)/$(IMAGE_NAME):$(GIT_COMMIT) - docker tag $(REGISTRY)/$(OWNER)/$(IMAGE_NAME) $(REGISTRY)/$(OWNER)/$(IMAGE_NAME):$(DATE_TAG) - docker tag $(REGISTRY)/$(OWNER)/$(IMAGE_NAME) $(REGISTRY)/$(OWNER)/$(IMAGE_NAME):latest +# Build all releases +build: $(addprefix build-,$(RELEASES)) -# Push the Docker image to a repository with all tags -push: tag - docker push $(REGISTRY)/$(OWNER)/$(IMAGE_NAME):$(GIT_COMMIT) - docker push $(REGISTRY)/$(OWNER)/$(IMAGE_NAME):$(DATE_TAG) - docker push $(REGISTRY)/$(OWNER)/$(IMAGE_NAME):latest +# Tag all releases +tag: $(addprefix tag-,$(RELEASES)) -# Clean up dangling Docker images +# Push all releases +push: $(addprefix push-,$(RELEASES)) + +# Clean dangling images clean: docker image prune -f +# List all available releases +list: + @echo "Available releases:" + @echo $(RELEASES) | tr ' ' '\n' + +# Build a specific release +build-%: + $(info Building almalinux$*-runnerdnd Docker image) + docker build --network=host -t $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd -f release/$*/Dockerfile release/$* + +# Tag a specific release +tag-%: + $(info Tagging almalinux$*-runnerdnd Docker image) + docker tag $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd:$(GIT_COMMIT) + docker tag $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd:$(DATE_TAG) + docker tag $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd:latest + +# Push a specific release +push-%: tag-% + $(info Pushing almalinux$*-runnerdnd Docker image) + docker push $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd:$(GIT_COMMIT) + docker push $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd:$(DATE_TAG) + docker push $(REGISTRY)/$(OWNER)/almalinux$*-runnerdnd:latest + # Default target default: build diff --git a/Dockerfile b/release/8/Dockerfile similarity index 100% rename from Dockerfile rename to release/8/Dockerfile diff --git a/release/9/Dockerfile b/release/9/Dockerfile new file mode 100644 index 0000000..2ec31d7 --- /dev/null +++ b/release/9/Dockerfile @@ -0,0 +1,19 @@ +# Start with the AlmaLinux 9 base image +FROM git.query.consul/unkin/almalinux9:latest + +# Clean and update the repository cache +RUN dnf clean all && \ + dnf makecache + +# Install nodejs:20 for actions +RUN dnf module enable -y nodejs:20 && \ + dnf install -y nodejs + +# Install packages +RUN dnf install -y yum-utils && \ + yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \ + dnf install -y docker-ce-cli make bash git unzip + +# Cleanup +RUN dnf clean all && \ + rm -rf /var/cache/dnf