591a6a2e7a
ci/woodpecker/pr/build-almalinux9/8 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/26 Pipeline was successful
ci/woodpecker/pr/build-fedora42/1 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/23 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/18 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/27 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/16 Pipeline was successful
ci/woodpecker/pr/build-fedora42/2 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/12 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/19 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/10 Pipeline was successful
ci/woodpecker/pr/build-fedora42/6 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/14 Pipeline was successful
ci/woodpecker/pr/build-fedora43/4 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/11 Pipeline was successful
ci/woodpecker/pr/build-fedora43/5 Pipeline was successful
ci/woodpecker/pr/build-fedora42/4 Pipeline was successful
ci/woodpecker/pr/build-fedora42/8 Pipeline was successful
ci/woodpecker/pr/build-fedora42/3 Pipeline was successful
ci/woodpecker/pr/build-fedora43/2 Pipeline was successful
ci/woodpecker/pr/build-fedora44/5 Pipeline was successful
ci/woodpecker/pr/build-fedora43/7 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/25 Pipeline was successful
ci/woodpecker/pr/build-fedora44/8 Pipeline was successful
ci/woodpecker/pr/build-fedora43/3 Pipeline failed
ci/woodpecker/pr/build-fedora43/1 Pipeline was successful
ci/woodpecker/pr/build-fedora42/7 Pipeline was successful
ci/woodpecker/pr/build-fedora43/8 Pipeline was successful
ci/woodpecker/pr/build-fedora44/1 Pipeline was successful
ci/woodpecker/pr/build-fedora43/6 Pipeline was successful
ci/woodpecker/pr/build-fedora44/6 Pipeline was successful
ci/woodpecker/pr/build-fedora44/4 Pipeline was successful
ci/woodpecker/pr/build-fedora44/3 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/20 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/22 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/11 Pipeline was successful
ci/woodpecker/pr/build-fedora42/5 Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build-fedora44/7 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/17 Pipeline was successful
ci/woodpecker/pr/build-fedora44/2 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/13 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/6 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/1 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/12 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/5 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/21 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/22 Pipeline failed
ci/woodpecker/pr/build-almalinux8/10 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/20 Pipeline failed
ci/woodpecker/pr/build-almalinux8/9 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/19 Pipeline failed
ci/woodpecker/pr/build-almalinux8/24 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/15 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/16 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/3 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/7 Pipeline failed
ci/woodpecker/pr/build-almalinux8/4 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/2 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/18 Pipeline failed
ci/woodpecker/pr/build-almalinux8/8 Pipeline failed
ci/woodpecker/pr/build-almalinux9/3 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/2 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/1 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/26 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/23 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/6 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/13 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/15 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/27 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/17 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/7 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/5 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/4 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/24 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/14 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/9 Pipeline was successful
ci/woodpecker/pr/build-almalinux8/25 Pipeline was successful
ci/woodpecker/pr/build-almalinux9/21 Pipeline was successful
Builds currently push to Gitea's RPM registry and run build-all in a single job. Publish instead to the artifactapi rpm-vendor local repos (real yum repos; repodata regenerates automatically) and give each vendor package its own job so failures are isolated and builds parallelise. Because builds no longer land in Gitea, the "skip already-built version" check now probes artifactapi. - tools/build: repoint check_package_exists from the Gitea packages API to the artifactapi rpm-vendor repo (GET the served Packages/<file>.rpm path). Add get_vendor_repo() (distro -> rpm-vendor-<suffix>) and get_rpm_arch() (amd64 -> x86_64), and carry arch on PackageInfo so the probed filename matches the built RPM. - .woodpecker: replace the per-distro build-all pipelines with per-distro matrix pipelines over PACKAGE, so each package builds in its own job. deploy-*.yaml (master push) build each package and PUT its RPM to the distro's rpm-vendor repo; build-*.yaml (pull_request) build as a check. - tools/gen-pipelines + `make pipelines`: generate the .woodpecker matrix pipelines from rpms/*/metadata.yaml (source of truth for target distros); regenerate after adding or removing packages.
73 lines
2.2 KiB
Makefile
73 lines
2.2 KiB
Makefile
# Variables
|
|
ROOT_DIR := $(PWD)
|
|
BUILD_TOOL := $(ROOT_DIR)/tools/build
|
|
DISTRO ?= almalinux/el9
|
|
|
|
# Authentication variables (optional)
|
|
# VAULT_ROLE_ID - Use AppRole authentication if set
|
|
# VAULT_ROLE - Kubernetes role for service account authentication (default: rpmbuilder)
|
|
|
|
# Automatically find all packages with metadata.yaml
|
|
PACKAGES := $(shell find $(ROOT_DIR)/rpms -mindepth 1 -maxdepth 1 -type d -exec test -f {}/metadata.yaml \; -print | xargs -n1 basename | sort)
|
|
|
|
# Default target to build all packages
|
|
.PHONY: all list build clean test pipelines
|
|
all: build-all
|
|
|
|
# Regenerate the per-distro Woodpecker matrix pipelines from rpms/*/metadata.yaml
|
|
pipelines:
|
|
@echo "Regenerating .woodpecker pipelines..."
|
|
$(ROOT_DIR)/tools/gen-pipelines
|
|
|
|
# List all available packages
|
|
list:
|
|
@echo "Available packages:"
|
|
@for package in $(PACKAGES); do \
|
|
echo " $$package"; \
|
|
done
|
|
|
|
# Build all packages using Python tool
|
|
build-all:
|
|
@echo "Building all packages using Python tooling for distro $(DISTRO)..."
|
|
$(BUILD_TOOL) build-all --distro $(DISTRO)
|
|
|
|
# Build all packages using native build (no Docker)
|
|
build-all-native:
|
|
@echo "Building all packages natively (no Docker) for distro $(DISTRO)..."
|
|
$(BUILD_TOOL) build-all --distro $(DISTRO) --native
|
|
|
|
# Build all packages using Buildah
|
|
build-all-buildah:
|
|
@echo "Building all packages using Buildah for distro $(DISTRO)..."
|
|
$(BUILD_TOOL) build-all --distro $(DISTRO) --buildah
|
|
|
|
# Build specific package using Python tool
|
|
.PHONY: $(PACKAGES)
|
|
$(PACKAGES):
|
|
@echo "Building package: $@ for distro $(DISTRO)"
|
|
$(BUILD_TOOL) build --distro $(DISTRO) $@
|
|
|
|
# Dry run - show what would be built without building
|
|
dry-run:
|
|
@echo "Dry run - showing what would be built for distro $(DISTRO):"
|
|
$(BUILD_TOOL) build-all --distro $(DISTRO) --dry-run
|
|
|
|
# Run unit tests
|
|
test:
|
|
@uv run --group dev pytest tests/ -q; rc=$$?; [ $$rc -eq 5 ] && exit 0 || exit $$rc
|
|
|
|
# Clean target
|
|
clean:
|
|
@echo "Cleaning build artifacts..."
|
|
rm -rf $(ROOT_DIR)/dist
|
|
|
|
# Update packages from GitHub releases
|
|
update:
|
|
@echo "Checking for package updates from GitHub releases..."
|
|
$(ROOT_DIR)/tools/update-gh --all
|
|
|
|
# Update specific package from GitHub
|
|
update-%:
|
|
@echo "Checking for updates for package: $*"
|
|
$(ROOT_DIR)/tools/update-gh --package $*
|