Merge pull request 'feat: only build packages that dont exist' (#3) from neoloc/skip_built into master
All checks were successful
Deploy / build (push) Successful in 1m8s
All checks were successful
Deploy / build (push) Successful in 1m8s
Reviewed-on: https://git.query.consul/unkin/rpmbuilder/pulls/3
This commit is contained in:
commit
4418513fd1
41
Makefile
41
Makefile
@ -1,42 +1,53 @@
|
||||
# Variables
|
||||
ROOT_DIR := $(PWD)
|
||||
RPMS_DIR := $(ROOT_DIR)/rpms
|
||||
REPO_OPTIONS := --disablerepo=* --enablerepo=unkin
|
||||
|
||||
# Automatically find all package/version directories
|
||||
PACKAGES := $(shell find $(RPMS_DIR) -mindepth 2 -maxdepth 2 -type d | sed "s|$(RPMS_DIR)/||")
|
||||
|
||||
# Default target to build all packages and versions
|
||||
.PHONY: all list build buildall clean
|
||||
all: $(PACKAGES)
|
||||
.PHONY: all list cache build clean
|
||||
all: cache $(PACKAGES)
|
||||
|
||||
list:
|
||||
@echo "$(PACKAGES)"
|
||||
|
||||
cache:
|
||||
echo "Refreshing DNF cache..." && \
|
||||
dnf clean all && \
|
||||
dnf makecache
|
||||
|
||||
# Build specific package/version
|
||||
.PHONY: $(PACKAGES)
|
||||
$(PACKAGES):
|
||||
@PACKAGE_NAME=$(shell echo $(@) | cut -d/ -f1) && \
|
||||
PACKAGE_VERSION=$(shell echo $(@) | cut -d/ -f2) && \
|
||||
echo "Building RPM for $$PACKAGE_NAME version $$PACKAGE_VERSION" && \
|
||||
echo "Starting build $$PACKAGE_NAME/$$PACKAGE_VERSION" && \
|
||||
$(MAKE) build PACKAGE_NAME=$$PACKAGE_NAME PACKAGE_VERSION=$$PACKAGE_VERSION
|
||||
|
||||
# Build target
|
||||
build:
|
||||
@mkdir -p $(ROOT_DIR)/dist/$(PACKAGE_NAME)/
|
||||
@echo "Preparing to build $(PACKAGE_NAME) version $(PACKAGE_VERSION)"
|
||||
@cd $(RPMS_DIR)/$(PACKAGE_NAME) && \
|
||||
export PACKAGE_RELEASE=$$(cat $(PACKAGE_VERSION)/release) && \
|
||||
echo "Using PACKAGE_RELEASE=$${PACKAGE_RELEASE}" && \
|
||||
docker build \
|
||||
--build-arg PACKAGE_VERSION=$(PACKAGE_VERSION) \
|
||||
--build-arg PACKAGE_RELEASE=$${PACKAGE_RELEASE} \
|
||||
-t $$(echo $(PACKAGE_NAME)-builder \
|
||||
| tr '[:upper:]' '[:lower:]') . && \
|
||||
docker create --name $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder \
|
||||
$$(echo $(PACKAGE_NAME)-builder | tr '[:upper:]' '[:lower:]') && \
|
||||
docker start -a $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder && \
|
||||
docker cp $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder:/app/dist/. $(ROOT_DIR)/dist/$(PACKAGE_NAME)/ && \
|
||||
docker rm $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder
|
||||
export PACKAGE_FULL_NAME=$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$$PACKAGE_RELEASE && \
|
||||
echo "Checking repos for $$PACKAGE_FULL_NAME" && \
|
||||
if dnf info $$PACKAGE_FULL_NAME $(REPO_OPTIONS) > /dev/null 2>&1; then \
|
||||
echo "Skipping build for $(PACKAGE_NAME) version $(PACKAGE_VERSION) (already exists in the repository)"; \
|
||||
else \
|
||||
echo "Building RPM for $(PACKAGE_NAME) version $(PACKAGE_VERSION)"; \
|
||||
docker build \
|
||||
--build-arg PACKAGE_VERSION=$(PACKAGE_VERSION) \
|
||||
--build-arg PACKAGE_RELEASE=$${PACKAGE_RELEASE} \
|
||||
-t $$(echo $(PACKAGE_NAME)-builder \
|
||||
| tr '[:upper:]' '[:lower:]') . && \
|
||||
docker create --name $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder \
|
||||
$$(echo $(PACKAGE_NAME)-builder | tr '[:upper:]' '[:lower:]') && \
|
||||
docker start -a $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder && \
|
||||
docker cp $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder:/app/dist/. $(ROOT_DIR)/dist/$(PACKAGE_NAME)/ && \
|
||||
docker rm $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder; \
|
||||
fi
|
||||
|
||||
# Clean target
|
||||
clean:
|
||||
|
||||
1
rpms/terragrunt/0.69.3/release
Normal file
1
rpms/terragrunt/0.69.3/release
Normal file
@ -0,0 +1 @@
|
||||
1
|
||||
Loading…
Reference in New Issue
Block a user