4 Commits

Author SHA1 Message Date
unkinben ffd5ae4065 feat: add metadata.yaml files for all packages
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 99ee31e6ab 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 80aaa8d93d 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 5f791e2cf7 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
343 changed files with 1585 additions and 7071 deletions
+13
View File
@@ -0,0 +1,13 @@
{
"permissions": {
"allow": [
"Bash(chmod:*)",
"Bash(mkdir:*)",
"Bash(mv:*)",
"Bash(find:*)",
"Bash(git checkout:*)"
],
"deny": [],
"ask": []
}
}
+55
View File
@@ -0,0 +1,55 @@
name: Build
on:
pull_request:
workflow_call:
workflow_dispatch:
jobs:
build-8:
runs-on: almalinux-8
container:
image: git.unkin.net/unkin/almalinux8-actionsdind:latest
options: --privileged
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Build Packages
run: |
make all
- name: Show RPMs
run: |
find /workspace -type f -name "*.rpm"
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: rpms-8
path: /workspace/unkin/rpmbuilder/dist/*/*.rpm
build-9:
runs-on: almalinux-8
container:
image: git.unkin.net/unkin/almalinux9-actionsdind:latest
options: --privileged
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Build Packages
run: |
make all
- name: Show RPMs
run: |
find /workspace -type f -name "*.rpm"
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: rpms-9
path: /workspace/unkin/rpmbuilder/dist/*/*.rpm
+66
View File
@@ -0,0 +1,66 @@
name: Deploy
on:
push:
branches:
- master
workflow_dispatch:
jobs:
deploy-8:
runs-on: almalinux-8
container:
image: git.unkin.net/unkin/almalinux8-actionsdind:latest
options: --privileged
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Download Artifacts
run: |
mkdir -p /workspace/unkin/rpmbuilder/dist/8
export PREVIOUS_RUN_ID=$((GITHUB_RUN_NUMBER - 1))
curl -L -o /workspace/rpms.zip "https://git.unkin.net/${GITHUB_REPOSITORY}/actions/runs/${PREVIOUS_RUN_ID}/artifacts/rpms-8"
unzip /workspace/rpms.zip -d /workspace/unkin/rpmbuilder/dist/8
- name: Show RPMs
run: |
find /workspace -type f -name "*.rpm"
- name: Upload RPMs to Gitea
env:
DRONECI_PASSWORD: ${{ secrets.DRONECI_PASSWORD }}
run: |
for rpm in $(find /workspace/unkin/rpmbuilder/dist/8 -type f -name "*.rpm"); do
curl --user droneci:${{ secrets.DRONECI_PASSWORD }} --upload-file $rpm https://git.unkin.net/api/packages/unkin/rpm/almalinux/el8/upload
done
deploy-9:
runs-on: almalinux-8
container:
image: git.unkin.net/unkin/almalinux9-actionsdind:latest
options: --privileged
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Download Artifacts
run: |
mkdir -p /workspace/unkin/rpmbuilder/dist/9
export PREVIOUS_RUN_ID=$((GITHUB_RUN_NUMBER - 1))
curl -L -o /workspace/rpms.zip "https://git.unkin.net/${GITHUB_REPOSITORY}/actions/runs/${PREVIOUS_RUN_ID}/artifacts/rpms-9"
unzip /workspace/rpms.zip -d /workspace/unkin/rpmbuilder/dist/9
- name: Show RPMs
run: |
find /workspace -type f -name "*.rpm"
- name: Upload RPMs to Gitea
env:
DRONECI_PASSWORD: ${{ secrets.DRONECI_PASSWORD }}
run: |
for rpm in $(find /workspace/unkin/rpmbuilder/dist/9 -type f -name "*.rpm"); do
curl --user droneci:${{ secrets.DRONECI_PASSWORD }} --upload-file $rpm https://git.unkin.net/api/packages/unkin/rpm/almalinux/el9/upload
done
-3
View File
@@ -1,4 +1 @@
dist dist
env
.claude
.ruff_cache
-59
View File
@@ -1,59 +0,0 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: check-executables-have-shebangs
- id: check-json
- id: check-added-large-files
args: ['--maxkb=500']
- id: check-merge-conflict
- id: check-shebang-scripts-are-executable
- id: check-symlinks
- id: check-toml
- id: check-yaml
args: [--allow-multiple-documents]
- id: detect-aws-credentials
args: [--allow-missing-credentials]
- id: detect-private-key
- id: end-of-file-fixer
- id: forbid-new-submodules
- id: pretty-format-json
- id: trailing-whitespace
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.37.1
hooks:
- id: yamllint
args:
[
"-d {extends: relaxed, rules: {line-length: disable}}",
"-s",
]
- repo: local
hooks:
- id: pytest
name: Run unit tests
entry: make test
language: system
types: [python]
pass_filenames: false
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.37.2
hooks:
- id: check-jsonschema
name: Validate RPM package metadata
files: ^rpms/[^/]+/metadata\.yaml$
args: [--schemafile, schema/metadata.json]
language_version: python3.11
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.7
hooks:
# Run the linter.
- id: ruff-check
args: [--fix]
# Run the formatter.
- id: ruff-format
-26
View File
@@ -1,26 +0,0 @@
when:
- event: pull_request
steps:
- name: build rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro almalinux/el8 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show rpms
image: git.unkin.net/unkin/almalinux8-base:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
-26
View File
@@ -1,26 +0,0 @@
when:
- event: pull_request
steps:
- name: build rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro almalinux/el9 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show rpms
image: git.unkin.net/unkin/almalinux9-base:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
-26
View File
@@ -1,26 +0,0 @@
when:
- event: pull_request
steps:
- name: build rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro fedora/42 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show rpms
image: git.unkin.net/unkin/fedora42-base:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
-26
View File
@@ -1,26 +0,0 @@
when:
- event: pull_request
steps:
- name: build rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro fedora/43 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show rpms
image: git.unkin.net/unkin/fedora43-base:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
-26
View File
@@ -1,26 +0,0 @@
when:
- event: pull_request
steps:
- name: build rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro fedora/44 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show rpms
image: git.unkin.net/unkin/fedora44-base:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
-56
View File
@@ -1,56 +0,0 @@
when:
- event: push
branch: master
steps:
- name: build-rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro almalinux/el8 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show-rpms
image: git.unkin.net/unkin/almalinux9-base:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
depends_on: [build-rpms]
- name: deploy-rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- |
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
REPO="rpm-vendor-el8"
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
FILE=$$(basename "$$rpm")
# artifactapi has no HEAD route (405); probe the served Packages path.
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
if [ "$$code" = "200" ]; then
echo "$$FILE already exists in $$REPO; skipping"
continue
fi
curl -f -X PUT "$$HOST/api/v2/remotes/$$REPO/files/$$FILE" -H "Content-Type: application/x-rpm" --data-binary @"$$rpm"
done
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
-56
View File
@@ -1,56 +0,0 @@
when:
- event: push
branch: master
steps:
- name: build-rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro almalinux/el9 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show-rpms
image: git.unkin.net/unkin/almalinux9-base:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
depends_on: [build-rpms]
- name: deploy-rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- |
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
REPO="rpm-vendor-el9"
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
FILE=$$(basename "$$rpm")
# artifactapi has no HEAD route (405); probe the served Packages path.
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
if [ "$$code" = "200" ]; then
echo "$$FILE already exists in $$REPO; skipping"
continue
fi
curl -f -X PUT "$$HOST/api/v2/remotes/$$REPO/files/$$FILE" -H "Content-Type: application/x-rpm" --data-binary @"$$rpm"
done
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
-56
View File
@@ -1,56 +0,0 @@
when:
- event: push
branch: master
steps:
- name: build-rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro fedora/42 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show-rpms
image: git.unkin.net/unkin/fedora42-rpmbuilder:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
depends_on: [build-rpms]
- name: deploy-rpms
image: git.unkin.net/unkin/fedora42-rpmbuilder:latest
commands:
- |
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
REPO="rpm-vendor-f42"
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
FILE=$$(basename "$$rpm")
# artifactapi has no HEAD route (405); probe the served Packages path.
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
if [ "$$code" = "200" ]; then
echo "$$FILE already exists in $$REPO; skipping"
continue
fi
curl -f -X PUT "$$HOST/api/v2/remotes/$$REPO/files/$$FILE" -H "Content-Type: application/x-rpm" --data-binary @"$$rpm"
done
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
-56
View File
@@ -1,56 +0,0 @@
when:
- event: push
branch: master
steps:
- name: build-rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro fedora/43 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show-rpms
image: git.unkin.net/unkin/fedora43-rpmbuilder:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
depends_on: [build-rpms]
- name: deploy-rpms
image: git.unkin.net/unkin/fedora43-rpmbuilder:latest
commands:
- |
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
REPO="rpm-vendor-f43"
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
FILE=$$(basename "$$rpm")
# artifactapi has no HEAD route (405); probe the served Packages path.
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
if [ "$$code" = "200" ]; then
echo "$$FILE already exists in $$REPO; skipping"
continue
fi
curl -f -X PUT "$$HOST/api/v2/remotes/$$REPO/files/$$FILE" -H "Content-Type: application/x-rpm" --data-binary @"$$rpm"
done
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
-56
View File
@@ -1,56 +0,0 @@
when:
- event: push
branch: master
steps:
- name: build-rpms
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
commands:
- mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace
- ./tools/build build-all --distro fedora/44 --buildah
privileged: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show-rpms
image: git.unkin.net/unkin/fedora44-rpmbuilder:latest
commands:
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
depends_on: [build-rpms]
- name: deploy-rpms
image: git.unkin.net/unkin/fedora44-rpmbuilder:latest
commands:
- |
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
REPO="rpm-vendor-f44"
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
FILE=$$(basename "$$rpm")
# artifactapi has no HEAD route (405); probe the served Packages path.
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
if [ "$$code" = "200" ]; then
echo "$$FILE already exists in $$REPO; skipping"
continue
fi
curl -f -X PUT "$$HOST/api/v2/remotes/$$REPO/files/$$FILE" -H "Content-Type: application/x-rpm" --data-binary @"$$rpm"
done
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
-9
View File
@@ -1,9 +0,0 @@
when:
- event: pull_request
steps:
- name: pre-commit
image: git.unkin.net/unkin/almalinux9-base:latest
commands:
- dnf install uv make -y
- uvx pre-commit run --all-files
-34
View File
@@ -1,34 +0,0 @@
ARG BASE_IMAGE=git.unkin.net/unkin/almalinux9-rpmbuilder:latest
FROM ${BASE_IMAGE}
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
# Accept all package metadata as build arguments and set as environment variables
ARG PACKAGE_NAME
ENV PACKAGE_NAME=${PACKAGE_NAME}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_DESCRIPTION
ENV PACKAGE_DESCRIPTION=${PACKAGE_DESCRIPTION}
ARG PACKAGE_MAINTAINER
ENV PACKAGE_MAINTAINER=${PACKAGE_MAINTAINER}
ARG PACKAGE_HOMEPAGE
ENV PACKAGE_HOMEPAGE=${PACKAGE_HOMEPAGE}
ARG PACKAGE_LICENSE
ENV PACKAGE_LICENSE=${PACKAGE_LICENSE}
ARG PACKAGE_ARCH
ENV PACKAGE_ARCH=${PACKAGE_ARCH}
ARG PACKAGE_PLATFORM
ENV PACKAGE_PLATFORM=${PACKAGE_PLATFORM}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+40 -49
View File
@@ -1,67 +1,58 @@
# Variables # Variables
ROOT_DIR := $(PWD) ROOT_DIR := $(PWD)
BUILD_TOOL := $(ROOT_DIR)/tools/build RPMS_DIR := $(ROOT_DIR)/rpms
DISTRO ?= almalinux/el9 REPO_OPTIONS := --disablerepo=* --enablerepo=unkin
# Authentication variables (optional) # Automatically find all package/version directories
# VAULT_ROLE_ID - Use AppRole authentication if set PACKAGES := $(shell find $(RPMS_DIR) -mindepth 2 -maxdepth 2 -type d | sed "s|$(RPMS_DIR)/||" | grep -Ev '(scripts|/resources)')
# VAULT_ROLE - Kubernetes role for service account authentication (default: rpmbuilder)
# Automatically find all packages with metadata.yaml # Default target to build all packages and versions
PACKAGES := $(shell find $(ROOT_DIR)/rpms -mindepth 1 -maxdepth 1 -type d -exec test -f {}/metadata.yaml \; -print | xargs -n1 basename | sort) .PHONY: all list cache build clean
all: cache $(PACKAGES)
# Default target to build all packages
.PHONY: all list build clean test
all: build-all
# List all available packages
list: list:
@echo "Available packages:" @echo "Builds:"
@for package in $(PACKAGES); do \ @for package in $(PACKAGES); do \
echo " $$package"; \ echo " '$$package'"; \
done done
# Build all packages using Python tool cache:
build-all: echo "Refreshing DNF cache..." && \
@echo "Building all packages using Python tooling for distro $(DISTRO)..." dnf clean all && \
$(BUILD_TOOL) build-all --distro $(DISTRO) dnf makecache
# Build all packages using native build (no Docker) # Build specific package/version
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) .PHONY: $(PACKAGES)
$(PACKAGES): $(PACKAGES):
@echo "Building package: $@ for distro $(DISTRO)" @PACKAGE_NAME=$(shell echo $(@) | cut -d/ -f1) && \
$(BUILD_TOOL) build --distro $(DISTRO) $@ PACKAGE_VERSION=$(shell echo $(@) | cut -d/ -f2) && \
echo "Starting build $$PACKAGE_NAME/$$PACKAGE_VERSION" && \
$(MAKE) build PACKAGE_NAME=$$PACKAGE_NAME PACKAGE_VERSION=$$PACKAGE_VERSION
# Dry run - show what would be built without building # Build target
dry-run: build:
@echo "Dry run - showing what would be built for distro $(DISTRO):" @mkdir -p $(ROOT_DIR)/dist/$(PACKAGE_NAME)/
$(BUILD_TOOL) build-all --distro $(DISTRO) --dry-run @cd $(RPMS_DIR)/$(PACKAGE_NAME) && \
export PACKAGE_RELEASE=$$(cat $(PACKAGE_VERSION)/release) && \
# Run unit tests export PACKAGE_FULL_NAME=$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$$PACKAGE_RELEASE && \
test: echo "Checking repos for $$PACKAGE_FULL_NAME" && \
@uv run --group dev pytest tests/ -q; rc=$$?; [ $$rc -eq 5 ] && exit 0 || exit $$rc 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 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 $*
-11
View File
@@ -1,11 +0,0 @@
[project]
name = "rpmbuilder"
version = "0.1.0"
requires-python = ">=3.11"
[dependency-groups]
dev = [
"pytest>=8",
"jsonschema>=4",
"pyyaml>=6",
]
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
+7 -19
View File
@@ -1,20 +1,8 @@
name: act_runner name: act_runner
github: unknown/act_runner release: 1
description: A runner for Gitea based on act. version: 0.2.12
arch: amd64 build:
platform: linux - distro: el/8
maintainer: Gitea image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
homepage: https://gitea.com/gitea/act_runner - distro: el/9
license: MIT image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
dist_tag: true
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 0.2.12
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 0.2.12
+2 -9
View File
@@ -1,10 +1,3 @@
#!/usr/bin/bash #!/usr/bin/bash
curl --output act_runner-linux-amd64 https://dl.gitea.com/act_runner/${PACKAGE_VERSION}/act_runner-${PACKAGE_VERSION}-linux-amd64
set -e nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
curl -L --output act_runner-linux-amd64 https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/gitea-dl/act_runner/${PACKAGE_VERSION}/act_runner-${PACKAGE_VERSION}-linux-amd64
# Process the nfpm.yaml template with environment variables
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,16 +1,16 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: act_runner
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "A runner for Gitea based on act."
maintainer: ${PACKAGE_MAINTAINER} maintainer: Gitea
homepage: ${PACKAGE_HOMEPAGE} homepage: https://gitea.com/gitea/act_runner
license: ${PACKAGE_LICENSE} license: MIT
disable_globbing: false disable_globbing: false
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+7 -19
View File
@@ -1,20 +1,8 @@
name: bind_exporter name: bind_exporter
github: prometheus-community/bind_exporter release: 1
description: Prometheus exporter for BIND version: 0.8.0
arch: amd64 build:
platform: linux - distro: el/8
maintainer: Prometheus image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
homepage: https://github.com/prometheus-community/bind_exporter - distro: el/9
license: Apache-2.0 license image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
dist_tag: true
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 0.8.0
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 0.8.0
+2 -6
View File
@@ -1,10 +1,6 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Download the required files # Download the required files
curl --output - -L https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/prometheus-community/bind_exporter/releases/download/v${PACKAGE_VERSION}/bind_exporter-${PACKAGE_VERSION}.linux-amd64.tar.gz | tar --strip-components=1 -xzf - 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 -
# Process nfpm.yaml with envsubst nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,16 +1,16 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: bind_exporter
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "Prometheus exporter for BIND"
maintainer: ${PACKAGE_MAINTAINER} maintainer: Prometheus
homepage: ${PACKAGE_HOMEPAGE} homepage: https://github.com/prometheus-community/bind_exporter
license: ${PACKAGE_LICENSE} license: Apache-2.0 license
disable_globbing: false disable_globbing: false
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+6 -18
View File
@@ -1,21 +1,9 @@
name: boilerplate name: boilerplate
github: gruntwork-io/boilerplate release: 1
description: Boilerplate is a tool for generating files and folders (boilerplate) version: 0.6.1
from a set of templates. build:
arch: amd64 - distro: el/8
platform: linux
maintainer: Gruntwork
homepage: https://github.com/gruntwork-io/boilerplate
license: MIT
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 - distro: el/9
version: 0.15.0
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 github: gruntwork-io/boilerplate
version: 0.15.0
+2 -6
View File
@@ -1,11 +1,7 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Download the required files # Download the required files
wget -O /app/boilerplate https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/gruntwork-io/boilerplate/releases/download/v${PACKAGE_VERSION}/boilerplate_linux_amd64 wget -O /app/boilerplate https://github.com/gruntwork-io/boilerplate/releases/download/v${PACKAGE_VERSION}/boilerplate_linux_amd64
# Process nfpm.yaml with envsubst
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
# Build the RPM # Build the RPM
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,17 +1,17 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: boilerplate
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "Boilerplate is a tool for generating files and folders (boilerplate) from a set of templates."
maintainer: ${PACKAGE_MAINTAINER} maintainer: Gruntwork
homepage: ${PACKAGE_HOMEPAGE} homepage: https://github.com/gruntwork-io/boilerplate
license: ${PACKAGE_LICENSE} license: MIT
disable_globbing: false disable_globbing: false
-19
View File
@@ -1,19 +0,0 @@
name: claude-code
description: Claude Code - Anthropic's agentic AI coding tool
arch: amd64
platform: linux
maintainer: Anthropic
homepage: https://claude.ai/code
license: Proprietary
dist_tag: true
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1
repository:
- almalinux/el8
version: 2.1.156
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
repository:
- almalinux/el9
version: 2.1.156
-13
View File
@@ -1,13 +0,0 @@
#!/usr/bin/bash
set -e
# Download claude-code binary
wget -O /app/claude https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/claude-ai/claude-code-releases/${PACKAGE_VERSION}/linux-x64/claude
chmod +x /app/claude
# Process the nfpm.yaml template with environment variables
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
# Build the RPM
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
-33
View File
@@ -1,33 +0,0 @@
# nfpm.yaml
name: ${PACKAGE_NAME}
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH}
platform: ${PACKAGE_PLATFORM}
section: default
priority: extra
description: "${PACKAGE_DESCRIPTION}"
maintainer: ${PACKAGE_MAINTAINER}
homepage: ${PACKAGE_HOMEPAGE}
license: ${PACKAGE_LICENSE}
disable_globbing: false
replaces:
- claude-code
- claude
provides:
- claude-code
- claude
# Files to include in the package
contents:
- src: /app/claude
dst: /usr/bin/claude
file_info:
mode: 0755
owner: root
group: root
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+6 -18
View File
@@ -1,21 +1,9 @@
name: cni-plugins name: cni-plugins
github: containernetworking/plugins release: 1
description: Some reference and example networking plugins, maintained by the CNI version: 1.7.1
team. build:
arch: amd64 - distro: el/8
platform: linux
maintainer: ContainerNetworking
homepage: https://github.com/containernetworking/plugins
license: Apache-2.0
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 - distro: el/9
version: 1.9.1
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 github: containernetworking/plugins
version: 1.9.1
+2 -6
View File
@@ -1,12 +1,8 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Download and extract cni-plugins # Download and extract cni-plugins
wget -O /app/cni-plugins-linux-amd64.tgz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/containernetworking/plugins/releases/download/v${PACKAGE_VERSION}/cni-plugins-linux-amd64-v${PACKAGE_VERSION}.tgz 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 tar xf cni-plugins-linux-amd64.tgz
# Process nfpm.yaml with envsubst
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
# Build the RPM # Build the RPM
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+8 -8
View File
@@ -1,17 +1,17 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: cni-plugins
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "Some reference and example networking plugins, maintained by the CNI team."
maintainer: ${PACKAGE_MAINTAINER} maintainer: ContainerNetworking
homepage: ${PACKAGE_HOMEPAGE} homepage: https://github.com/containernetworking/plugins
license: ${PACKAGE_LICENSE} license: Apache-2.0
disable_globbing: false disable_globbing: false
@@ -131,7 +131,7 @@ contents:
# Scripts to run during installation/removal (optional) # Scripts to run during installation/removal (optional)
scripts: scripts:
preinstall: /app/resources/scripts/preinstall.sh preinstall: ./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
-20
View File
@@ -1,20 +0,0 @@
name: code-server
github: coder/code-server
description: VS Code in the browser.
arch: amd64
platform: linux
maintainer: Coder
homepage: https://github.com/coder/code-server
license: MIT
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1
version: 4.117.0
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 4.117.0
-6
View File
@@ -1,6 +0,0 @@
#!/usr/bin/bash
set -e
curl -L -o /app/dist/code-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.x86_64.rpm \
https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/coder/code-server/releases/download/v${PACKAGE_VERSION}/code-server-${PACKAGE_VERSION}-amd64.rpm
-14
View File
@@ -1,14 +0,0 @@
# nfpm.yaml - unused, RPM is downloaded directly in build.sh
name: ${PACKAGE_NAME}
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH}
platform: ${PACKAGE_PLATFORM}
section: default
priority: extra
description: "${PACKAGE_DESCRIPTION}"
maintainer: ${PACKAGE_MAINTAINER}
homepage: ${PACKAGE_HOMEPAGE}
license: ${PACKAGE_LICENSE}
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+7 -20
View File
@@ -1,21 +1,8 @@
name: consul-cni name: consul-cni
github: unknown/consul-cni release: 1
description: Plugin for Consul on Kubernetes to allow configuring traffic redirection version: 1.7.1
rules without escalated container privileges. build:
arch: amd64 - distro: el/8
platform: linux image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
maintainer: Hashicorp - distro: el/9
homepage: https://hashicorp.com image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
license: Mozilla Public License, version 2.0
dist_tag: true
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 1.7.1
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 1.7.1
+3 -7
View File
@@ -1,15 +1,11 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Install dependencies # Install dependencies
dnf install -y unzip dnf install -y unzip
# Download and extract consul-cni # Download and extract consul-cni
curl -L -o /app/consul-cni.zip https://releases.hashicorp.com/consul-cni/${PACKAGE_VERSION}/consul-cni_${PACKAGE_VERSION}_linux_amd64.zip 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 unzip consul-cni.zip
# Process the nfpm.yaml template with environment variables # Build the RPM
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+8 -8
View File
@@ -1,16 +1,16 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: consul-cni
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "Plugin for Consul on Kubernetes to allow configuring traffic redirection rules without escalated container privileges."
maintainer: ${PACKAGE_MAINTAINER} maintainer: Hashicorp
homepage: ${PACKAGE_HOMEPAGE} homepage: https://hashicorp.com
license: ${PACKAGE_LICENSE} license: Mozilla Public License, version 2.0
disable_globbing: false disable_globbing: false
@@ -28,7 +28,7 @@ contents:
# Scripts to run during installation/removal (optional) # Scripts to run during installation/removal (optional)
scripts: scripts:
preinstall: /app/resources/scripts/preinstall.sh preinstall: ./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
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+5 -25
View File
@@ -1,28 +1,8 @@
name: consul name: consul
github: hashicorp/consul release: 1
description: Consul is a distributed, highly available, and data center aware solution version: 1.21.1
to connect and configure applications across dynamic, distributed infrastructure. build:
arch: amd64 - distro: el/8
platform: linux
maintainer: HashiCorp
homepage: https://github.com/hashicorp/consul
license: BUSL-1.1
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 - distro: el/9
version: 1.22.7
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 1.22.7
- repository:
- fedora/42
- fedora/43
- fedora/44
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 1.22.7
+2 -7
View File
@@ -1,16 +1,11 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Install dependencies # Install dependencies
dnf install -y unzip dnf install -y unzip
# Download and extract consul # Download and extract consul
curl -L -o /app/consul.zip https://releases.hashicorp.com/consul/${PACKAGE_VERSION}/consul_${PACKAGE_VERSION}_linux_amd64.zip curl -o /app/consul.zip https://releases.hashicorp.com/consul/${PACKAGE_VERSION}/consul_${PACKAGE_VERSION}_linux_amd64.zip
unzip consul.zip unzip consul.zip
# Process the nfpm.yaml template with environment variables
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
# Build the RPM # Build the RPM
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,17 +1,17 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: consul
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure."
maintainer: ${PACKAGE_MAINTAINER} maintainer: HashiCorp
homepage: ${PACKAGE_HOMEPAGE} homepage: https://github.com/hashicorp/consul
license: ${PACKAGE_LICENSE} license: BUSL-1.1
disable_globbing: false disable_globbing: false
+1
View File
@@ -0,0 +1 @@
2
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+6 -18
View File
@@ -1,21 +1,9 @@
name: etcd name: etcd
github: etcd-io/etcd release: 2
description: A distributed, reliable key-value store for the most critical data of version: 3.5.18
a distributed system. build:
arch: amd64 - distro: el/8
platform: linux
maintainer: https://etcd.io/
homepage: https://etcd.io/
license: Apache-2.0
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 - distro: el/9
version: 3.6.10
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 github: etcd-io/etcd
version: 3.6.10
+2 -6
View File
@@ -1,13 +1,9 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Download and extract etcd # Download and extract etcd
wget -O /app/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/etcd-io/etcd/releases/download/v${PACKAGE_VERSION}/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz 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 tar xf /app/etcd-v${PACKAGE_VERSION}-linux-amd64.tar.gz
mv /app/etcd-v${PACKAGE_VERSION}-linux-amd64/* /app/ mv /app/etcd-v${PACKAGE_VERSION}-linux-amd64/* /app/
# Process nfpm.yaml with envsubst
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
# Build the RPM # Build the RPM
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,17 +1,17 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: etcd
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "A distributed, reliable key-value store for the most critical data of a distributed system."
maintainer: ${PACKAGE_MAINTAINER} maintainer: https://etcd.io/
homepage: ${PACKAGE_HOMEPAGE} homepage: https://etcd.io/
license: ${PACKAGE_LICENSE} license: Apache-2.0
disable_globbing: false disable_globbing: false
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+5 -18
View File
@@ -1,21 +1,8 @@
name: exportarr name: exportarr
github: onedr0p/exportarr release: 1
description: AIO Prometheus Exporter for Sabnzbd, Bazarr, Prowlarr, Lidarr, Readarr, version: 2.2.0
Radarr, and Sonarr build:
arch: amd64 - distro: el/8
platform: linux
maintainer: onedr0p
homepage: https://github.com/onedr0p/exportarr
license: MIT license
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 - distro: el/9
version: 2.3.0
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 2.3.0
+2 -6
View File
@@ -1,10 +1,6 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Download the required files # Download the required files
curl --output - -L https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/onedr0p/exportarr/releases/download/v${PACKAGE_VERSION}/exportarr_${PACKAGE_VERSION}_linux_amd64.tar.gz | tar --strip-components=1 -xzf - 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 -
# Process nfpm.yaml with envsubst nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,16 +1,16 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: exportarr
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "AIO Prometheus Exporter for Sabnzbd, Bazarr, Prowlarr, Lidarr, Readarr, Radarr, and Sonarr"
maintainer: ${PACKAGE_MAINTAINER} maintainer: onedr0p
homepage: ${PACKAGE_HOMEPAGE} homepage: https://github.com/onedr0p/exportarr
license: ${PACKAGE_LICENSE} license: MIT license
disable_globbing: false disable_globbing: false
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
+6 -17
View File
@@ -1,20 +1,9 @@
name: frr_exporter name: frr_exporter
github: tynany/frr_exporter release: 1
description: Prometheus exporter for Free Range Routing version: 1.8.0
arch: amd64 build:
platform: linux - distro: el/8
maintainer: Prometheus
homepage: https://github.com/tynany/frr_exporter
license: MIT
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 - distro: el/9
version: 1.11.0
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 github: tynany/frr_exporter
version: 1.11.0
+2 -8
View File
@@ -1,9 +1,3 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e curl --output - -L https://github.com/tynany/frr_exporter/releases/download/v${PACKAGE_VERSION}/frr_exporter-${PACKAGE_VERSION}.linux-amd64.tar.gz | tar --strip-components=1 -xzf -
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
curl --output - -L https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/tynany/frr_exporter/releases/download/v${PACKAGE_VERSION}/frr_exporter-${PACKAGE_VERSION}.linux-amd64.tar.gz | tar --strip-components=1 -xzf -
# Process nfpm.yaml with envsubst
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,16 +1,16 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: frr_exporter
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "Prometheus exporter for Free Range Routing"
maintainer: ${PACKAGE_MAINTAINER} maintainer: Prometheus
homepage: ${PACKAGE_HOMEPAGE} homepage: https://github.com/tynany/frr_exporter
license: ${PACKAGE_LICENSE} license: MIT
disable_globbing: false disable_globbing: false
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+7 -18
View File
@@ -1,20 +1,9 @@
name: g10k 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 github: xorpaul/g10k
description: An r10k fork written in Go, designed to work somwhat similar like puppetlabs/r10k.
arch: amd64
platform: linux
maintainer: xorpaul
homepage: https://github.com/xorpaul/g10k
license: Apache2.0
dist_tag: true
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 0.9.10
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 0.9.10
+2 -6
View File
@@ -1,14 +1,10 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Download and extract g10k # Download and extract g10k
wget -O /app/g10k.zip https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/xorpaul/g10k/releases/download/v${PACKAGE_VERSION}/g10k-v${PACKAGE_VERSION}-linux-amd64.zip wget -O /app/g10k.zip https://github.com/xorpaul/g10k/releases/download/v${PACKAGE_VERSION}/g10k-v${PACKAGE_VERSION}-linux-amd64.zip
pushd /app pushd /app
unzip /app/g10k.zip unzip /app/g10k.zip
popd popd
# Process nfpm.yaml with envsubst
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
# Build the RPM # Build the RPM
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
+7 -7
View File
@@ -1,17 +1,17 @@
# nfpm.yaml # nfpm.yaml
name: ${PACKAGE_NAME} name: g10k
version: ${PACKAGE_VERSION} version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE} release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH} arch: amd64
platform: ${PACKAGE_PLATFORM} platform: linux
section: default section: default
priority: extra priority: extra
description: "${PACKAGE_DESCRIPTION}" description: "An r10k fork written in Go, designed to work somwhat similar like puppetlabs/r10k."
maintainer: ${PACKAGE_MAINTAINER} maintainer: xorpaul
homepage: ${PACKAGE_HOMEPAGE} homepage: https://github.com/xorpaul/g10k
license: ${PACKAGE_LICENSE} license: Apache2.0
disable_globbing: false disable_globbing: false
-20
View File
@@ -1,20 +0,0 @@
name: git-delta
github: dandavison/delta
description: A syntax-highlighting pager for git, diff, grep, and blame output.
arch: amd64
platform: linux
maintainer: dandavison
homepage: https://github.com/dandavison/delta
license: MIT
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1
version: 0.19.2
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 0.19.2
-12
View File
@@ -1,12 +0,0 @@
#!/usr/bin/bash
set -e
# Note: delta releases use plain version tags (no v prefix)
wget -O /app/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/dandavison/delta/releases/download/${PACKAGE_VERSION}/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl.tar.gz
tar xf /app/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl.tar.gz
mv /app/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl/delta /app/delta
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
-30
View File
@@ -1,30 +0,0 @@
# nfpm.yaml
name: ${PACKAGE_NAME}
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH}
platform: ${PACKAGE_PLATFORM}
section: default
priority: extra
description: "${PACKAGE_DESCRIPTION}"
maintainer: ${PACKAGE_MAINTAINER}
homepage: ${PACKAGE_HOMEPAGE}
license: ${PACKAGE_LICENSE}
disable_globbing: false
replaces:
- git-delta
provides:
- git-delta
contents:
- src: /app/delta
dst: /usr/bin/delta
file_info:
mode: 0755
owner: root
group: root
-21
View File
@@ -1,21 +0,0 @@
name: hadolint
github: hadolint/hadolint
description: A smarter Dockerfile linter that helps you build best practice Docker
images.
arch: amd64
platform: linux
maintainer: hadolint
homepage: https://github.com/hadolint/hadolint
license: GPL-3.0
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1
version: 2.14.0
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 2.14.0
-10
View File
@@ -1,10 +0,0 @@
#!/usr/bin/bash
set -e
wget -O /app/hadolint https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/hadolint/hadolint/releases/download/v${PACKAGE_VERSION}/hadolint-linux-x86_64
chmod +x /app/hadolint
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
-30
View File
@@ -1,30 +0,0 @@
# nfpm.yaml
name: ${PACKAGE_NAME}
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH}
platform: ${PACKAGE_PLATFORM}
section: default
priority: extra
description: "${PACKAGE_DESCRIPTION}"
maintainer: ${PACKAGE_MAINTAINER}
homepage: ${PACKAGE_HOMEPAGE}
license: ${PACKAGE_LICENSE}
disable_globbing: false
replaces:
- hadolint
provides:
- hadolint
contents:
- src: /app/hadolint
dst: /usr/bin/hadolint
file_info:
mode: 0755
owner: root
group: root
-20
View File
@@ -1,20 +0,0 @@
name: helm
github: helm/helm
description: The Kubernetes Package Manager
arch: amd64
platform: linux
maintainer: Helm Contributors
homepage: https://github.com/helm/helm
license: Apache-2.0 license
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1
version: 4.1.4
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 4.1.4
-18
View File
@@ -1,18 +0,0 @@
#!/usr/bin/bash
set -e
# Download the required files
curl -L -o /app/helm.tar.gz https://get.helm.sh/helm-v${PACKAGE_VERSION}-linux-amd64.tar.gz
# Extract the binary
cd /app
tar -xzf helm.tar.gz
# Make the binary executable
chmod +x /app/linux-amd64/helm
# Process the nfpm.yaml template with environment variables
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
-39
View File
@@ -1,39 +0,0 @@
---
# nfpm.yaml
name: ${PACKAGE_NAME}
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH}
platform: ${PACKAGE_PLATFORM}
section: default
priority: extra
description: "${PACKAGE_DESCRIPTION}"
maintainer: ${PACKAGE_MAINTAINER}
homepage: ${PACKAGE_HOMEPAGE}
license: ${PACKAGE_LICENSE}
disable_globbing: false
replaces:
- helm
provides:
- helm
# Files to include in the package
contents:
- src: /app/linux-amd64/helm
dst: /usr/bin/helm
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
-22
View File
@@ -1,22 +0,0 @@
name: helmfile
github: helmfile/helmfile
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.
arch: amd64
platform: linux
maintainer: Helmfile Contributors
homepage: https://github.com/helmfile/helmfile
license: MIT
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1
version: 1.4.4
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 1.4.4
-18
View File
@@ -1,18 +0,0 @@
#!/usr/bin/bash
set -e
# Download the required files
curl -L -o /app/helmfile.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/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
# Process the nfpm.yaml template with environment variables
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
-39
View File
@@ -1,39 +0,0 @@
---
# nfpm.yaml
name: ${PACKAGE_NAME}
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: ${PACKAGE_ARCH}
platform: ${PACKAGE_PLATFORM}
section: default
priority: extra
description: "${PACKAGE_DESCRIPTION}"
maintainer: ${PACKAGE_MAINTAINER}
homepage: ${PACKAGE_HOMEPAGE}
license: ${PACKAGE_LICENSE}
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
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+7 -13
View File
@@ -1,15 +1,9 @@
name: incus name: incus
github: lxc/incus release: 1
description: Powerful system container and virtual machine manager version: 6.10.1
arch: amd64 build:
platform: linux - distro: el/8
maintainer: unkin image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
homepage: https://linuxcontainers.org/incus/ - distro: el/9
license: Apache-2.0
dist_tag: true
builds:
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 github: lxc/incus
version: 6.23.0
+4 -6
View File
@@ -1,9 +1,7 @@
#!/usr/bin/bash #!/usr/bin/bash
set -e
# Install build dependencies # Install build dependencies
dnf makecache && dnf install -y \ dnf install -y \
unzip \ unzip \
libtool \ libtool \
autoconf \ autoconf \
@@ -26,14 +24,14 @@ dnf makecache && dnf install -y \
bash-completion \ bash-completion \
gettext \ gettext \
help2man \ help2man \
curl-minimal curl
# Download and extract incus source # Download and extract incus source
curl -L -o /app/incus.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/lxc/incus/archive/refs/tags/v${PACKAGE_VERSION}.tar.gz 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 tar -C /app -xf incus.tar.gz
# Install specific Go version # Install specific Go version
curl -L -O https://go.dev/dl/go1.24.1.linux-amd64.tar.gz curl -O https://go.dev/dl/go1.24.1.linux-amd64.tar.gz
rm -rf /usr/local/go rm -rf /usr/local/go
tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz
+4 -4
View File
@@ -92,7 +92,7 @@ contents:
# Scripts to run during installation/removal (optional) # Scripts to run during installation/removal (optional)
scripts: scripts:
postinstall: ./resources/scripts/postinstall.sh postinstall: ./scripts/postinstall.sh
preremove: ./resources/scripts/preremove.sh preremove: ./scripts/preremove.sh
postremove: ./resources/scripts/postremove.sh postremove: ./scripts/postremove.sh
preinstall: ./resources/scripts/preinstall.sh preinstall: ./scripts/preinstall.sh
Executable → Regular
View File
+1
View File
@@ -0,0 +1 @@
3
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh
+5 -17
View File
@@ -1,20 +1,8 @@
name: jellyfin-ffmpeg-bin name: jellyfin-ffmpeg-bin
github: jellyfin/jellyfin-ffmpeg release: 3
description: FFmpeg binary package optimized for Jellyfin media server version: 7.1.1
arch: amd64 build:
platform: linux - distro: el/8
maintainer: unkin
homepage: https://github.com/jellyfin/jellyfin-ffmpeg
license: GPL-3.0
dist_tag: false
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1.1 - distro: el/9
version: 7.1.3
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1.1
version: 7.1.3
+4 -7
View File
@@ -3,15 +3,12 @@
# Setup rpmbuild directory structure # Setup rpmbuild directory structure
mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# Process the spec file template with environment variables
envsubst < /app/resources/jellyfin-ffmpeg-bin.spec.template > /root/rpmbuild/SPECS/jellyfin-ffmpeg-bin.spec
# Download source files using spectool # Download source files using spectool
spectool -g -R /root/rpmbuild/SPECS/jellyfin-ffmpeg-bin.spec spectool -g -R /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec
# Build the RPM # Build the RPM
rpmbuild -ba /root/rpmbuild/SPECS/jellyfin-ffmpeg-bin.spec rpmbuild -ba /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec
# Copy the built RPMs to output directory # Copy the built RPMs to output directory
cp /root/rpmbuild/RPMS/x86_64/jellyfin-ffmpeg-bin-*.rpm /app/dist/ cp /root/rpmbuild/RPMS/x86_64/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist/
cp /root/rpmbuild/SRPMS/jellyfin-ffmpeg-bin-*.rpm /app/dist cp /root/rpmbuild/SRPMS/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist
@@ -1,20 +1,20 @@
%global debug_package %{nil} %global debug_package %{nil}
%define _missing_build_ids_terminate_build 0 %define _missing_build_ids_terminate_build 0
%global jellyfin_release 1 %global jellyfin_release 3
Name: ${PACKAGE_NAME} Name: jellyfin-ffmpeg-bin
Version: ${PACKAGE_VERSION} Version: 7.1.1
Release: ${PACKAGE_RELEASE} Release: %{jellyfin_release}
Summary: FFmpeg for Jellyfin with custom extensions and enhancements Summary: FFmpeg for Jellyfin with custom extensions and enhancements
License: GPL-3.0-only License: GPL-3.0-only
URL: https://github.com/jellyfin/jellyfin-ffmpeg URL: https://github.com/jellyfin/jellyfin-ffmpeg
Source0: https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${PACKAGE_VERSION}-1/jellyfin-ffmpeg_${PACKAGE_VERSION}-1_portable_linux64-gpl.tar.xz Source0: https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v%{version}-%{jellyfin_release}/jellyfin-ffmpeg_%{version}-%{jellyfin_release}_portable_linux64-gpl.tar.xz
Source1: https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${PACKAGE_VERSION}-1/jellyfin-ffmpeg_${PACKAGE_VERSION}-1_portable_linuxarm64-gpl.tar.xz Source1: https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v%{version}-%{jellyfin_release}/jellyfin-ffmpeg_%{version}-%{jellyfin_release}_portable_linuxarm64-gpl.tar.xz
Source2: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v${PACKAGE_VERSION}-1/LICENSE.md Source2: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v%{version}-%{jellyfin_release}/LICENSE.md
Source3: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v${PACKAGE_VERSION}-1/README.md Source3: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v%{version}-%{jellyfin_release}/README.md
ExclusiveArch: x86_64 aarch64 ExclusiveArch: x86_64 aarch64
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
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
# Default command to build RPMs
CMD /app/resources/build.sh

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