26 Commits

Author SHA1 Message Date
unkinben b3ba980f9f refactor: modernise RPM builder with Python tooling
Build / build-8 (pull_request) Failing after 7s
Build / build-9 (pull_request) Failing after 8s
- Replace Makefile version/release file system with metadata.yaml only
- Add Python build automation (./tools/build) with Gitea API integration
- Add GitHub release updater (./tools/update-gh) for version management
- Centralize Dockerfiles into single parameterized Dockerfile
- Remove 54+ individual package Dockerfiles and version directories
- Update Makefile to use new Python tooling
- Add GITEA_API_TOKEN validation to prevent duplicate builds
- Support both explicit version/release args and metadata.yaml reading
2025-11-30 03:39:58 +11:00
unkinben 8d1aa34f0f Merge pull request 'feat: add tflint 0.59.1' (#69) from benvin/tflint into master
Deploy / deploy-8 (push) Successful in 4s
Deploy / deploy-9 (push) Successful in 5s
Reviewed-on: #69
2025-11-16 13:36:54 +11:00
unkinben 288dfe211b feat: add tflint 0.59.1
Build / build-8 (pull_request) Successful in 50s
Build / build-9 (pull_request) Successful in 2m0s
- builds the tflint package
2025-11-16 13:24:50 +11:00
unkinben 0133114aac Merge pull request 'feat: add default settings to stalwart' (#68) from benvin/stalwart_default_settings into master
Deploy / deploy-8 (push) Successful in 5s
Deploy / deploy-9 (push) Successful in 7s
Reviewed-on: #68
2025-10-19 20:54:15 +11:00
unkinben 6813eb84ce feat: add default settings to stalwart
Build / build-8 (pull_request) Successful in 1m51s
Build / build-9 (pull_request) Successful in 1m59s
- bump release
- add default admin user/pass
- change http service to listen on all interfaces
2025-10-19 20:44:04 +11:00
unkinben 2de946b150 Merge pull request 'feat: add Stalwart Mail Server and FoundationDB library packages' (#67) from benvin/stalwart into master
Deploy / deploy-8 (push) Successful in 9s
Deploy / deploy-9 (push) Successful in 10s
Reviewed-on: #67
2025-10-19 18:35:03 +11:00
unkinben e07235ca98 feat: add Stalwart Mail Server and FoundationDB library packages
Build / build-8 (pull_request) Successful in 58s
Build / build-9 (pull_request) Successful in 2m17s
- add stalwart: main mail server with systemd integration and user management
- add stalwart-cli: command line interface tool for server administration
- add stalwart-foundationdb: FoundationDB-enabled version with proper dependencies
- add libfoundationdb: FoundationDB client library (libfdb_c.so) package

All packages include proper conflict resolution, systemd services, and follow
repository packaging conventions. stalwart and stalwart-foundationdb are
mutually exclusive to prevent installation conflicts.
2025-10-19 18:08:33 +11:00
unkinben fdf9a11a4c Merge pull request 'feat: add OpenBao plugin RPMs for consul and nomad secrets engines' (#66) from benvin/openbao-plugins into master
Deploy / deploy-9 (push) Failing after 3s
Deploy / deploy-8 (push) Successful in 6s
Reviewed-on: #66
2025-10-17 15:09:24 +11:00
unkinben 086d9365d4 feat: add OpenBao plugin RPMs for consul and nomad secrets engines
Build / build-9 (pull_request) Successful in 42s
Build / build-8 (pull_request) Successful in 2m2s
- Add openbao-plugin-secret-consul v0.1.0 RPM configuration
- Add openbao-plugin-secret-nomad v0.1.4 RPM configuration
- Add openbao-plugins v1.0.0 meta package that installs both plugins
- Plugins install to /opt/openbao-plugins directory
- Include pre-install scripts to create plugin directory
- Support for EL8 and EL9 distributions
2025-10-17 14:59:40 +11:00
unkinben 9d68b886ec Merge pull request 'feat: upgrade terragrunt to version 0.90.0' (#65) from feat/upgrade-terragrunt-0.90.0 into master
Deploy / deploy-8 (push) Successful in 5s
Deploy / deploy-9 (push) Successful in 5s
Reviewed-on: #65
2025-10-12 18:08:04 +11:00
unkinben 68b211624a feat: upgrade terragrunt to version 0.90.0
Build / build-9 (pull_request) Successful in 1m45s
Build / build-8 (pull_request) Successful in 1m53s
Updates terragrunt from version 0.81.0 to 0.90.0 with verified build success.
2025-10-12 18:00:27 +11:00
unkinben 46c5cf838a Merge pull request 'feat: add vals package configuration' (#64) from feat/add-vals-package into master
Deploy / deploy-9 (push) Successful in 5s
Deploy / deploy-8 (push) Successful in 6s
Reviewed-on: #64
2025-10-04 14:35:56 +10:00
unkinben 699187341b feat: add vals package configuration
Build / build-9 (pull_request) Successful in 38s
Build / build-8 (pull_request) Successful in 48s
Add RPM package configuration for vals, a configuration management tool that validates and manages configuration values from various backends.
2025-10-04 14:26:56 +10:00
unkinben 873abe18c8 Merge pull request 'feat: add helmfile package configuration' (#63) from feat/add-helmfile-package into master
Deploy / deploy-9 (push) Successful in 5s
Deploy / deploy-8 (push) Successful in 8s
Reviewed-on: #63
2025-10-04 12:54:05 +10:00
unkinben 961ceb0df3 feat: add helmfile package configuration
Build / build-9 (pull_request) Successful in 41s
Build / build-8 (pull_request) Successful in 50s
Add RPM package configuration for helmfile v1.1.7, a declarative tool for deploying Kubernetes Helm charts.
2025-10-04 12:51:56 +10:00
unkinben 5919cd377f Merge pull request 'feat: add jsonnet-language-server package configuration' (#62) from benvin/jsonnet-language-server into master
Deploy / deploy-8 (push) Successful in 3s
Deploy / deploy-9 (push) Successful in 3s
Reviewed-on: #62
2025-09-30 22:00:41 +10:00
unkinben 2ecfeb860e feat: add jsonnet-language-server package configuration
Build / build-9 (pull_request) Successful in 31s
Build / build-8 (pull_request) Successful in 1m46s
Add complete RPM package configuration for jsonnet-language-server v0.16.0 including Dockerfile, build scripts, and nfpm configuration for cross-distro builds.
2025-09-30 21:57:49 +10:00
unkinben 7967342045 Merge pull request 'fix: update path for scripts' (#61) from refactor/standardize-dockerfile-build-structure into master
Deploy / deploy-8 (push) Failing after 3s
Deploy / deploy-9 (push) Failing after 4s
Reviewed-on: #61
2025-09-30 21:07:12 +10:00
unkinben f3b60b7137 fix: update path for scripts
Build / build-9 (pull_request) Successful in 29s
Build / build-8 (pull_request) Successful in 38s
2025-09-30 21:04:29 +10:00
unkinben 54e1c740b1 Merge pull request 'refactor/standardize-dockerfile-build-structure' (#60) from refactor/standardize-dockerfile-build-structure into master
Deploy / deploy-8 (push) Successful in 4s
Deploy / deploy-9 (push) Successful in 4s
Reviewed-on: #60
2025-09-30 21:03:14 +10:00
unkinben 989c8e9ea8 feat: add metadata.yaml files for all packages
Build / build-9 (pull_request) Successful in 42s
Build / build-8 (pull_request) Successful in 1m43s
Add simplified metadata structure for all 41 packages containing:
- Package name, version, and release number
- GitHub repository for packages with GitHub releases
- Build configuration for el/8 and el/9 distributions

This metadata enables future automation for version checking and package building across different distributions.
2025-09-29 22:11:03 +10:00
unkinben f125d59935 refactor: replace all wget commands with curl
Standardize download commands across all build scripts:
- HashiCorp packages: wget -O → curl -o
- VictoriaMetrics packages: wget -O → curl -o
- Other packages: wget -O → curl -o, wget → curl -O
- Update dependency lists to use curl instead of wget

This change provides consistency across all packages and uses a single download tool.
2025-09-29 21:59:01 +10:00
unkinben 46016bae5c refactor: move download logic from Dockerfiles to build.sh scripts
Move complex download commands from Dockerfiles to build.sh scripts for consistency:
- pgbouncer_exporter, bind_exporter, exportarr, node_exporter, postgres_exporter: GitHub downloads
- vmagent, vmalert: VictoriaMetrics vmutils downloads
- vminsert, vmselect, vmstorage: VictoriaMetrics cluster downloads

All Dockerfiles now follow the simple template pattern with download logic properly contained in build scripts.
2025-09-29 21:53:08 +10:00
unkinben 325b830952 refactor: standardize Dockerfile and build script structure
Standardize all RPM packages to use a consistent build pattern:
- Simple Dockerfiles that copy resources/ and call build.sh
- Move all build logic to resources/build.sh scripts
- Consolidate nfpm.yaml and scripts into resources/ directory
- Update base image to almalinux9-rpmbuilder for consistency

Changes:
- Refactored 37 packages total (simple + complex)
- HashiCorp tools: consul, vault, terraform, terragrunt, packer, nomad, nomad-autoscaler
- Development tools: g10k, etcd, nfpm, ruff, uv, unrar, nzbget, boilerplate
- VictoriaMetrics: vlutils, vmutils, victoria-logs
- Network tools: cni-plugins, consul-cni, unkin-ca-certificates
- Jellyfin suite: jellyfin-web, jellyfin-server, jellyfin-ffmpeg-bin
- System packages: puppet-initial, incus

This standardization improves maintainability and consistency across
the entire RPM build system while preserving all existing functionality.
2025-09-28 22:17:46 +10:00
unkinben 5e3688c988 Merge pull request 'feat: add jsonnet and jsonnet-lint packages' (#59) from benvin/jsonnet into master
Deploy / deploy-8 (push) Successful in 5s
Deploy / deploy-9 (push) Successful in 4s
Reviewed-on: #59
2025-09-28 21:03:12 +10:00
unkinben 97a180ef9f feat: add jsonnet and jsonnet-lint packages
Build / build-9 (pull_request) Successful in 2m55s
Build / build-8 (pull_request) Successful in 2m56s
Add RPM packages for jsonnet v0.21.0 built from go-jsonnet:
- jsonnet: main interpreter and jsonnetfmt formatter
- jsonnet-lint: linter for Jsonnet files

Both packages use Go 1.24.7 as required by go-jsonnet v0.21.0.
2025-09-28 20:55:28 +10:00
252 changed files with 3141 additions and 1029 deletions
+8 -4
View File
@@ -10,15 +10,17 @@ jobs:
runs-on: almalinux-8 runs-on: almalinux-8
container: container:
image: git.unkin.net/unkin/almalinux8-actionsdind:latest image: git.unkin.net/unkin/almalinux8-actionsdind:latest
options: --privileged options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro"
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Build Packages - name: Build Packages
env:
VAULT_ROLE_ID: ${{ secrets.RPMBUILDER_VAULT_ROLEID }}
run: | run: |
make all make all DISTRO=el/8
- name: Show RPMs - name: Show RPMs
run: | run: |
@@ -34,15 +36,17 @@ jobs:
runs-on: almalinux-8 runs-on: almalinux-8
container: container:
image: git.unkin.net/unkin/almalinux9-actionsdind:latest image: git.unkin.net/unkin/almalinux9-actionsdind:latest
options: --privileged options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro"
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Build Packages - name: Build Packages
env:
VAULT_ROLE_ID: ${{ secrets.RPMBUILDER_VAULT_ROLEID }}
run: | run: |
make all make all DISTRO=el/9
- name: Show RPMs - name: Show RPMs
run: | run: |
+2
View File
@@ -1 +1,3 @@
dist dist
env
.claude
+3 -2
View File
@@ -1,4 +1,5 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest ARG BASE_IMAGE=git.unkin.net/unkin/almalinux9-rpmbuilder:latest
FROM ${BASE_IMAGE}
# Create output directory for RPMs # Create output directory for RPMs
RUN mkdir -p /app/dist RUN mkdir -p /app/dist
@@ -11,7 +12,7 @@ ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION} ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container # Copy resources from the context into the container
COPY resources /app/resources COPY resources /app/resources
# Default command to build RPMs # Default command to build RPMs
+66 -39
View File
@@ -1,58 +1,85 @@
# Variables # Variables
ROOT_DIR := $(PWD) ROOT_DIR := $(PWD)
RPMS_DIR := $(ROOT_DIR)/rpms BUILD_TOOL := $(ROOT_DIR)/tools/build
REPO_OPTIONS := --disablerepo=* --enablerepo=unkin DISTRO ?= el/9 # Default to el/9 if not specified
# Automatically find all package/version directories # Automatically find all packages with metadata.yaml
PACKAGES := $(shell find $(RPMS_DIR) -mindepth 2 -maxdepth 2 -type d | sed "s|$(RPMS_DIR)/||" | grep -Ev '(scripts|/resources)') 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 and versions # Default target to build all packages
.PHONY: all list cache build clean .PHONY: all list build clean
all: cache $(PACKAGES) all: build-all
# List all available packages
list: list:
@echo "Builds:" @echo "Available packages:"
@for package in $(PACKAGES); do \ @for package in $(PACKAGES); do \
echo " '$$package'"; \ echo " $$package"; \
done done
cache: # Build all packages using Python tool
echo "Refreshing DNF cache..." && \ build-all:
dnf clean all && \ @echo "Building all packages using Python tooling for distro $(DISTRO)..."
dnf makecache $(BUILD_TOOL) --all --distro $(DISTRO)
# Build specific package/version # Build specific package using Python tool
.PHONY: $(PACKAGES) .PHONY: $(PACKAGES)
$(PACKAGES): $(PACKAGES):
@PACKAGE_NAME=$(shell echo $(@) | cut -d/ -f1) && \ @echo "Building package: $@ for distro $(DISTRO)"
PACKAGE_VERSION=$(shell echo $(@) | cut -d/ -f2) && \ $(BUILD_TOOL) --package $@ --distro $(DISTRO)
echo "Starting build $$PACKAGE_NAME/$$PACKAGE_VERSION" && \
$(MAKE) build PACKAGE_NAME=$$PACKAGE_NAME PACKAGE_VERSION=$$PACKAGE_VERSION
# Build target # Build specific package with version/release override
build: build:
@mkdir -p $(ROOT_DIR)/dist/$(PACKAGE_NAME)/ @if [ -z "$(PACKAGE_NAME)" ]; then \
@cd $(RPMS_DIR)/$(PACKAGE_NAME) && \ echo "Error: PACKAGE_NAME not specified"; \
export PACKAGE_RELEASE=$$(cat $(PACKAGE_VERSION)/release) && \ echo "Usage: make build PACKAGE_NAME=package [PACKAGE_VERSION=version] [PACKAGE_RELEASE=release]"; \
export PACKAGE_FULL_NAME=$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$$PACKAGE_RELEASE && \ exit 1; \
echo "Checking repos for $$PACKAGE_FULL_NAME" && \ fi
if dnf info $$PACKAGE_FULL_NAME $(REPO_OPTIONS) > /dev/null 2>&1; then \ @if [ -n "$(PACKAGE_VERSION)" ] && [ -n "$(PACKAGE_RELEASE)" ]; then \
echo "Skipping build for $(PACKAGE_NAME) version $(PACKAGE_VERSION) (already exists in the repository)"; \ echo "Building $(PACKAGE_NAME) with explicit version $(PACKAGE_VERSION)-$(PACKAGE_RELEASE) for distro $(DISTRO)"; \
else \ $(BUILD_TOOL) --package $(PACKAGE_NAME) --version $(PACKAGE_VERSION) --release $(PACKAGE_RELEASE) --distro $(DISTRO); \
echo "Building RPM for $(PACKAGE_NAME) version $(PACKAGE_VERSION)"; \ else \
docker build \ echo "Building $(PACKAGE_NAME) using metadata.yaml for distro $(DISTRO)"; \
--build-arg PACKAGE_VERSION=$(PACKAGE_VERSION) \ $(BUILD_TOOL) --package $(PACKAGE_NAME) --distro $(DISTRO); \
--build-arg PACKAGE_RELEASE=$${PACKAGE_RELEASE} \ fi
-t $$(echo $(PACKAGE_NAME)-builder \
| tr '[:upper:]' '[:lower:]') . && \ # Dry run - show what would be built without building
docker create --name $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder \ dry-run:
$$(echo $(PACKAGE_NAME)-builder | tr '[:upper:]' '[:lower:]') && \ @echo "Dry run - showing what would be built for distro $(DISTRO):"
docker start -a $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder && \ $(BUILD_TOOL) --all --distro $(DISTRO) --dry-run
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 target
clean: clean:
@echo "Cleaning build artifacts..." @echo "Cleaning build artifacts..."
rm -rf $(ROOT_DIR)/dist 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 $*
# Help target
help:
@echo "Available targets:"
@echo " all - Build all packages (default)"
@echo " list - List all available packages"
@echo " build-all - Build all packages using Python tooling"
@echo " <package> - Build specific package (e.g., 'make consul')"
@echo " build - Build with explicit PACKAGE_NAME, PACKAGE_VERSION, PACKAGE_RELEASE"
@echo " dry-run - Show what would be built without building"
@echo " clean - Remove build artifacts"
@echo " update - Check all packages for GitHub release updates"
@echo " update-<pkg> - Check specific package for GitHub release updates"
@echo " help - Show this help message"
@echo ""
@echo "Examples:"
@echo " make consul # Build consul using metadata.yaml"
@echo " make build PACKAGE_NAME=consul # Build consul using metadata.yaml"
@echo " make build PACKAGE_NAME=consul PACKAGE_VERSION=1.21.1 PACKAGE_RELEASE=1"
@echo " make update-consul # Check consul for GitHub updates"
@echo " make dry-run # Show what would be built"
-1
View File
@@ -1 +0,0 @@
1
-18
View File
@@ -1,18 +0,0 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+8
View File
@@ -0,0 +1,8 @@
name: act_runner
release: 1
version: 0.2.12
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
-1
View File
@@ -1 +0,0 @@
1
-21
View File
@@ -1,21 +0,0 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Download the required files
RUN curl --output - -L https://github.com/prometheus-community/bind_exporter/releases/download/v${PACKAGE_VERSION}/bind_exporter-${PACKAGE_VERSION}.linux-amd64.tar.gz | tar --strip-components=1 -xzf -
# Default command to build RPMs
CMD /app/resources/build.sh
+8
View File
@@ -0,0 +1,8 @@
name: bind_exporter
release: 1
version: 0.8.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+4
View File
@@ -1,2 +1,6 @@
#!/usr/bin/bash #!/usr/bin/bash
# Download the required files
curl --output - -L https://github.com/prometheus-community/bind_exporter/releases/download/v${PACKAGE_VERSION}/bind_exporter-${PACKAGE_VERSION}.linux-amd64.tar.gz | tar --strip-components=1 -xzf -
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
1
-22
View File
@@ -1,22 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
# Download the required files
RUN wget -O /app/boilerplate https://github.com/gruntwork-io/boilerplate/releases/download/v${PACKAGE_VERSION}/boilerplate_linux_amd64
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+9
View File
@@ -0,0 +1,9 @@
name: boilerplate
release: 1
version: 0.6.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: gruntwork-io/boilerplate
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/bash
# Download the required files
wget -O /app/boilerplate https://github.com/gruntwork-io/boilerplate/releases/download/v${PACKAGE_VERSION}/boilerplate_linux_amd64
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
1
-24
View File
@@ -1,24 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
COPY scripts /app/scripts
# Download the required files
RUN wget -O /app/cni-plugins-linux-amd64.tgz https://github.com/containernetworking/plugins/releases/download/v${PACKAGE_VERSION}/cni-plugins-linux-amd64-v${PACKAGE_VERSION}.tgz && \
tar xf cni-plugins-linux-amd64.tgz
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+9
View File
@@ -0,0 +1,9 @@
name: cni-plugins
release: 1
version: 1.7.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: containernetworking/plugins
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/bash
# Download and extract cni-plugins
wget -O /app/cni-plugins-linux-amd64.tgz https://github.com/containernetworking/plugins/releases/download/v${PACKAGE_VERSION}/cni-plugins-linux-amd64-v${PACKAGE_VERSION}.tgz
tar xf cni-plugins-linux-amd64.tgz
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
@@ -131,7 +131,7 @@ contents:
# Scripts to run during installation/removal (optional) # Scripts to run during installation/removal (optional)
scripts: scripts:
preinstall: ./scripts/preinstall.sh preinstall: /app/resources/scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh # postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh # preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh # postremove: ./scripts/postremove.sh
-1
View File
@@ -1 +0,0 @@
1
-25
View File
@@ -1,25 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
COPY scripts /app/scripts
# Download the required files
RUN dnf install -y unzip && \
wget -O /app/consul-cni.zip https://releases.hashicorp.com/consul-cni/${PACKAGE_VERSION}/consul-cni_${PACKAGE_VERSION}_linux_amd64.zip && \
unzip consul-cni.zip
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+8
View File
@@ -0,0 +1,8 @@
name: consul-cni
release: 1
version: 1.7.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/bash
# Install dependencies
dnf install -y unzip
# Download and extract consul-cni
curl -o /app/consul-cni.zip https://releases.hashicorp.com/consul-cni/${PACKAGE_VERSION}/consul-cni_${PACKAGE_VERSION}_linux_amd64.zip
unzip consul-cni.zip
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
@@ -28,7 +28,7 @@ contents:
# Scripts to run during installation/removal (optional) # Scripts to run during installation/removal (optional)
scripts: scripts:
preinstall: ./scripts/preinstall.sh preinstall: /app/resources/scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh # postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh # preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh # postremove: ./scripts/postremove.sh
-1
View File
@@ -1 +0,0 @@
1
-24
View File
@@ -1,24 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
# Download the required files
RUN dnf install -y unzip && \
wget -O /app/consul.zip https://releases.hashicorp.com/consul/${PACKAGE_VERSION}/consul_${PACKAGE_VERSION}_linux_amd64.zip && \
unzip consul.zip
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+8
View File
@@ -0,0 +1,8 @@
name: consul
release: 1
version: 1.21.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/bash
# Install dependencies
dnf install -y unzip
# Download and extract consul
curl -o /app/consul.zip https://releases.hashicorp.com/consul/${PACKAGE_VERSION}/consul_${PACKAGE_VERSION}_linux_amd64.zip
unzip consul.zip
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
2
-24
View File
@@ -1,24 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
# Download the required files
RUN wget -O /app/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz https://github.com/etcd-io/etcd/releases/download/v${PACKAGE_VERSION}/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz && \
tar xf /app/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz && \
mv /app/etcd-v${PACKAGE_VERSION}-linux-amd64/* /app/
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+9
View File
@@ -0,0 +1,9 @@
name: etcd
release: 2
version: 3.5.18
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: etcd-io/etcd
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/bash
# Download and extract etcd
wget -O /app/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz https://github.com/etcd-io/etcd/releases/download/v${PACKAGE_VERSION}/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz
tar xf /app/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz
mv /app/etcd-v${PACKAGE_VERSION}-linux-amd64/* /app/
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
1
-21
View File
@@ -1,21 +0,0 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Download the required files
RUN curl --output - -L https://github.com/onedr0p/exportarr/releases/download/v${PACKAGE_VERSION}/exportarr_${PACKAGE_VERSION}_linux_amd64.tar.gz | tar --strip-components=1 -xzf -
# Default command to build RPMs
CMD /app/resources/build.sh
+8
View File
@@ -0,0 +1,8 @@
name: exportarr
release: 1
version: 2.2.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+4
View File
@@ -1,2 +1,6 @@
#!/usr/bin/bash #!/usr/bin/bash
# Download the required files
curl --output - -L https://github.com/onedr0p/exportarr/releases/download/v${PACKAGE_VERSION}/exportarr_${PACKAGE_VERSION}_linux_amd64.tar.gz | tar --strip-components=1 -xzf -
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
1
+9
View File
@@ -0,0 +1,9 @@
name: frr_exporter
release: 1
version: 1.8.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: tynany/frr_exporter
-1
View File
@@ -1 +0,0 @@
1
-25
View File
@@ -1,25 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
# Download the required files
RUN wget -O /app/g10k.zip https://github.com/xorpaul/g10k/releases/download/v${PACKAGE_VERSION}/g10k-v${PACKAGE_VERSION}-linux-amd64.zip && \
pushd /app && \
unzip /app/g10k.zip && \
popd
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+9
View File
@@ -0,0 +1,9 @@
name: g10k
release: 1
version: 0.9.10
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: xorpaul/g10k
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/bash
# Download and extract g10k
wget -O /app/g10k.zip https://github.com/xorpaul/g10k/releases/download/v${PACKAGE_VERSION}/g10k-v${PACKAGE_VERSION}-linux-amd64.zip
pushd /app
unzip /app/g10k.zip
popd
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+9
View File
@@ -0,0 +1,9 @@
name: helmfile
release: 1
version: 1.1.7
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: helmfile/helmfile
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/helmfile.tar.gz https://github.com/helmfile/helmfile/releases/download/v${PACKAGE_VERSION}/helmfile_${PACKAGE_VERSION}_linux_amd64.tar.gz
# Extract the binary
cd /app
tar -xzf helmfile.tar.gz
# Make the binary executable
chmod +x /app/helmfile
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+38
View File
@@ -0,0 +1,38 @@
# nfpm.yaml
name: helmfile
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A declarative spec for deploying Helm charts. It lets you keep a directory of chart value files and maintain changes in version control; apply CI/CD to configuration changes; and periodically sync to avoid skew in environments."
maintainer: Helmfile Contributors
homepage: https://github.com/helmfile/helmfile
license: MIT
disable_globbing: false
replaces:
- helmfile
provides:
- helmfile
# Files to include in the package
contents:
- src: /app/helmfile
dst: /usr/bin/helmfile
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
# scripts:
# preinstall: ./scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
-1
View File
@@ -1 +0,0 @@
1
-55
View File
@@ -1,55 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
COPY scripts /app/scripts
COPY resources /app/resources
# Download the required files
RUN dnf install -y \
unzip \
libtool \
autoconf \
automake \
gcc \
make \
git \
go \
cowsql-devel \
libacl-devel \
libcap-devel \
libseccomp-devel \
libuv-devel \
raft-devel \
libudev-devel \
lxc-devel \
libsqlite3x-devel \
sqlite-devel \
systemd-rpm-macros \
bash-completion \
gettext \
help2man \
wget && \
wget -O /app/incus.tar.gz https://github.com/lxc/incus/archive/refs/tags/v${PACKAGE_VERSION}.tar.gz && tar -C /app -xf incus.tar.gz && \
wget https://go.dev/dl/go1.24.1.linux-amd64.tar.gz && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz && \
export PATH=/usr/local/go/bin:$PATH && \
pushd /app/incus-${PACKAGE_VERSION} && \
make deps && \
export CGO_CFLAGS="-I/root/go/deps/raft/include/ -I/root/go/deps/cowsql/include/" && \
export CGO_LDFLAGS="-L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/" && \
export LD_LIBRARY_PATH="/root/go/deps/raft/.libs/:/root/go/deps/cowsql/.libs/" && \
export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)" && \
make build
# Default command to build RPMs
CMD /app/scripts/build-packages.sh
+9
View File
@@ -0,0 +1,9 @@
name: incus
release: 1
version: 6.10.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: lxc/incus
+52
View File
@@ -0,0 +1,52 @@
#!/usr/bin/bash
# Install build dependencies
dnf install -y \
unzip \
libtool \
autoconf \
automake \
gcc \
make \
git \
go \
cowsql-devel \
libacl-devel \
libcap-devel \
libseccomp-devel \
libuv-devel \
raft-devel \
libudev-devel \
lxc-devel \
libsqlite3x-devel \
sqlite-devel \
systemd-rpm-macros \
bash-completion \
gettext \
help2man \
curl
# Download and extract incus source
curl -o /app/incus.tar.gz https://github.com/lxc/incus/archive/refs/tags/v${PACKAGE_VERSION}.tar.gz
tar -C /app -xf incus.tar.gz
# Install specific Go version
curl -O https://go.dev/dl/go1.24.1.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz
# Set up Go environment and build incus
export PATH=/usr/local/go/bin:$PATH
pushd /app/incus-${PACKAGE_VERSION}
make deps
export CGO_CFLAGS="-I/root/go/deps/raft/include/ -I/root/go/deps/cowsql/include/"
export CGO_LDFLAGS="-L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/"
export LD_LIBRARY_PATH="/root/go/deps/raft/.libs/:/root/go/deps/cowsql/.libs/"
export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)"
make build
popd
# Build the RPMs
nfpm pkg --config /app/resources/nfpm_incus.yaml --target /app/dist --packager rpm
nfpm pkg --config /app/resources/nfpm_incus-client.yaml --target /app/dist --packager rpm
nfpm pkg --config /app/resources/nfpm_incus-tools.yaml --target /app/dist --packager rpm
-4
View File
@@ -1,4 +0,0 @@
#!/usr/bin/bash
nfpm pkg --config /app/resources/nfpm_incus.yaml --target /app/dist --packager rpm && \
nfpm pkg --config /app/resources/nfpm_incus-client.yaml --target /app/dist --packager rpm && \
nfpm pkg --config /app/resources/nfpm_incus-tools.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
3
-23
View File
@@ -1,23 +0,0 @@
# Start with the AlmaLinux 9 base image
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Download the required files
RUN mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} && \
spectool -g -R /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec && \
rpmbuild -ba /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec && \
cp /root/rpmbuild/RPMS/x86_64/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist/ && \
cp /root/rpmbuild/SRPMS/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist
+8
View File
@@ -0,0 +1,8 @@
name: jellyfin-ffmpeg-bin
release: 3
version: 7.1.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/bash
# Setup rpmbuild directory structure
mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# Download source files using spectool
spectool -g -R /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec
# Build the RPM
rpmbuild -ba /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec
# Copy the built RPMs to output directory
cp /root/rpmbuild/RPMS/x86_64/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist/
cp /root/rpmbuild/SRPMS/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist
-1
View File
@@ -1 +0,0 @@
1
-26
View File
@@ -1,26 +0,0 @@
# Start with the AlmaLinux 9 base image
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Download the required files
RUN mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} && \
dnf install dotnet-sdk-8.0 -y && \
spectool -g -R /app/resources/jellyfin-server_${PACKAGE_VERSION}.spec && \
cp /app/resources/fix-envfile-path.patch /root/rpmbuild/SOURCES/fix-envfile-path.patch && \
cp /app/resources/tmpfiles.conf /root/rpmbuild/SOURCES/tmpfiles.conf && \
rpmbuild -ba /app/resources/jellyfin-server_${PACKAGE_VERSION}.spec && \
cp /root/rpmbuild/RPMS/x86_64/jellyfin-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.x86_64.rpm /app/dist/ && \
cp /root/rpmbuild/SRPMS/jellyfin-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.src.rpm /app/dist/
+8
View File
@@ -0,0 +1,8 @@
name: jellyfin-server
release: 1
version: 10.10.7
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/bash
# Setup rpmbuild directory structure
mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# Install .NET SDK for building
dnf install dotnet-sdk-8.0 -y
# Download source files using spectool
spectool -g -R /app/resources/jellyfin-server_${PACKAGE_VERSION}.spec
# Copy additional files to SOURCES
cp /app/resources/fix-envfile-path.patch /root/rpmbuild/SOURCES/fix-envfile-path.patch
cp /app/resources/tmpfiles.conf /root/rpmbuild/SOURCES/tmpfiles.conf
# Build the RPM
rpmbuild -ba /app/resources/jellyfin-server_${PACKAGE_VERSION}.spec
# Copy the built RPMs to output directory
cp /root/rpmbuild/RPMS/x86_64/jellyfin-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.x86_64.rpm /app/dist/
cp /root/rpmbuild/SRPMS/jellyfin-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.src.rpm /app/dist/
-1
View File
@@ -1 +0,0 @@
1
-25
View File
@@ -1,25 +0,0 @@
# Start with the AlmaLinux 9 base image
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Download the required files
RUN mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} && \
dnf module enable nodejs:20 -y && \
dnf install nodejs npm -y && \
spectool -g -R /app/resources/jellyfin-web_${PACKAGE_VERSION}.spec && \
rpmbuild -ba /app/resources/jellyfin-web_${PACKAGE_VERSION}.spec && \
cp /root/rpmbuild/RPMS/noarch/jellyfin-web-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.noarch.rpm /app/dist/ && \
cp /root/rpmbuild/SRPMS/jellyfin-web-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.src.rpm /app/dist/
+8
View File
@@ -0,0 +1,8 @@
name: jellyfin-web
release: 1
version: 10.10.7
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/bash
# Setup rpmbuild directory structure
mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# Install Node.js for building
dnf module enable nodejs:20 -y
dnf install nodejs npm -y
# Download source files using spectool
spectool -g -R /app/resources/jellyfin-web_${PACKAGE_VERSION}.spec
# Build the RPM
rpmbuild -ba /app/resources/jellyfin-web_${PACKAGE_VERSION}.spec
# Copy the built RPMs to output directory
cp /root/rpmbuild/RPMS/noarch/jellyfin-web-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.noarch.rpm /app/dist/
cp /root/rpmbuild/SRPMS/jellyfin-web-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.src.rpm /app/dist/
@@ -0,0 +1,9 @@
name: jsonnet-language-server
release: 1
version: 0.16.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: grafana/jsonnet-language-server
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/jsonnet-language-server https://github.com/grafana/jsonnet-language-server/releases/download/v${PACKAGE_VERSION}/jsonnet-language-server_${PACKAGE_VERSION}_linux_amd64
# Make the binary executable
chmod +x /app/jsonnet-language-server
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
@@ -0,0 +1,38 @@
# nfpm.yaml
name: jsonnet-language-server
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Jsonnet Language Server Protocol implementation for the Jsonnet templating language."
maintainer: Grafana Labs
homepage: https://github.com/grafana/jsonnet-language-server
license: Apache-2.0
disable_globbing: false
replaces:
- jsonnet-language-server
provides:
- jsonnet-language-server
# Files to include in the package
contents:
- src: /app/jsonnet-language-server
dst: /usr/bin/jsonnet-language-server
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
# scripts:
# preinstall: ./scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
+9
View File
@@ -0,0 +1,9 @@
name: jsonnet-lint
release: 1
version: 0.21.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: google/go-jsonnet
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/bash
# Install dependencies and Go 1.24
dnf install -y wget git make
# Download and install Go 1.24.7
wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.24.7.linux-amd64.tar.gz
export PATH=/usr/local/go/bin:$PATH
# Verify Go installation
go version
# Build jsonnet-lint binary
GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnet-lint@v${PACKAGE_VERSION}
# Build RPM package
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+30
View File
@@ -0,0 +1,30 @@
# nfpm.yaml
name: jsonnet-lint
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Linter for Jsonnet"
maintainer: Google
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
disable_globbing: false
replaces:
- jsonnet-lint
provides:
- jsonnet-lint
# Files to include in the package
contents:
- src: /app/jsonnet-lint
dst: /usr/bin/jsonnet-lint
file_info:
mode: 0755
owner: root
group: root
+9
View File
@@ -0,0 +1,9 @@
name: jsonnet
release: 1
version: 0.21.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: google/go-jsonnet
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/bash
# Install dependencies and Go 1.24
dnf install -y wget git make
# Download and install Go 1.24.7
wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.24.7.linux-amd64.tar.gz
export PATH=/usr/local/go/bin:$PATH
# Verify Go installation
go version
# Build jsonnet binaries
GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnet@v${PACKAGE_VERSION}
GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnetfmt@v${PACKAGE_VERSION}
# Build RPM package
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+36
View File
@@ -0,0 +1,36 @@
# nfpm.yaml
name: jsonnet
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A data templating language"
maintainer: Google
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
disable_globbing: false
replaces:
- jsonnet
provides:
- jsonnet
# Files to include in the package
contents:
- src: /app/jsonnet
dst: /usr/bin/jsonnet
file_info:
mode: 0755
owner: root
group: root
- src: /app/jsonnetfmt
dst: /usr/bin/jsonnetfmt
file_info:
mode: 0755
owner: root
group: root
+9
View File
@@ -0,0 +1,9 @@
name: libfoundationdb
release: 1
version: 7.3.71
github: apple/foundationdb
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/bash
# Download the required library
curl -L -o /app/libfdb_c.so https://github.com/apple/foundationdb/releases/download/${PACKAGE_VERSION}/libfdb_c.x86_64.so
# Make the library readable
chmod 755 /app/libfdb_c.so
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+36
View File
@@ -0,0 +1,36 @@
# nfpm.yaml
name: libfoundationdb
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "FoundationDB client library - Shared library for FoundationDB applications"
maintainer: FoundationDB Community
homepage: https://github.com/apple/foundationdb
license: Apache-2.0
disable_globbing: false
replaces:
- libfoundationdb
provides:
- libfoundationdb
- libfdb_c.so()(64bit)
# Files to include in the package
contents:
- src: /app/libfdb_c.so
dst: /usr/lib64/libfdb_c.so
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal
scripts:
postinstall: /app/resources/scripts/postinstall.sh
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Update the dynamic linker cache to include the new library
ldconfig
-1
View File
@@ -1 +0,0 @@
1
-22
View File
@@ -1,22 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
# Compile the binaries
RUN GOBIN=/app go install github.com/goreleaser/nfpm/v2/cmd/nfpm@v${PACKAGE_VERSION}
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+9
View File
@@ -0,0 +1,9 @@
name: nfpm
release: 1
version: 2.41.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: goreleaser/nfpm
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/bash
# Compile nfpm binary using Go
GOBIN=/app go install github.com/goreleaser/nfpm/v2/cmd/nfpm@v${PACKAGE_VERSION}
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
1
-21
View File
@@ -1,21 +0,0 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Download the required files
RUN curl --output - -L https://github.com/prometheus/node_exporter/releases/download/v${PACKAGE_VERSION}/node_exporter-${PACKAGE_VERSION}.linux-amd64.tar.gz | tar --strip-components=1 -xzf -
# Default command to build RPMs
CMD /app/resources/build.sh
+8
View File
@@ -0,0 +1,8 @@
name: node_exporter
release: 1
version: 1.9.1
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+4
View File
@@ -1,2 +1,6 @@
#!/usr/bin/bash #!/usr/bin/bash
# Download the required files
curl --output - -L https://github.com/prometheus/node_exporter/releases/download/v${PACKAGE_VERSION}/node_exporter-${PACKAGE_VERSION}.linux-amd64.tar.gz | tar --strip-components=1 -xzf -
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-1
View File
@@ -1 +0,0 @@
1
-24
View File
@@ -1,24 +0,0 @@
# Start with the AlmaLinux 8.10 base image
FROM git.unkin.net/unkin/almalinux8-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY nfpm.yaml /app/nfpm.yaml
# Download the required files
RUN dnf install -y unzip && \
wget -O /app/nomad-autoscaler.zip https://releases.hashicorp.com/nomad-autoscaler/${PACKAGE_VERSION}/nomad-autoscaler_${PACKAGE_VERSION}_linux_amd64.zip && \
unzip nomad-autoscaler.zip
# Default command to build RPMs
CMD nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+8
View File
@@ -0,0 +1,8 @@
name: nomad-autoscaler
release: 1
version: 0.4.6
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/bash
# Install dependencies
dnf install -y unzip
# Download and extract nomad-autoscaler
curl -o /app/nomad-autoscaler.zip https://releases.hashicorp.com/nomad-autoscaler/${PACKAGE_VERSION}/nomad-autoscaler_${PACKAGE_VERSION}_linux_amd64.zip
unzip nomad-autoscaler.zip
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm

Some files were not shown because too many files have changed in this diff Show More