diff --git a/Makefile b/Makefile index dfe41f6..a0a5f54 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,48 @@ -# 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-buildagent 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$*-buildagent Docker image) + docker build --network=host -t $(REGISTRY)/$(OWNER)/almalinux$*-buildagent -f release/$*/Dockerfile release/$* + +# Tag a specific release +tag-%: + $(info Tagging almalinux$*-buildagent Docker image) + docker tag $(REGISTRY)/$(OWNER)/almalinux$*-buildagent $(REGISTRY)/$(OWNER)/almalinux$*-buildagent:$(GIT_COMMIT) + docker tag $(REGISTRY)/$(OWNER)/almalinux$*-buildagent $(REGISTRY)/$(OWNER)/almalinux$*-buildagent:$(DATE_TAG) + docker tag $(REGISTRY)/$(OWNER)/almalinux$*-buildagent $(REGISTRY)/$(OWNER)/almalinux$*-buildagent:latest + +# Push a specific release +push-%: tag-% + $(info Pushing almalinux$*-buildagent Docker image) + docker push $(REGISTRY)/$(OWNER)/almalinux$*-buildagent:$(GIT_COMMIT) + docker push $(REGISTRY)/$(OWNER)/almalinux$*-buildagent:$(DATE_TAG) + docker push $(REGISTRY)/$(OWNER)/almalinux$*-buildagent: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..7e20ca7 --- /dev/null +++ b/release/9/Dockerfile @@ -0,0 +1,16 @@ +# Start with the AlmaLinux 9 base image +FROM git.query.consul/unkin/almalinux9:latest + +# Install nodejs:20 for actions +RUN dnf module enable -y nodejs:20 && \ + dnf install -y nodejs + +# Install build tools and dependencies for building RPMs +RUN dnf clean all && \ + dnf makecache && \ + dnf groupinstall -y 'Development Tools' && \ + dnf install -y make cmake gcc gcc-c++ rpm rpmdevtools wget tar gzip go nfpm + +# Cleanup +RUN dnf clean all && \ + rm -rf /var/cache/dnf