1 Commits

Author SHA1 Message Date
unkinben 519bbd6bb6 feat: add artifact management
Build / build (pull_request) Successful in 36s
- upload/download artifacts instead of building build and deploy jobs
- updated uv package with version in url
- add ruff/0.8.1 package
2024-12-01 17:03:26 +11:00
220 changed files with 156 additions and 5267 deletions
+5 -35
View File
@@ -2,25 +2,21 @@ name: Build
on: on:
pull_request: pull_request:
workflow_call:
workflow_dispatch:
jobs: jobs:
build-8: build:
runs-on: almalinux-8 runs-on: almalinux-8
container: container:
image: git.unkin.net/unkin/almalinux8-actionsdind:latest image: git.query.consul/unkin/almalinux8-runnerdnd:latest
options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro" options: --privileged
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 DISTRO=el/8 make all
- name: Show RPMs - name: Show RPMs
run: | run: |
@@ -29,31 +25,5 @@ jobs:
- name: Upload Artifacts - name: Upload Artifacts
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: rpms-8 name: rpms
path: /workspace/unkin/rpmbuilder/dist/*/*.rpm
build-9:
runs-on: almalinux-8
container:
image: git.unkin.net/unkin/almalinux9-actionsdind:latest
options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro"
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Build Packages
env:
VAULT_ROLE_ID: ${{ secrets.RPMBUILDER_VAULT_ROLEID }}
run: |
make all DISTRO=el/9
- 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 path: /workspace/unkin/rpmbuilder/dist/*/*.rpm
+12 -39
View File
@@ -4,25 +4,27 @@ on:
push: push:
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
deploy-8: build:
runs-on: almalinux-8 runs-on: almalinux-8
container: container:
image: git.unkin.net/unkin/almalinux8-actionsdind:latest image: git.query.consul/unkin/almalinux8-runnerdnd:latest
options: --privileged options: --privileged
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Download Artifacts - name: Create dist directory
run: | run: |
mkdir -p /workspace/unkin/rpmbuilder/dist/8 mkdir -p /workspace/unkin/rpmbuilder/dist
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" - name: Download Artifacts
unzip /workspace/rpms.zip -d /workspace/unkin/rpmbuilder/dist/8 uses: actions/download-artifact@v1
with:
name: rpms
path: /workspace/unkin/rpmbuilder/dist/
- name: Show RPMs - name: Show RPMs
run: | run: |
@@ -32,35 +34,6 @@ jobs:
env: env:
DRONECI_PASSWORD: ${{ secrets.DRONECI_PASSWORD }} DRONECI_PASSWORD: ${{ secrets.DRONECI_PASSWORD }}
run: | run: |
for rpm in $(find /workspace/unkin/rpmbuilder/dist/8 -type f -name "*.rpm"); do for rpm in $(find /workspace -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 curl --user droneci:${{ secrets.DRONECI_PASSWORD }} --upload-file $rpm https://git.query.consul/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 done
-2
View File
@@ -1,3 +1 @@
dist dist
env
.claude
-19
View File
@@ -1,19 +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
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
+38 -68
View File
@@ -1,85 +1,55 @@
# Variables # Variables
ROOT_DIR := $(PWD) ROOT_DIR := $(PWD)
BUILD_TOOL := $(ROOT_DIR)/tools/build RPMS_DIR := $(ROOT_DIR)/rpms
DISTRO ?= el/9 # Default to el/9 if not specified REPO_OPTIONS := --disablerepo=* --enablerepo=unkin
# Automatically find all packages with metadata.yaml # Automatically find all package/version directories
PACKAGES := $(shell find $(ROOT_DIR)/rpms -mindepth 1 -maxdepth 1 -type d -exec test -f {}/metadata.yaml \; -print | xargs -n1 basename | sort) PACKAGES := $(shell find $(RPMS_DIR) -mindepth 2 -maxdepth 2 -type d | sed "s|$(RPMS_DIR)/||")
# Default target to build all packages # Default target to build all packages and versions
.PHONY: all list build clean .PHONY: all list cache build clean
all: build-all all: cache $(PACKAGES)
# List all available packages
list: list:
@echo "Available packages:" @echo "$(PACKAGES)"
@for package in $(PACKAGES); do \
echo " $$package"; \
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) --all --distro $(DISTRO) dnf makecache
# Build specific package using Python tool # Build specific package/version
.PHONY: $(PACKAGES) .PHONY: $(PACKAGES)
$(PACKAGES): $(PACKAGES):
@echo "Building package: $@ for distro $(DISTRO)" @PACKAGE_NAME=$(shell echo $(@) | cut -d/ -f1) && \
$(BUILD_TOOL) --package $@ --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
# Build specific package with version/release override # Build target
build: build:
@if [ -z "$(PACKAGE_NAME)" ]; then \ @mkdir -p $(ROOT_DIR)/dist/$(PACKAGE_NAME)/
echo "Error: PACKAGE_NAME not specified"; \ @cd $(RPMS_DIR)/$(PACKAGE_NAME) && \
echo "Usage: make build PACKAGE_NAME=package [PACKAGE_VERSION=version] [PACKAGE_RELEASE=release]"; \ export PACKAGE_RELEASE=$$(cat $(PACKAGE_VERSION)/release) && \
exit 1; \ export PACKAGE_FULL_NAME=$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$$PACKAGE_RELEASE && \
fi echo "Checking repos for $$PACKAGE_FULL_NAME" && \
@if [ -n "$(PACKAGE_VERSION)" ] && [ -n "$(PACKAGE_RELEASE)" ]; then \ if dnf info $$PACKAGE_FULL_NAME $(REPO_OPTIONS) > /dev/null 2>&1; then \
echo "Building $(PACKAGE_NAME) with explicit version $(PACKAGE_VERSION)-$(PACKAGE_RELEASE) for distro $(DISTRO)"; \ echo "Skipping build for $(PACKAGE_NAME) version $(PACKAGE_VERSION) (already exists in the repository)"; \
$(BUILD_TOOL) --package $(PACKAGE_NAME) --version $(PACKAGE_VERSION) --release $(PACKAGE_RELEASE) --distro $(DISTRO); \ else \
else \ echo "Building RPM for $(PACKAGE_NAME) version $(PACKAGE_VERSION)"; \
echo "Building $(PACKAGE_NAME) using metadata.yaml for distro $(DISTRO)"; \ docker build \
$(BUILD_TOOL) --package $(PACKAGE_NAME) --distro $(DISTRO); \ --build-arg PACKAGE_VERSION=$(PACKAGE_VERSION) \
fi --build-arg PACKAGE_RELEASE=$${PACKAGE_RELEASE} \
-t $$(echo $(PACKAGE_NAME)-builder \
# Dry run - show what would be built without building | tr '[:upper:]' '[:lower:]') . && \
dry-run: docker create --name $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder \
@echo "Dry run - showing what would be built for distro $(DISTRO):" $$(echo $(PACKAGE_NAME)-builder | tr '[:upper:]' '[:lower:]') && \
$(BUILD_TOOL) --all --distro $(DISTRO) --dry-run 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 $*
# 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"
-8
View File
@@ -1,8 +0,0 @@
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
-3
View File
@@ -1,3 +0,0 @@
#!/usr/bin/bash
curl --output act_runner-linux-amd64 https://dl.gitea.com/act_runner/${PACKAGE_VERSION}/act_runner-${PACKAGE_VERSION}-linux-amd64
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-37
View File
@@ -1,37 +0,0 @@
# nfpm.yaml
name: act_runner
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A runner for Gitea based on act."
maintainer: Gitea
homepage: https://gitea.com/gitea/act_runner
license: MIT
disable_globbing: false
replaces:
- act_runner
provides:
- act_runner
# Files to include in the package
contents:
- src: /app/act_runner-linux-amd64
dst: /usr/bin/act_runner
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
-8
View File
@@ -1,8 +0,0 @@
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
-6
View File
@@ -1,6 +0,0 @@
#!/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
-37
View File
@@ -1,37 +0,0 @@
# nfpm.yaml
name: bind_exporter
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Prometheus exporter for BIND"
maintainer: Prometheus
homepage: https://github.com/prometheus-community/bind_exporter
license: Apache-2.0 license
disable_globbing: false
replaces:
- bind_exporter
provides:
- bind_exporter
# Files to include in the package
contents:
- src: /app/bind_exporter
dst: /usr/bin/bind_exporter
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
@@ -1,9 +0,0 @@
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
@@ -1,7 +0,0 @@
#!/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
-38
View File
@@ -1,38 +0,0 @@
# nfpm.yaml
name: boilerplate
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Boilerplate is a tool for generating files and folders (boilerplate) from a set of templates."
maintainer: Gruntwork
homepage: https://github.com/gruntwork-io/boilerplate
license: MIT
disable_globbing: false
replaces:
- boilerplate
provides:
- boilerplate
# Files to include in the package
contents:
- src: /app/boilerplate
dst: /usr/bin/boilerplate
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
@@ -1,9 +0,0 @@
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
@@ -1,8 +0,0 @@
#!/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
-137
View File
@@ -1,137 +0,0 @@
# nfpm.yaml
name: cni-plugins
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Some reference and example networking plugins, maintained by the CNI team."
maintainer: ContainerNetworking
homepage: https://github.com/containernetworking/plugins
license: Apache-2.0
disable_globbing: false
replaces:
- cni-plugins
# Files to include in the package
contents:
- src: /app/bandwidth
dst: /opt/cni/bin/bandwidth
file_info:
mode: 0755
owner: root
group: root
- src: /app/bridge
dst: /opt/cni/bin/bridge
file_info:
mode: 0755
owner: root
group: root
- src: /app/dhcp
dst: /opt/cni/bin/dhcp
file_info:
mode: 0755
owner: root
group: root
- src: /app/dummy
dst: /opt/cni/bin/dummy
file_info:
mode: 0755
owner: root
group: root
- src: /app/firewall
dst: /opt/cni/bin/firewall
file_info:
mode: 0755
owner: root
group: root
- src: /app/host-device
dst: /opt/cni/bin/host-device
file_info:
mode: 0755
owner: root
group: root
- src: /app/host-local
dst: /opt/cni/bin/host-local
file_info:
mode: 0755
owner: root
group: root
- src: /app/ipvlan
dst: /opt/cni/bin/ipvlan
file_info:
mode: 0755
owner: root
group: root
- src: /app/loopback
dst: /opt/cni/bin/loopback
file_info:
mode: 0755
owner: root
group: root
- src: /app/macvlan
dst: /opt/cni/bin/macvlan
file_info:
mode: 0755
owner: root
group: root
- src: /app/portmap
dst: /opt/cni/bin/portmap
file_info:
mode: 0755
owner: root
group: root
- src: /app/ptp
dst: /opt/cni/bin/ptp
file_info:
mode: 0755
owner: root
group: root
- src: /app/sbr
dst: /opt/cni/bin/sbr
file_info:
mode: 0755
owner: root
group: root
- src: /app/static
dst: /opt/cni/bin/static
file_info:
mode: 0755
owner: root
group: root
- src: /app/tap
dst: /opt/cni/bin/tap
file_info:
mode: 0755
owner: root
group: root
- src: /app/tuning
dst: /opt/cni/bin/tuning
file_info:
mode: 0755
owner: root
group: root
- src: /app/vlan
dst: /opt/cni/bin/vlan
file_info:
mode: 0755
owner: root
group: root
- src: /app/vrf
dst: /opt/cni/bin/vrf
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
scripts:
preinstall: /app/resources/scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
@@ -1,2 +0,0 @@
#!/usr/bin/env bash
mkdir -p /opt/cni/bin
-8
View File
@@ -1,8 +0,0 @@
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
@@ -1,11 +0,0 @@
#!/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
-34
View File
@@ -1,34 +0,0 @@
# nfpm.yaml
name: consul-cni
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Plugin for Consul on Kubernetes to allow configuring traffic redirection rules without escalated container privileges."
maintainer: Hashicorp
homepage: https://hashicorp.com
license: Mozilla Public License, version 2.0
disable_globbing: false
replaces:
- consul-cni
# Files to include in the package
contents:
- src: /app/consul-cni
dst: /opt/cni/bin/consul-cni
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
scripts:
preinstall: /app/resources/scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
@@ -1,2 +0,0 @@
#!/usr/bin/env bash
mkdir -p /opt/cni/bin
-8
View File
@@ -1,8 +0,0 @@
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
@@ -1,11 +0,0 @@
#!/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
-38
View File
@@ -1,38 +0,0 @@
# nfpm.yaml
name: consul
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure."
maintainer: HashiCorp
homepage: https://github.com/hashicorp/consul
license: BUSL-1.1
disable_globbing: false
replaces:
- consul
provides:
- consul
# Files to include in the package
contents:
- src: /app/consul
dst: /usr/bin/consul
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
@@ -1,9 +0,0 @@
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
@@ -1,9 +0,0 @@
#!/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
-47
View File
@@ -1,47 +0,0 @@
# nfpm.yaml
name: etcd
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A distributed, reliable key-value store for the most critical data of a distributed system."
maintainer: https://etcd.io/
homepage: https://etcd.io/
license: Apache-2.0
disable_globbing: false
replaces:
- etcd
- etcdctl
- etcdutl
provides:
- etcd
- etcdctl
- etcdutl
# Files to include in the package
contents:
- src: /app/etcd
dst: /usr/bin/etcd
file_info:
mode: 0755
owner: root
group: root
- src: /app/etcdctl
dst: /usr/bin/etcdctl
file_info:
mode: 0755
owner: root
group: root
- src: /app/etcdutl
dst: /usr/bin/etcdutl
file_info:
mode: 0755
owner: root
group: root
-8
View File
@@ -1,8 +0,0 @@
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
-6
View File
@@ -1,6 +0,0 @@
#!/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
-37
View File
@@ -1,37 +0,0 @@
# nfpm.yaml
name: exportarr
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "AIO Prometheus Exporter for Sabnzbd, Bazarr, Prowlarr, Lidarr, Readarr, Radarr, and Sonarr"
maintainer: onedr0p
homepage: https://github.com/onedr0p/exportarr
license: MIT license
disable_globbing: false
replaces:
- exportarr
provides:
- exportarr
# Files to include in the package
contents:
- src: /app/exportarr
dst: /usr/bin/exportarr
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
@@ -1,9 +0,0 @@
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
-3
View File
@@ -1,3 +0,0 @@
#!/usr/bin/bash
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
-37
View File
@@ -1,37 +0,0 @@
# nfpm.yaml
name: frr_exporter
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Prometheus exporter for Free Range Routing"
maintainer: Prometheus
homepage: https://github.com/tynany/frr_exporter
license: MIT
disable_globbing: false
replaces:
- frr_exporter
provides:
- frr_exporter
# Files to include in the package
contents:
- src: /app/frr_exporter
dst: /usr/bin/frr_exporter
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
@@ -1,9 +0,0 @@
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
@@ -1,10 +0,0 @@
#!/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
-38
View File
@@ -1,38 +0,0 @@
# nfpm.yaml
name: g10k
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "An r10k fork written in Go, designed to work somwhat similar like puppetlabs/r10k."
maintainer: xorpaul
homepage: https://github.com/xorpaul/g10k
license: Apache2.0
disable_globbing: false
replaces:
- g10k
provides:
- g10k
# Files to include in the package
contents:
- src: /app/g10k
dst: /usr/bin/g10k
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
@@ -1,9 +0,0 @@
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
@@ -1,14 +0,0 @@
#!/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
@@ -1,38 +0,0 @@
# 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
-9
View File
@@ -1,9 +0,0 @@
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
@@ -1,52 +0,0 @@
#!/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
@@ -1,15 +0,0 @@
[Unit]
Description=Incus - Instance startup
After=incus.socket incus.service
Requires=incus.socket
[Service]
Type=oneshot
ExecStart=/usr/libexec/incus/incusd activateifneeded
ExecStop=/usr/libexec/incus/shutdown
TimeoutStartSec=600s
TimeoutStopSec=600s
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
-11
View File
@@ -1,11 +0,0 @@
[Unit]
Description=Incus - User daemon
After=incus-user.socket incus.service
Requires=incus-user.socket
[Service]
ExecStart=/usr/libexec/incus/incus-user --group incus
Restart=on-failure
[Install]
Also=incus-user.socket
-11
View File
@@ -1,11 +0,0 @@
[Unit]
Description=Incus - Daemon (user unix socket)
[Socket]
ListenStream=/run/incus/unix.socket.user
SocketGroup=incus
SocketMode=0660
Service=incus-user.service
[Install]
WantedBy=sockets.target
-21
View File
@@ -1,21 +0,0 @@
[Unit]
Description=Incus - Daemon
After=network-online.target openvswitch-switch.service lxcfs.service incus.socket
Requires=network-online.target lxcfs.service incus.socket
[Service]
Environment=INCUS_OVMF_PATH=/usr/share/edk2/ovmf
Environment=INCUS_SOCKET=/run/incus/unix.socket
ExecStart=/usr/libexec/incus/incusd --group incus-admin
ExecStartPost=/usr/libexec/incus/incusd waitready --timeout=600
KillMode=process
TimeoutStartSec=600s
TimeoutStopSec=30s
Restart=on-failure
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
TasksMax=infinity
[Install]
Also=incus-startup.service incus.socket
-11
View File
@@ -1,11 +0,0 @@
[Unit]
Description=Incus - Daemon (unix socket)
[Socket]
ListenStream=/run/incus/unix.socket
SocketGroup=incus-admin
SocketMode=0660
Service=incus.service
[Install]
WantedBy=sockets.target
@@ -1,38 +0,0 @@
# nfpm_incus-client.yaml
name: incus-client
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Powerful system container and virtual machine manager."
maintainer: Incus
homepage: https://github.com/lxc/incus
license: Apache-2.0
disable_globbing: false
replaces:
- incus-client
recommends:
- incus-tools
# Files to include in the package
contents:
- src: /root/go/bin/incus
dst: /usr/bin/incus
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
# scripts:
# postinstall: ./scripts/postinstall.sh
# postremove: ./scripts/postremove.sh
# preinstall: ./scripts/preinstall.sh
# preremove: ./scripts/preremove.sh
@@ -1,59 +0,0 @@
# nfpm_incus-tools.yaml
name: incus-tools
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Powerful system container and virtual machine manager."
maintainer: Incus
homepage: https://github.com/lxc/incus
license: Apache-2.0
disable_globbing: false
replaces:
- incus-tools
# Files to include in the package
contents:
- src: /root/go/bin/incus-benchmark
dst: /usr/bin/incus-benchmark
file_info:
mode: 0755
owner: root
group: root
- src: /root/go/bin/incus-migrate
dst: /usr/bin/incus-migrate
file_info:
mode: 0755
owner: root
group: root
- src: /root/go/bin/incus-agent
dst: /usr/bin/incus-agent
file_info:
mode: 0755
owner: root
group: root
- src: /root/go/bin/lxc-to-incus
dst: /usr/bin/lxc-to-incus
file_info:
mode: 0755
owner: root
group: root
- src: /root/go/bin/lxd-to-incus
dst: /usr/bin/lxd-to-incus
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
# scripts:
# postinstall: ./scripts/postinstall.sh
# postremove: ./scripts/postremove.sh
# preinstall: ./scripts/preinstall.sh
# preremove: ./scripts/preremove.sh
-98
View File
@@ -1,98 +0,0 @@
# nfpm_incus.yaml
name: incus
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Powerful system container and virtual machine manager."
maintainer: Incus
homepage: https://github.com/lxc/incus
license: Apache-2.0
disable_globbing: false
replaces:
- incus
depends:
- incus-client
- lxcfs
- cowsql
- raft
recommends:
- incus-tools
# Files to include in the package
contents:
- src: /root/go/bin/incusd
dst: /usr/libexec/incus/incusd
file_info:
mode: 0755
owner: root
group: root
- src: /root/go/bin/incus-user
dst: /usr/libexec/incus/incus-user
file_info:
mode: 0755
owner: root
group: root
- src: /app/resources/shutdown
dst: /usr/libexec/incus/shutdown
file_info:
mode: 0755
owner: root
group: root
- src: /app/resources/incus.service
dst: /usr/lib/systemd/system/incus.service
file_info:
mode: 0644
owner: root
group: root
- src: /app/resources/incus.socket
dst: /usr/lib/systemd/system/incus.socket
file_info:
mode: 0644
owner: root
group: root
- src: /app/resources/incus-user.service
dst: /usr/lib/systemd/system/incus-user.service
file_info:
mode: 0644
owner: root
group: root
- src: /app/resources/incus-user.socket
dst: /usr/lib/systemd/system/incus-user.socket
file_info:
mode: 0644
owner: root
group: root
- src: /app/resources/incus-startup.service
dst: /usr/lib/systemd/system/incus-startup.service
file_info:
mode: 0644
owner: root
group: root
- src: /app/resources/sysusers.d.incus.conf
dst: /usr/lib/sysusers.d/incus.conf
file_info:
mode: 0644
owner: root
group: root
- src: /app/resources/tmpfiles.d.incus.conf
dst: /usr/lib/tmpfiles.d/incus.conf
file_info:
mode: 0644
owner: root
group: root
# Scripts to run during installation/removal (optional)
scripts:
postinstall: ./scripts/postinstall.sh
preremove: ./scripts/preremove.sh
postremove: ./scripts/postremove.sh
preinstall: ./scripts/preinstall.sh
@@ -1,2 +0,0 @@
#!/usr/bin/env bash
systemctl daemon-reload
@@ -1,5 +0,0 @@
#!/usr/bin/env bash
systemctl daemon-reload
rm -rf /usr/libexec/incus
groupdel incus-admin
groupdel incus
@@ -1,4 +0,0 @@
#!/usr/bin/env bash
mkdir -p /usr/libexec/incus/
groupadd --system incus-admin
groupadd --system incus
@@ -1,6 +0,0 @@
#!/usr/bin/env bash
systemctl stop incus.service
systemctl stop incus.socket
systemctl stop incus-user.service
systemctl stop incus-user.socket
systemctl stop incus-startup.service
-7
View File
@@ -1,7 +0,0 @@
#!/usr/bin/sh
if ! systemctl -q is-active incus.service; then
exit 0
fi
exec /usr/lib/incus/incusd shutdown
@@ -1,2 +0,0 @@
g incus-admin -
g incus -
@@ -1,4 +0,0 @@
d /var/cache/incus 0700 root root - -
d /var/log/incus 0700 root root - -
d /var/lib/incus 0711 root root - -
d /run/incus 0711 root root - -
-8
View File
@@ -1,8 +0,0 @@
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
@@ -1,14 +0,0 @@
#!/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,65 +0,0 @@
%global debug_package %{nil}
%define _missing_build_ids_terminate_build 0
%global jellyfin_release 3
Name: jellyfin-ffmpeg-bin
Version: 7.1.1
Release: %{jellyfin_release}
Summary: FFmpeg for Jellyfin with custom extensions and enhancements
License: GPL-3.0-only
URL: https://github.com/jellyfin/jellyfin-ffmpeg
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%{version}-%{jellyfin_release}/jellyfin-ffmpeg_%{version}-%{jellyfin_release}_portable_linuxarm64-gpl.tar.xz
Source2: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v%{version}-%{jellyfin_release}/LICENSE.md
Source3: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v%{version}-%{jellyfin_release}/README.md
ExclusiveArch: x86_64 aarch64
Requires: glibc >= 2.23
Recommends: intel-media-driver
Recommends: intel-mediasdk
Recommends: oneVPL-intel-gpu
Recommends: intel-compute-runtime
Recommends: libva-intel-driver
Recommends: mesa-va-drivers
Recommends: rocm-opencl
Recommends: mesa-vulkan-drivers
Conflicts: jellyfin-ffmpeg
%description
%{summary}.
%prep
%ifarch x86_64
%setup -c -b 0
%endif
%ifarch aarch64
%setup -c -b 1
%endif
cp %{SOURCE2} "%{_builddir}/%{name}-%{version}/"
cp %{SOURCE3} "%{_builddir}/%{name}-%{version}/"
%install
install -D --mode=755 ffmpeg "%{buildroot}%{_exec_prefix}/lib/jellyfin-ffmpeg/ffmpeg"
install -D --mode=755 ffprobe "%{buildroot}%{_exec_prefix}/lib/jellyfin-ffmpeg/ffprobe"
%files
%license LICENSE.md
%doc README.md
%{_exec_prefix}/lib/jellyfin-ffmpeg/ffmpeg
%{_exec_prefix}/lib/jellyfin-ffmpeg/ffprobe
-8
View File
@@ -1,8 +0,0 @@
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
@@ -1,21 +0,0 @@
#!/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,11 +0,0 @@
--- a/debian/conf/jellyfin.service
+++ b/debian/conf/jellyfin.service
@@ -4,7 +4,7 @@ After = network-online.target
[Service]
Type = simple
-EnvironmentFile = /etc/default/jellyfin
+EnvironmentFile = /etc/jellyfin/jellyfin.env
User = jellyfin
Group = jellyfin
WorkingDirectory = /var/lib/jellyfin
@@ -1,127 +0,0 @@
%global debug_package %{nil}
%global jellyfin_version 10.10.7
%global jellyfin_packaging_timestamp 202504051515
%global jellyfin_packaging_version %{jellyfin_version}-%{jellyfin_packaging_timestamp}
%global dotnet_runtime %( \
if [ "%{_arch}" = "x86_64" ]; then \
echo -n "linux-x64"; \
elif [ "%{_arch}" = "aarch64" ]; then \
echo -n "linux-arm64"; \
else \
echo "Unsupported architecture: %{_arch}"; \
exit 1; \
fi \
)
Name: jellyfin-server
Version: %{jellyfin_version}
Release: 1
Summary: The Free Software Media System - Server Backend & API
License: GPL-2.0-or-later
URL: https://github.com/jellyfin/jellyfin
Source0: https://github.com/jellyfin/jellyfin/archive/refs/tags/v%{version}.tar.gz
Source1: https://github.com/jellyfin/jellyfin-packaging/archive/refs/tags/v%{jellyfin_packaging_version}.tar.gz
Source2: tmpfiles.conf
Patch0: fix-envfile-path.patch
ExclusiveArch: x86_64 aarch64
BuildRequires: dotnet-sdk-8.0
BuildRequires: git
BuildRequires: systemd-rpm-macros
Requires: aspnetcore-runtime-8.0
Requires: bash
Requires: fontconfig
Requires: jellyfin-ffmpeg-bin
Requires: sqlite
Recommends: jellyfin-web
Recommends: google-noto-fonts-common
%description
%{summary}.
%prep
tar --extract --file="%{SOURCE1}" --directory="%{_builddir}"
pushd %{_builddir}/jellyfin-packaging-%{jellyfin_packaging_version}
patch -p1 -i "%{PATCH0}"
popd
%setup -q -n jellyfin-%{version}
%build
DOTNET_CLI_TELEMETRY_OPTOUT=1 \
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \
DOTNET_NOLOGO=1 \
dotnet \
publish \
Jellyfin.Server \
--configuration Release \
--output builddir \
--self-contained false \
--runtime %{dotnet_runtime} \
-p:DebugSymbols=false \
-p:DebugType=none
%install
install --directory "%{buildroot}%{_libdir}"
cp --recursive builddir "%{buildroot}%{_libdir}/jellyfin"
install --directory "%{buildroot}%{_bindir}"
ln --symbolic --force "%{_libdir}/jellyfin/jellyfin" "%{buildroot}%{_bindir}/jellyfin"
pushd %{_builddir}/jellyfin-packaging-%{jellyfin_packaging_version}/debian/conf
install -D --mode=644 jellyfin.service "%{buildroot}%{_unitdir}/jellyfin.service"
install -D --mode=640 jellyfin "%{buildroot}%{_sysconfdir}/jellyfin/jellyfin.env"
popd
install -D --mode=0644 "%{SOURCE2}" "%{buildroot}%{_tmpfilesdir}/jellyfin.conf"
install --directory --mode=750 "%{buildroot}%{_localstatedir}/cache/jellyfin"
install --directory --mode=750 "%{buildroot}%{_sharedstatedir}/jellyfin"
find %{buildroot}
%files
%license LICENSE
%{_bindir}/jellyfin
%{_libdir}/jellyfin
%{_tmpfilesdir}/jellyfin.conf
%{_unitdir}/jellyfin.service
%defattr(640,jellyfin,jellyfin,750)
%dir %{_localstatedir}/cache/jellyfin
%dir %{_sharedstatedir}/jellyfin
%dir %{_sysconfdir}/jellyfin
%config(noreplace) %{_sysconfdir}/jellyfin/jellyfin.env
%pre
getent group jellyfin > /dev/null || groupadd --system jellyfin
getent passwd jellyfin > /dev/null || \
useradd --system --home-dir "%{_sharedstatedir}/jellyfin" --gid jellyfin \
-s /sbin/nologin -c "jellyfin daemon" jellyfin
exit 0
%post
%systemd_post jellyfin.service
%preun
%systemd_preun jellyfin.service
%postun
%systemd_postun jellyfin.service
@@ -1 +0,0 @@
d /var/log/jellyfin 0750 jellyfin jellyfin
-8
View File
@@ -1,8 +0,0 @@
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
@@ -1,18 +0,0 @@
#!/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/
@@ -1,43 +0,0 @@
%global jellyfin_version 10.10.7
Name: jellyfin-web
Version: %{jellyfin_version}
Release: 1
Summary: The Free Software Media System - Official Web Client
License: GPL-2.0-or-later
URL: https://github.com/jellyfin/jellyfin-web
Source0: https://github.com/jellyfin/jellyfin-web/archive/refs/tags/v%{version}.tar.gz
BuildArch: noarch
BuildRequires: git
BuildRequires: nodejs
BuildRequires: npm
%description
%{summary}.
%prep
%setup -q -n jellyfin-web-%{version}
%build
SKIP_PREPARE=1 npm ci --no-audit --no-fund --no-update-notifier
npm run build:production
%install
install --directory "%{buildroot}%{_datadir}/jellyfin/web"
cp --recursive dist/* "%{buildroot}%{_datadir}/jellyfin/web"
%files
%license LICENSE
%{_datadir}/jellyfin/web
@@ -1,9 +0,0 @@
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
@@ -1,10 +0,0 @@
#!/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
@@ -1,38 +0,0 @@
# 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
@@ -1,9 +0,0 @@
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
@@ -1,19 +0,0 @@
#!/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
@@ -1,30 +0,0 @@
# 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
@@ -1,9 +0,0 @@
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
@@ -1,20 +0,0 @@
#!/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
@@ -1,36 +0,0 @@
# 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
@@ -1,9 +0,0 @@
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
@@ -1,10 +0,0 @@
#!/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
@@ -1,36 +0,0 @@
# 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
@@ -1,4 +0,0 @@
#!/usr/bin/env bash
# Update the dynamic linker cache to include the new library
ldconfig
-9
View File
@@ -1,9 +0,0 @@
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
@@ -1,7 +0,0 @@
#!/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
-38
View File
@@ -1,38 +0,0 @@
# nfpm.yaml
name: nfpm
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A zero dependencies, simple deb, rpm, apk, ipk, and arch linux packager written in Go."
maintainer: GoReleaser
homepage: https://nfpm.goreleaser.com/
license: MIT
disable_globbing: false
replaces:
- nfpm
provides:
- nfpm
# Files to include in the package
contents:
- src: /app/nfpm
dst: /usr/bin/nfpm
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
-8
View File
@@ -1,8 +0,0 @@
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
-6
View File
@@ -1,6 +0,0 @@
#!/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
-37
View File
@@ -1,37 +0,0 @@
# nfpm.yaml
name: node_exporter
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "exporter for machine metrics"
maintainer: Prometheus
homepage: https://github.com/prometheus/node_exporter
license: Apache-2.0 license
disable_globbing: false
replaces:
- node_exporter
provides:
- node_exporter
# Files to include in the package
contents:
- src: /app/node_exporter
dst: /usr/bin/node_exporter
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
-8
View File
@@ -1,8 +0,0 @@
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
@@ -1,11 +0,0 @@
#!/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
-35
View File
@@ -1,35 +0,0 @@
# nfpm.yaml
name: nomad-autoscaler
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "The Nomad Autoscaler is an autoscaling daemon for Nomad, architectured around plug-ins to allow for easy extensibility in terms of supported metrics sources, scaling targets and scaling algorithms."
maintainer: Hashicorp
homepage: https://github.com/hashicorp/nomad-autoscaler
license: Mozilla Public License, version 2.0
disable_globbing: false
replaces:
- nomad-autoscaler
# Files to include in the package
contents:
- src: /app/nomad-autoscaler
dst: /usr/bin/nomad-autoscaler
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
-8
View File
@@ -1,8 +0,0 @@
name: nomad
release: 1
version: 1.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
-11
View File
@@ -1,11 +0,0 @@
#!/usr/bin/bash
# Install dependencies
dnf install -y unzip
# Download and extract nomad
curl -o /app/nomad.zip https://releases.hashicorp.com/nomad/${PACKAGE_VERSION}/nomad_${PACKAGE_VERSION}_linux_amd64.zip
unzip nomad.zip
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-38
View File
@@ -1,38 +0,0 @@
# nfpm.yaml
name: nomad
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A simple and flexible scheduler and orchestrator to deploy and manage containers and non-containerized applications across on-premises and clouds at scale."
maintainer: HashiCorp
homepage: https://www.nomadproject.io/
license: BUSL-1.1
disable_globbing: false
replaces:
- nomad
provides:
- nomad
# Files to include in the package
contents:
- src: /app/nomad
dst: /usr/bin/nomad
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
@@ -1,9 +0,0 @@
name: nzbget
release: 1
version: '25.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: nzbgetcom/nzbget
-5
View File
@@ -1,5 +0,0 @@
#!/usr/bin/bash
# Download the pre-built RPM from GitHub releases
curl -o /app/dist/nzbget-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.x86_64.rpm \
https://github.com/nzbgetcom/nzbget/releases/download/v$PACKAGE_VERSION/nzbget-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.x86_64.rpm
-38
View File
@@ -1,38 +0,0 @@
# nfpm.yaml
name: nzbget
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "NZBGet is a binary downloader, which downloads files from Usenet based-on information given in nzb files."
maintainer: nzbgetcom
homepage: https://github.com/nzbgetcom/nzbget
license: GPL-2.0
disable_globbing: false
replaces:
- nzbget
provides:
- nzbget
# Files to include in the package
contents:
- src: /app/nzbget
dst: /usr/bin/nzbget
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
@@ -1,9 +0,0 @@
name: nzbget_exporter
release: 1
version: 2025.08.03
github: frebib/nzbget-exporter
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
@@ -1,10 +0,0 @@
#!/usr/bin/bash
cd /app
git clone https://github.com/frebib/nzbget-exporter.git
go install github.com/frebib/enumerx@latest
cp /root/go/bin/enumerx /usr/local/bin/
pushd /app/nzbget-exporter
go generate
go build -o ../nzbget_exporter
popd
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-37
View File
@@ -1,37 +0,0 @@
# nfpm.yaml
name: nzbget_exporter
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Prometheus exporter for NZBGet"
maintainer: Prometheus
homepage: https://github.com/frebib/nzbget-exporter
license: MIT
disable_globbing: false
replaces:
- nzbget_exporter
provides:
- nzbget_exporter
# Files to include in the package
contents:
- src: /app/nzbget_exporter
dst: /usr/bin/nzbget_exporter
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,9 +0,0 @@
name: openbao-plugin-secret-consul
release: 1
version: 0.1.0
github: openbao/openbao-plugins
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest

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