7 Commits

Author SHA1 Message Date
unkinben 13af3aeedf feat: dist_tag boolean for distro-aware release strings
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build-fedora43 Pipeline was successful
ci/woodpecker/pr/build-fedora42 Pipeline was successful
ci/woodpecker/pr/build-fedora44 Pipeline was successful
ci/woodpecker/pr/build-almalinux9 Pipeline failed
ci/woodpecker/pr/build-almalinux8 Pipeline failed
Adds a per-package dist_tag: true/false metadata flag (default false).
When enabled the build tool appends the RPM dist tag to the release
at build time so each distro produces a unique version in the Gitea
package registry:

  release: 1  +  almalinux/el9  ->  PACKAGE_RELEASE=1.el9
  release: 1  +  fedora/43      ->  PACKAGE_RELEASE=1.fc43

This ensures Gitea package existence checks don't confuse packages built
for one distro with those built for another (the original bug).

Changes:
- Add effective_release() and get_rpm_dist_tag() helpers
- Revert the broken files-endpoint check from the previous commit;
  dist disambiguation is now handled purely via the release string
- discover_packages and build_single both compute the effective release
  before constructing PackageInfo
- check_package_exists simplified back to a single version-level check
- dist_tag added to METADATA_SCHEMA and PackageMetadata dataclass
- All 69 metadata.yaml files updated with dist_tag: true
- Exclude jellyfin from dist_tags
2026-05-17 12:01:52 +10:00
unkinben 3de605d321 feat: add HTTP sessions and retry logic for Gitea/GitHub API calls
Creates two module-level requests.Session objects (_gitea_session,
_github_session) with an HTTPAdapter backed by urllib3 Retry:
- 3 retries with 0.5s exponential backoff
- retries on 429, 500, 502, 503, 504 and connection errors
- GET-only to avoid unsafe retries

Benefits:
- TCP connections are pooled and reused across all package checks,
  including concurrent builds in ThreadPoolExecutor
- Transient network blips no longer cause spurious rebuilds
- Per-request timeouts tightened to 10s (Gitea) / 15s (GitHub)
  so failures surface quickly and the retry budget is actually useful
2026-05-17 10:38:07 +10:00
unkinben 9ca3340f10 fix: make package existence check distro-aware
check_package_exists was only checking name+version+release, so an
almalinux package already in Gitea would cause fedora builds to be
skipped incorrectly.

Now passes the target distro from PackageInfo through to
check_package_exists, which maps it to an RPM dist suffix (.el9,
.fc43, etc.) and queries the Gitea package files endpoint to confirm
a distro-specific file exists before skipping the build.

Also adds fedora/42, fedora/43, fedora/44 to the allowed repository
values in the metadata schema.
2026-05-17 01:37:25 +10:00
unkinben 96d0e25e94 feat: update pipelines (#160)
ci/woodpecker/push/deploy-fedora44 Pipeline failed
ci/woodpecker/push/deploy-fedora43 Pipeline was successful
ci/woodpecker/push/deploy-almalinux9 Pipeline was successful
ci/woodpecker/push/deploy-fedora42 Pipeline was successful
ci/woodpecker/push/deploy-almalinux8 Pipeline was successful
- remove buildah (now in image)
- add fedora42/fedora43/fedora44 pipelines

Reviewed-on: #160
2026-05-16 23:36:13 +10:00
unkinben a61bcb9d60 feat: add kubecolor (#159)
ci/woodpecker/push/deploy-almalinux8 Pipeline was successful
ci/woodpecker/push/deploy-almalinux9 Pipeline was successful
- quality of life rpm for colorizing kubernetes

Reviewed-on: #159
2026-05-14 23:29:16 +10:00
unkinben 17ce4eb2cf feat: update incus to 6.23.0 (#151)
ci/woodpecker/push/deploy-almalinux8 Pipeline was successful
ci/woodpecker/push/deploy-almalinux9 Pipeline was successful
Automated version bump: 6.20.0 → 6.23.0

Reviewed-on: #151
2026-05-02 17:18:31 +10:00
unkinben 24bba58dfd feat: update per workflow resources (#158)
ci/woodpecker/push/deploy-almalinux8 Pipeline was successful
ci/woodpecker/push/deploy-almalinux9 Pipeline was successful
trying to avoid contention, where all jobs end up on one host causing
timeouts

- ensure build jobs requests/limits are more specific

Reviewed-on: #158
2026-05-02 17:10:04 +10:00
85 changed files with 847 additions and 308 deletions
+7 -1
View File
@@ -7,12 +7,18 @@ steps:
commands: commands:
- mkdir -p /woodpecker/rpms - mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace - ln -s /woodpecker/rpms /workspace
- dnf install buildah -y
- ./tools/build build-all --distro almalinux/el8 --buildah - ./tools/build build-all --distro almalinux/el8 --buildah
privileged: true privileged: true
backend_options: backend_options:
kubernetes: kubernetes:
serviceAccountName: default serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show rpms - name: show rpms
image: git.unkin.net/unkin/almalinux8-base:latest image: git.unkin.net/unkin/almalinux8-base:latest
+7 -1
View File
@@ -7,12 +7,18 @@ steps:
commands: commands:
- mkdir -p /woodpecker/rpms - mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace - ln -s /woodpecker/rpms /workspace
- dnf install buildah -y
- ./tools/build build-all --distro almalinux/el9 --buildah - ./tools/build build-all --distro almalinux/el9 --buildah
privileged: true privileged: true
backend_options: backend_options:
kubernetes: kubernetes:
serviceAccountName: default serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show rpms - name: show rpms
image: git.unkin.net/unkin/almalinux9-base:latest image: git.unkin.net/unkin/almalinux9-base:latest
+26
View File
@@ -0,0 +1,26 @@
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
@@ -0,0 +1,26 @@
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
@@ -0,0 +1,26 @@
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"
+14 -1
View File
@@ -8,12 +8,18 @@ steps:
commands: commands:
- mkdir -p /woodpecker/rpms - mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace - ln -s /woodpecker/rpms /workspace
- dnf install buildah -y
- ./tools/build build-all --distro almalinux/el8 --buildah - ./tools/build build-all --distro almalinux/el8 --buildah
privileged: true privileged: true
backend_options: backend_options:
kubernetes: kubernetes:
serviceAccountName: default serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show-rpms - name: show-rpms
image: git.unkin.net/unkin/almalinux9-base:latest image: git.unkin.net/unkin/almalinux9-base:latest
@@ -34,4 +40,11 @@ steps:
backend_options: backend_options:
kubernetes: kubernetes:
serviceAccountName: default serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms] depends_on: [build-rpms, show-rpms]
+14 -1
View File
@@ -8,12 +8,18 @@ steps:
commands: commands:
- mkdir -p /woodpecker/rpms - mkdir -p /woodpecker/rpms
- ln -s /woodpecker/rpms /workspace - ln -s /woodpecker/rpms /workspace
- dnf install buildah -y
- ./tools/build build-all --distro almalinux/el9 --buildah - ./tools/build build-all --distro almalinux/el9 --buildah
privileged: true privileged: true
backend_options: backend_options:
kubernetes: kubernetes:
serviceAccountName: default serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: show-rpms - name: show-rpms
image: git.unkin.net/unkin/almalinux9-base:latest image: git.unkin.net/unkin/almalinux9-base:latest
@@ -34,4 +40,11 @@ steps:
backend_options: backend_options:
kubernetes: kubernetes:
serviceAccountName: default serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms] depends_on: [build-rpms, show-rpms]
+50
View File
@@ -0,0 +1,50 @@
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:
- |
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
curl --user droneci:$${DRONECI_PASSWORD} --upload-file $rpm https://git.unkin.net/api/packages/unkin/rpm/fedora/42/upload
done
environment:
DRONECI_PASSWORD:
from_secret: DRONECI_PASSWORD
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
+50
View File
@@ -0,0 +1,50 @@
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:
- |
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
curl --user droneci:$${DRONECI_PASSWORD} --upload-file $rpm https://git.unkin.net/api/packages/unkin/rpm/fedora/43/upload
done
environment:
DRONECI_PASSWORD:
from_secret: DRONECI_PASSWORD
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
+50
View File
@@ -0,0 +1,50 @@
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:
- |
for rpm in $(find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"); do
curl --user droneci:$${DRONECI_PASSWORD} --upload-file $rpm https://git.unkin.net/api/packages/unkin/rpm/fedora/44/upload
done
environment:
DRONECI_PASSWORD:
from_secret: DRONECI_PASSWORD
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
depends_on: [build-rpms, show-rpms]
+17 -15
View File
@@ -1,18 +1,20 @@
--- name: act_runner
arch: amd64
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
description: A runner for Gitea based on act.
github: unknown/act_runner github: unknown/act_runner
description: A runner for Gitea based on act.
arch: amd64
platform: linux
maintainer: Gitea
homepage: https://gitea.com/gitea/act_runner homepage: https://gitea.com/gitea/act_runner
license: MIT license: MIT
maintainer: Gitea dist_tag: true
name: act_runner builds:
platform: linux - 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
+17 -15
View File
@@ -1,18 +1,20 @@
--- name: bind_exporter
arch: amd64
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
description: Prometheus exporter for BIND
github: prometheus-community/bind_exporter github: prometheus-community/bind_exporter
description: Prometheus exporter for BIND
arch: amd64
platform: linux
maintainer: Prometheus
homepage: https://github.com/prometheus-community/bind_exporter homepage: https://github.com/prometheus-community/bind_exporter
license: Apache-2.0 license license: Apache-2.0 license
maintainer: Prometheus dist_tag: true
name: bind_exporter builds:
platform: linux - 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
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: Gruntwork maintainer: Gruntwork
homepage: https://github.com/gruntwork-io/boilerplate homepage: https://github.com/gruntwork-io/boilerplate
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+7 -6
View File
@@ -1,4 +1,11 @@
name: claude-code
description: Claude Code - Anthropic's agentic AI coding tool
arch: amd64 arch: amd64
platform: linux
maintainer: Anthropic
homepage: https://claude.ai/code
license: Proprietary
dist_tag: true
builds: builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 release: 1
@@ -11,9 +18,3 @@ builds:
- almalinux/el9 - almalinux/el9
version: 2.1.126 version: 2.1.126
claude_ai: true claude_ai: true
description: Claude Code - Anthropic's agentic AI coding tool
homepage: https://claude.ai/code
license: Proprietary
maintainer: Anthropic
name: claude-code
platform: linux
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: ContainerNetworking maintainer: ContainerNetworking
homepage: https://github.com/containernetworking/plugins homepage: https://github.com/containernetworking/plugins
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1 -1
View File
@@ -1,4 +1,3 @@
---
name: code-server name: code-server
github: coder/code-server github: coder/code-server
description: VS Code in the browser. description: VS Code in the browser.
@@ -7,6 +6,7 @@ platform: linux
maintainer: Coder maintainer: Coder
homepage: https://github.com/coder/code-server homepage: https://github.com/coder/code-server
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+18 -15
View File
@@ -1,18 +1,21 @@
--- name: consul-cni
arch: amd64
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
description: Plugin for Consul on Kubernetes to allow configuring traffic redirection rules without escalated container privileges.
github: unknown/consul-cni github: unknown/consul-cni
description: Plugin for Consul on Kubernetes to allow configuring traffic redirection
rules without escalated container privileges.
arch: amd64
platform: linux
maintainer: Hashicorp
homepage: https://hashicorp.com homepage: https://hashicorp.com
license: Mozilla Public License, version 2.0 license: Mozilla Public License, version 2.0
maintainer: Hashicorp dist_tag: true
name: consul-cni builds:
platform: linux - 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
+8
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: HashiCorp maintainer: HashiCorp
homepage: https://github.com/hashicorp/consul homepage: https://github.com/hashicorp/consul
license: BUSL-1.1 license: BUSL-1.1
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
@@ -18,3 +19,10 @@ builds:
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 1.22.7 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
+3 -2
View File
@@ -7,14 +7,15 @@ platform: linux
maintainer: https://etcd.io/ maintainer: https://etcd.io/
homepage: https://etcd.io/ homepage: https://etcd.io/
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 release: 1
version: 3.6.10 version: 3.6.7
- repository: - repository:
- almalinux/el9 - almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 3.6.10 version: 3.6.7
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: onedr0p maintainer: onedr0p
homepage: https://github.com/onedr0p/exportarr homepage: https://github.com/onedr0p/exportarr
license: MIT license license: MIT license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Prometheus maintainer: Prometheus
homepage: https://github.com/tynany/frr_exporter homepage: https://github.com/tynany/frr_exporter
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+17 -15
View File
@@ -1,18 +1,20 @@
--- name: g10k
arch: amd64
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
description: An r10k fork written in Go, designed to work somwhat similar like puppetlabs/r10k.
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 homepage: https://github.com/xorpaul/g10k
license: Apache2.0 license: Apache2.0
maintainer: xorpaul dist_tag: true
name: g10k builds:
platform: linux - 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
+1 -1
View File
@@ -1,4 +1,3 @@
---
name: git-delta name: git-delta
github: dandavison/delta github: dandavison/delta
description: A syntax-highlighting pager for git, diff, grep, and blame output. description: A syntax-highlighting pager for git, diff, grep, and blame output.
@@ -7,6 +6,7 @@ platform: linux
maintainer: dandavison maintainer: dandavison
homepage: https://github.com/dandavison/delta homepage: https://github.com/dandavison/delta
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+3 -2
View File
@@ -1,12 +1,13 @@
---
name: hadolint name: hadolint
github: hadolint/hadolint github: hadolint/hadolint
description: A smarter Dockerfile linter that helps you build best practice Docker images. description: A smarter Dockerfile linter that helps you build best practice Docker
images.
arch: amd64 arch: amd64
platform: linux platform: linux
maintainer: hadolint maintainer: hadolint
homepage: https://github.com/hadolint/hadolint homepage: https://github.com/hadolint/hadolint
license: GPL-3.0 license: GPL-3.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Helm Contributors maintainer: Helm Contributors
homepage: https://github.com/helm/helm homepage: https://github.com/helm/helm
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -8,6 +8,7 @@ platform: linux
maintainer: Helmfile Contributors maintainer: Helmfile Contributors
homepage: https://github.com/helmfile/helmfile homepage: https://github.com/helmfile/helmfile
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+2 -1
View File
@@ -6,9 +6,10 @@ platform: linux
maintainer: unkin maintainer: unkin
homepage: https://linuxcontainers.org/incus/ homepage: https://linuxcontainers.org/incus/
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el9 - almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 6.20.0 version: 6.23.0
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: unkin maintainer: unkin
homepage: https://github.com/jellyfin/jellyfin-ffmpeg homepage: https://github.com/jellyfin/jellyfin-ffmpeg
license: GPL-3.0 license: GPL-3.0
dist_tag: false
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+14 -12
View File
@@ -1,13 +1,15 @@
---
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 10.10.7
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 10.10.7
description: jellyfin-server package
github: unknown/jellyfin-server
name: jellyfin-server name: jellyfin-server
github: unknown/jellyfin-server
description: jellyfin-server package
dist_tag: false
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 10.10.7
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 10.10.7
+14 -12
View File
@@ -1,13 +1,15 @@
---
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 10.10.7
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 10.10.7
description: jellyfin-web package
github: unknown/jellyfin-web
name: jellyfin-web name: jellyfin-web
github: unknown/jellyfin-web
description: jellyfin-web package
dist_tag: false
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 10.10.7
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 10.10.7
+9 -8
View File
@@ -1,4 +1,13 @@
name: jsonnet-language-server
github: grafana/jsonnet-language-server
description: Jsonnet Language Server Protocol implementation for the Jsonnet templating
language.
arch: amd64 arch: amd64
platform: linux
maintainer: Grafana Labs
homepage: https://github.com/grafana/jsonnet-language-server
license: Apache-2.0
dist_tag: true
builds: builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 release: 1
@@ -10,11 +19,3 @@ builds:
repository: repository:
- almalinux/el9 - almalinux/el9
version: 0.17.0 version: 0.17.0
description: Jsonnet Language Server Protocol implementation for the Jsonnet templating
language.
github: grafana/jsonnet-language-server
homepage: https://github.com/grafana/jsonnet-language-server
license: Apache-2.0
maintainer: Grafana Labs
name: jsonnet-language-server
platform: linux
+8 -7
View File
@@ -1,4 +1,12 @@
name: jsonnet-lint
github: google/go-jsonnet
description: Linter for Jsonnet
arch: amd64 arch: amd64
platform: linux
maintainer: Google
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
dist_tag: true
builds: builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 release: 1
@@ -10,10 +18,3 @@ builds:
repository: repository:
- almalinux/el9 - almalinux/el9
version: 0.22.0 version: 0.22.0
description: Linter for Jsonnet
github: google/go-jsonnet
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
maintainer: Google
name: jsonnet-lint
platform: linux
+8 -7
View File
@@ -1,4 +1,12 @@
name: jsonnet
github: google/go-jsonnet
description: A data templating language
arch: amd64 arch: amd64
platform: linux
maintainer: Google
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
dist_tag: true
builds: builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 release: 1
@@ -10,10 +18,3 @@ builds:
repository: repository:
- almalinux/el9 - almalinux/el9
version: 0.22.0 version: 0.22.0
description: A data templating language
github: google/go-jsonnet
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
maintainer: Google
name: jsonnet
platform: linux
+20
View File
@@ -0,0 +1,20 @@
name: kubecolor
github: kubecolor/kubecolor
description: Colorize your kubectl output
arch: amd64
platform: linux
maintainer: kubecolor
homepage: https://github.com/kubecolor/kubecolor
license: Apache-2.0
dist_tag: true
builds:
- repository:
- almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1
version: 0.6.0
- repository:
- almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 0.6.0
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/bash
set -e
wget -O /app/kubecolor_${PACKAGE_VERSION}_linux_amd64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/kubecolor/kubecolor/releases/download/v${PACKAGE_VERSION}/kubecolor_${PACKAGE_VERSION}_linux_amd64.tar.gz
tar xf /app/kubecolor_${PACKAGE_VERSION}_linux_amd64.tar.gz -C /app/ kubecolor
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
+30
View File
@@ -0,0 +1,30 @@
# 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:
- kubecolor
provides:
- kubecolor
contents:
- src: /app/kubecolor
dst: /usr/bin/kubecolor
file_info:
mode: 0755
owner: root
group: root
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Yann Hamon maintainer: Yann Hamon
homepage: https://github.com/yannh/kubeconform homepage: https://github.com/yannh/kubeconform
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1 -1
View File
@@ -1,4 +1,3 @@
---
name: kubectx name: kubectx
github: ahmetb/kubectx github: ahmetb/kubectx
description: Faster way to switch between clusters and namespaces in kubectl. description: Faster way to switch between clusters and namespaces in kubectl.
@@ -7,6 +6,7 @@ platform: linux
maintainer: ahmetb maintainer: ahmetb
homepage: https://github.com/ahmetb/kubectx homepage: https://github.com/ahmetb/kubectx
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+11 -9
View File
@@ -1,4 +1,3 @@
---
name: kustomize name: kustomize
github: kubernetes-sigs/kustomize github: kubernetes-sigs/kustomize
description: Kubernetes native configuration management description: Kubernetes native configuration management
@@ -7,13 +6,16 @@ platform: linux
maintainer: kubernetes-sigs maintainer: kubernetes-sigs
homepage: https://github.com/kubernetes-sigs/kustomize homepage: https://github.com/kubernetes-sigs/kustomize
license: Apache-2.0 license: Apache-2.0
dist_tag: true
github_release_pattern: ^kustomize/v.* github_release_pattern: ^kustomize/v.*
builds: builds:
- repository: [almalinux/el8] - repository:
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest - almalinux/el8
release: '1' image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
version: 5.8.1 release: '1'
- repository: [almalinux/el9] version: 5.8.1
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest - repository:
release: '1' - almalinux/el9
version: 5.8.1 image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
version: 5.8.1
+1 -1
View File
@@ -1,4 +1,3 @@
---
name: lazydocker name: lazydocker
github: jesseduffield/lazydocker github: jesseduffield/lazydocker
description: The lazier way to manage everything docker. description: The lazier way to manage everything docker.
@@ -7,6 +6,7 @@ platform: linux
maintainer: jesseduffield maintainer: jesseduffield
homepage: https://github.com/jesseduffield/lazydocker homepage: https://github.com/jesseduffield/lazydocker
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+17 -15
View File
@@ -1,18 +1,20 @@
--- name: libfoundationdb
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 7.3.71
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 7.3.71
description: FoundationDB client library - Shared library for FoundationDB applications
github: apple/foundationdb github: apple/foundationdb
description: FoundationDB client library - Shared library for FoundationDB applications
arch: amd64
platform: linux
maintainer: FoundationDB Community
homepage: https://github.com/apple/foundationdb homepage: https://github.com/apple/foundationdb
license: Apache-2.0 license: Apache-2.0
maintainer: FoundationDB Community dist_tag: true
name: libfoundationdb builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 7.3.71
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 7.3.71
+3 -2
View File
@@ -1,12 +1,13 @@
---
name: neovim-glibc-2.17 name: neovim-glibc-2.17
github: neovim/neovim-releases github: neovim/neovim-releases
description: Vim-fork focused on extensibility and usability (glibc 2.17 compatible build). description: Vim-fork focused on extensibility and usability (glibc 2.17 compatible
build).
arch: amd64 arch: amd64
platform: linux platform: linux
maintainer: neovim maintainer: neovim
homepage: https://neovim.io homepage: https://neovim.io
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1 -1
View File
@@ -1,4 +1,3 @@
---
name: neovim name: neovim
github: neovim/neovim github: neovim/neovim
description: Vim-fork focused on extensibility and usability. description: Vim-fork focused on extensibility and usability.
@@ -7,6 +6,7 @@ platform: linux
maintainer: neovim maintainer: neovim
homepage: https://neovim.io homepage: https://neovim.io
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+8
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: GoReleaser maintainer: GoReleaser
homepage: https://nfpm.goreleaser.com/ homepage: https://nfpm.goreleaser.com/
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
@@ -18,3 +19,10 @@ builds:
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 2.46.3 version: 2.46.3
- repository:
- fedora/42
- fedora/43
- fedora/44
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 2.46.3
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Prometheus maintainer: Prometheus
homepage: https://github.com/prometheus/node_exporter homepage: https://github.com/prometheus/node_exporter
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -8,6 +8,7 @@ platform: linux
maintainer: Hashicorp maintainer: Hashicorp
homepage: https://github.com/hashicorp/nomad-autoscaler homepage: https://github.com/hashicorp/nomad-autoscaler
license: Mozilla Public License, version 2.0 license: Mozilla Public License, version 2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+18 -15
View File
@@ -1,18 +1,21 @@
--- name: nomad
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 1.10.1
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 1.10.1
description: A simple and flexible scheduler and orchestrator to deploy and manage containers and non-containerized applications across on-premises and clouds at scale.
github: unknown/nomad github: unknown/nomad
description: A simple and flexible scheduler and orchestrator to deploy and manage
containers and non-containerized applications across on-premises and clouds at scale.
arch: amd64
platform: linux
maintainer: HashiCorp
homepage: https://www.nomadproject.io/ homepage: https://www.nomadproject.io/
license: BUSL-1.1 license: BUSL-1.1
maintainer: HashiCorp dist_tag: true
name: nomad builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 1.10.1
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 1.10.1
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: nzbgetcom maintainer: nzbgetcom
homepage: https://github.com/nzbgetcom/nzbget homepage: https://github.com/nzbgetcom/nzbget
license: GPL-2.0 license: GPL-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+17 -15
View File
@@ -1,18 +1,20 @@
--- name: nzbget_exporter
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 2025.08.03
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 2025.08.03
description: Prometheus exporter for NZBGet
github: frebib/nzbget-exporter github: frebib/nzbget-exporter
description: Prometheus exporter for NZBGet
arch: amd64
platform: linux
maintainer: Prometheus
homepage: https://github.com/frebib/nzbget-exporter homepage: https://github.com/frebib/nzbget-exporter
license: MIT license: MIT
maintainer: Prometheus dist_tag: true
name: nzbget_exporter builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 2025.08.03
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 2025.08.03
@@ -1,12 +1,13 @@
name: openbao-plugin-secret-consul name: openbao-plugin-secret-consul
github: openbao/openbao-plugins github: openbao/openbao-plugins
github_release_pattern: "^secrets-consul-v.*"
description: OpenBao secrets engine plugin for HashiCorp Consul description: OpenBao secrets engine plugin for HashiCorp Consul
arch: amd64 arch: amd64
platform: linux platform: linux
maintainer: OpenBao Community maintainer: OpenBao Community
homepage: https://github.com/openbao/openbao-plugins homepage: https://github.com/openbao/openbao-plugins
license: MPL-2.0 license: MPL-2.0
dist_tag: true
github_release_pattern: ^secrets-consul-v.*
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
@@ -1,12 +1,13 @@
name: openbao-plugin-secret-nomad name: openbao-plugin-secret-nomad
github: openbao/openbao-plugins github: openbao/openbao-plugins
github_release_pattern: "^secrets-nomad-v.*"
description: OpenBao secrets engine plugin for HashiCorp Nomad description: OpenBao secrets engine plugin for HashiCorp Nomad
arch: amd64 arch: amd64
platform: linux platform: linux
maintainer: OpenBao Community maintainer: OpenBao Community
homepage: https://github.com/openbao/openbao-plugins homepage: https://github.com/openbao/openbao-plugins
license: MPL-2.0 license: MPL-2.0
dist_tag: true
github_release_pattern: ^secrets-nomad-v.*
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: OpenBao Community maintainer: OpenBao Community
homepage: https://github.com/openbao/openbao-plugins homepage: https://github.com/openbao/openbao-plugins
license: MPL-2.0 license: MPL-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: HashiCorp maintainer: HashiCorp
homepage: https://www.packer.io/ homepage: https://www.packer.io/
license: BUSL-1.1 license: BUSL-1.1
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+8 -7
View File
@@ -1,4 +1,12 @@
name: pgbouncer_exporter
github: prometheus-community/pgbouncer_exporter
description: Prometheus exporter for PgBouncer
arch: amd64 arch: amd64
platform: linux
maintainer: Prometheus
homepage: https://github.com/prometheus-community/pgbouncer_exporter
license: Apache-2.0 license
dist_tag: true
builds: builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 release: 1
@@ -10,10 +18,3 @@ builds:
repository: repository:
- almalinux/el9 - almalinux/el9
version: 0.12.0 version: 0.12.0
description: Prometheus exporter for PgBouncer
github: prometheus-community/pgbouncer_exporter
homepage: https://github.com/prometheus-community/pgbouncer_exporter
license: Apache-2.0 license
maintainer: Prometheus
name: pgbouncer_exporter
platform: linux
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Prometheus maintainer: Prometheus
homepage: https://github.com/prometheus-community/postgres_exporter homepage: https://github.com/prometheus-community/postgres_exporter
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+17 -15
View File
@@ -1,17 +1,19 @@
---
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 1.0.3
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 1.0.3
description: A script and service to initialise puppet for the unkin environmnet.
github: unknown/puppet-initial
license: MIT
maintainer: UNKIN
name: puppet-initial name: puppet-initial
github: unknown/puppet-initial
description: A script and service to initialise puppet for the unkin environmnet.
arch: amd64
platform: linux platform: linux
maintainer: UNKIN
license: MIT
dist_tag: true
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 1.0.3
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 1.0.3
+17 -15
View File
@@ -1,18 +1,20 @@
--- name: puppetdb_exporter
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 1.1.0
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 1.1.0
description: Prometheus exporter for PuppetDB
github: camptocamp/prometheus-puppetdb-exporter github: camptocamp/prometheus-puppetdb-exporter
description: Prometheus exporter for PuppetDB
arch: amd64
platform: linux
maintainer: Comptocamp
homepage: https://github.com/camptocamp/prometheus-puppetdb-exporter homepage: https://github.com/camptocamp/prometheus-puppetdb-exporter
license: Apache 2.0 License license: Apache 2.0 License
maintainer: Comptocamp dist_tag: true
name: puppetdb_exporter builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 1.1.0
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 1.1.0
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Astral.sh maintainer: Astral.sh
homepage: https://docs.astral.sh/ruff/ homepage: https://docs.astral.sh/ruff/
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1 -1
View File
@@ -1,4 +1,3 @@
---
name: sops name: sops
github: getsops/sops github: getsops/sops
description: Simple and flexible tool for managing secrets. description: Simple and flexible tool for managing secrets.
@@ -7,6 +6,7 @@ platform: linux
maintainer: getsops maintainer: getsops
homepage: https://github.com/getsops/sops homepage: https://github.com/getsops/sops
license: MPL-2.0 license: MPL-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Stalwart Labs maintainer: Stalwart Labs
homepage: https://stalw.art homepage: https://stalw.art
license: AGPL-3.0 license: AGPL-3.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: Stalwart Labs maintainer: Stalwart Labs
homepage: https://stalw.art homepage: https://stalw.art
license: AGPL-3.0 license: AGPL-3.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: Stalwart Labs maintainer: Stalwart Labs
homepage: https://stalw.art homepage: https://stalw.art
license: AGPL-3.0 license: AGPL-3.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: starship maintainer: starship
homepage: https://starship.rs homepage: https://starship.rs
license: ISC license: ISC
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1 -1
View File
@@ -1,4 +1,3 @@
---
name: stern name: stern
github: stern/stern github: stern/stern
description: Multi pod and container log tailing for Kubernetes. description: Multi pod and container log tailing for Kubernetes.
@@ -7,6 +6,7 @@ platform: linux
maintainer: stern maintainer: stern
homepage: https://github.com/stern/stern homepage: https://github.com/stern/stern
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+8 -1
View File
@@ -1,4 +1,3 @@
---
name: tea name: tea
github: unknown/tea github: unknown/tea
description: The official CLI for Gitea. description: The official CLI for Gitea.
@@ -7,6 +6,7 @@ platform: linux
maintainer: Gitea maintainer: Gitea
homepage: https://gitea.com/gitea/tea homepage: https://gitea.com/gitea/tea
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
@@ -18,3 +18,10 @@ builds:
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 0.14.0 version: 0.14.0
- repository:
- fedora/42
- fedora/43
- fedora/44
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 0.14.0
+1
View File
@@ -9,6 +9,7 @@ platform: linux
maintainer: HashiCorp maintainer: HashiCorp
homepage: https://terraform.io/ homepage: https://terraform.io/
license: BUSL-1.1 license: BUSL-1.1
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: Gruntwork maintainer: Gruntwork
homepage: https://github.com/gruntwork-io/terragrunt homepage: https://github.com/gruntwork-io/terragrunt
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: Terraform Linters maintainer: Terraform Linters
homepage: https://github.com/terraform-linters/tflint homepage: https://github.com/terraform-linters/tflint
license: MPL-2.0 license: MPL-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+24 -15
View File
@@ -1,18 +1,27 @@
--- name: unkin-ca-certificates
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 2025.07.13
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 2025.07.13
description: ca-certificates for the unkin site
github: unknown/unkin-ca-certificates github: unknown/unkin-ca-certificates
description: ca-certificates for the unkin site
arch: amd64
platform: linux
maintainer: Unkin
homepage: https://vault.query.consul:8200 homepage: https://vault.query.consul:8200
license: Apache-2.0 license: Apache-2.0
maintainer: Unkin dist_tag: true
name: unkin-ca-certificates builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 2025.07.13
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 2025.07.13
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- fedora/42
- fedora/43
- fedora/44
version: 2025.07.13
+17 -15
View File
@@ -1,18 +1,20 @@
--- name: unkin-undionly-kpxe
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 20250712.0.2
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 20250712.0.2
description: iPXE network bootloader
github: ipxe/ipxe github: ipxe/ipxe
description: iPXE network bootloader
arch: amd64
platform: linux
maintainer: iPXE
homepage: https://github.com/ipxe/ipxe homepage: https://github.com/ipxe/ipxe
license: GPL-2.0 license license: GPL-2.0 license
maintainer: iPXE dist_tag: true
name: unkin-undionly-kpxe builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 20250712.0.2
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 20250712.0.2
+19 -15
View File
@@ -1,18 +1,22 @@
--- name: unrar
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: '7.20'
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: '7.20'
description: WinRAR is a powerful archive manager. It can backup your data and reduce the size of email attachments, open and unpack RAR, ZIP and other files downloaded from Internet, create new archives in RAR and ZIP file format.
github: unknown/unrar github: unknown/unrar
description: WinRAR is a powerful archive manager. It can backup your data and reduce
the size of email attachments, open and unpack RAR, ZIP and other files downloaded
from Internet, create new archives in RAR and ZIP file format.
arch: amd64
platform: linux
maintainer: RARLAB
homepage: https://www.rarlab.com/ homepage: https://www.rarlab.com/
license: Freeware (UNRAR 7.11 freeware Copyright (c) 1993-2025 Alexander Roshal) license: Freeware (UNRAR 7.11 freeware Copyright (c) 1993-2025 Alexander Roshal)
maintainer: RARLAB dist_tag: true
name: unrar builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: '7.20'
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: '7.20'
+10 -2
View File
@@ -6,14 +6,22 @@ platform: linux
maintainer: Astral.sh maintainer: Astral.sh
homepage: https://docs.astral.sh/uv/ homepage: https://docs.astral.sh/uv/
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: 1 release: 1
version: 0.11.8 version: 0.11.14
- repository: - repository:
- almalinux/el9 - almalinux/el9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 0.11.8 version: 0.11.14
- repository:
- fedora/42
- fedora/43
- fedora/44
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 0.11.14
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: Helmfile Contributors maintainer: Helmfile Contributors
homepage: https://github.com/helmfile/vals homepage: https://github.com/helmfile/vals
license: Apache-2.0 license: Apache-2.0
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+8
View File
@@ -9,6 +9,7 @@ platform: linux
maintainer: HashiCorp maintainer: HashiCorp
homepage: https://github.com/hashicorp/vault homepage: https://github.com/hashicorp/vault
license: BUSL-1.1 license: BUSL-1.1
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
@@ -20,3 +21,10 @@ builds:
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 2.0.0 version: 2.0.0
- repository:
- fedora/42
- fedora/43
- fedora/44
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 2.0.0
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaLogs homepage: https://github.com/VictoriaMetrics/VictoriaLogs
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaLogs homepage: https://github.com/VictoriaMetrics/VictoriaLogs
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -6,6 +6,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+1
View File
@@ -7,6 +7,7 @@ platform: linux
maintainer: VictoriaMetrics maintainer: VictoriaMetrics
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
license: Apache-2.0 license license: Apache-2.0 license
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
+25 -15
View File
@@ -1,18 +1,28 @@
--- name: xh
arch: amd64
builds:
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository: [almalinux/el8]
version: 0.25.3
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository: [almalinux/el9]
version: 0.25.3
description: A friendly and fast tool for sending HTTP requests (HTTPie reimplementation in Rust)
github: ducaale/xh github: ducaale/xh
description: A friendly and fast tool for sending HTTP requests (HTTPie reimplementation
in Rust)
arch: amd64
platform: linux
maintainer: ducaale
homepage: https://github.com/ducaale/xh homepage: https://github.com/ducaale/xh
license: MIT license: MIT
maintainer: ducaale dist_tag: true
name: xh builds:
platform: linux - image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
release: '1'
repository:
- almalinux/el8
version: 0.25.3
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: '1'
repository:
- almalinux/el9
version: 0.25.3
- repository:
- fedora/42
- fedora/43
- fedora/44
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 0.25.3
+10 -2
View File
@@ -1,12 +1,13 @@
---
name: yq name: yq
github: mikefarah/yq github: mikefarah/yq
description: yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor. description: yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties
processor.
arch: amd64 arch: amd64
platform: linux platform: linux
maintainer: mikefarah maintainer: mikefarah
homepage: https://github.com/mikefarah/yq homepage: https://github.com/mikefarah/yq
license: MIT license: MIT
dist_tag: true
builds: builds:
- repository: - repository:
- almalinux/el8 - almalinux/el8
@@ -18,3 +19,10 @@ builds:
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1 release: 1
version: 4.53.2 version: 4.53.2
- repository:
- fedora/42
- fedora/43
- fedora/44
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
release: 1
version: 4.53.2
+93 -20
View File
@@ -23,6 +23,8 @@ import sys
import logging import logging
import subprocess import subprocess
import requests import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
from pathlib import Path from pathlib import Path
from typing import List, Optional from typing import List, Optional
from concurrent.futures import ThreadPoolExecutor, as_completed from concurrent.futures import ThreadPoolExecutor, as_completed
@@ -33,6 +35,36 @@ import yaml
from cerberus import Validator from cerberus import Validator
# ==================== HTTP SESSIONS ====================
def _make_session(retries: int = 3, backoff_factor: float = 0.5) -> requests.Session:
"""
Build a requests Session that retries on transient failures.
Retries up to `retries` times on connection errors, read timeouts, and
5xx / 429 responses, with exponential backoff (0s, 0.5s, 1s, 2s …).
Only GET requests are retried to stay safe.
"""
session = requests.Session()
retry = Retry(
total=retries,
backoff_factor=backoff_factor,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["GET"],
raise_on_status=False,
)
adapter = HTTPAdapter(max_retries=retry)
session.mount("https://", adapter)
session.mount("http://", adapter)
return session
# Shared sessions — one per upstream so connections are pooled and reused
# across all package checks (including parallel builds in ThreadPoolExecutor).
# requests.Session is thread-safe for concurrent requests.
_gitea_session = _make_session()
_github_session = _make_session()
# ==================== VALIDATION SCHEMA ==================== # ==================== VALIDATION SCHEMA ====================
# Cerberus schema for metadata.yaml validation based on PackageMetadata and Build dataclasses # Cerberus schema for metadata.yaml validation based on PackageMetadata and Build dataclasses
@@ -81,6 +113,11 @@ METADATA_SCHEMA = {
'required': False, 'required': False,
'empty': False 'empty': False
}, },
'dist_tag': {
'type': 'boolean',
'required': False,
'default': False
},
'builds': { 'builds': {
'type': 'list', 'type': 'list',
'required': True, 'required': True,
@@ -94,7 +131,7 @@ METADATA_SCHEMA = {
'minlength': 1, 'minlength': 1,
'schema': { 'schema': {
'type': 'string', 'type': 'string',
'allowed': ['almalinux/el8', 'almalinux/el9'], 'allowed': ['almalinux/el8', 'almalinux/el9', 'fedora/42', 'fedora/43', 'fedora/44'],
'empty': False 'empty': False
} }
}, },
@@ -146,6 +183,7 @@ class PackageMetadata:
maintainer: str = "" maintainer: str = ""
homepage: str = "" homepage: str = ""
license: str = "" license: str = ""
dist_tag: bool = False
builds: List[Build] = None builds: List[Build] = None
def __post_init__(self): def __post_init__(self):
@@ -274,15 +312,14 @@ def get_github_latest_release(repo: str) -> Optional[dict]:
try: try:
github_token = get_github_token() github_token = get_github_token()
_github_session.headers.update({
'Authorization': f'token {github_token}',
'Accept': 'application/vnd.github.v3+json',
})
url = f"https://api.github.com/repos/{repo}/releases/latest" url = f"https://api.github.com/repos/{repo}/releases/latest"
headers = {
'Authorization': f'token {github_token}',
'Accept': 'application/vnd.github.v3+json'
}
logger.debug(f"Checking GitHub releases: {url}") logger.debug(f"Checking GitHub releases: {url}")
response = requests.get(url, headers=headers, timeout=30) response = _github_session.get(url, timeout=15)
if response.status_code == 200: if response.status_code == 200:
release = response.json() release = response.json()
@@ -389,15 +426,14 @@ def get_github_releases_by_pattern(repo: str, pattern: str) -> Optional[dict]:
try: try:
github_token = get_github_token() github_token = get_github_token()
_github_session.headers.update({
'Authorization': f'token {github_token}',
'Accept': 'application/vnd.github.v3+json',
})
url = f"https://api.github.com/repos/{repo}/releases" url = f"https://api.github.com/repos/{repo}/releases"
headers = {
'Authorization': f'token {github_token}',
'Accept': 'application/vnd.github.v3+json'
}
logger.debug(f"Checking GitHub releases with pattern '{pattern}': {url}") logger.debug(f"Checking GitHub releases with pattern '{pattern}': {url}")
response = requests.get(url, headers=headers, timeout=30) response = _github_session.get(url, timeout=15)
if response.status_code == 200: if response.status_code == 200:
releases = response.json() releases = response.json()
@@ -504,14 +540,45 @@ def normalize_version(version: str) -> str:
return ''.join(normalized_parts) return ''.join(normalized_parts)
def get_rpm_dist_tag(distro: str) -> str:
"""
Map a distro path to its RPM dist tag string.
Examples:
'almalinux/el9' -> 'el9'
'fedora/43' -> 'fc43'
"""
if distro.startswith('almalinux/'):
return distro.split('/', 1)[1]
if distro.startswith('fedora/'):
return 'fc' + distro.split('/', 1)[1]
return ''
def effective_release(base_release: str, distro: str, use_dist_tag: bool) -> str:
"""Return the release string to use for building and registry checks.
When use_dist_tag is True the dist tag is appended so different distros
produce distinct entries in the package registry (e.g. '1.el9', '1.fc43').
"""
if not use_dist_tag:
return base_release
tag = get_rpm_dist_tag(distro)
return f"{base_release}.{tag}" if tag else base_release
def check_package_exists(package_name: str, version: str, release: str) -> bool: def check_package_exists(package_name: str, version: str, release: str) -> bool:
""" """
Check if a package version exists in the Gitea package registry. Check if a package version exists in the Gitea package registry.
Distro disambiguation is handled by the caller via the release string:
when dist_tag is enabled the caller appends the dist tag to release
(e.g. '1.el9', '1.fc43') so each distro maps to a unique version entry.
Args: Args:
package_name: Name of the package package_name: Name of the package
version: Version string version: Version string
release: Release number release: Effective release (may include dist tag suffix)
Returns: Returns:
True if package exists, False otherwise True if package exists, False otherwise
@@ -536,17 +603,17 @@ def check_package_exists(package_name: str, version: str, release: str) -> bool:
f"{package_type}/{package_name}/{full_version}" f"{package_type}/{package_name}/{full_version}"
) )
headers = {'Authorization': f'token {gitea_token}'} _gitea_session.headers.update({'Authorization': f'token {gitea_token}'})
logger.debug(f"Checking package existence: {url}") logger.debug(f"Checking package existence: {url}")
response = requests.get(url, headers=headers, timeout=30) response = _gitea_session.get(url, timeout=10)
if response.status_code == 200: if response.status_code == 200:
package_info = response.json() package_info = response.json()
# Package exists if we get package info back
exists = bool(package_info.get('id')) exists = bool(package_info.get('id'))
logger.debug(f"Package {package_name}:{full_version} {'exists' if exists else 'not found'}") logger.debug(f"Package {package_name}:{full_version} {'exists' if exists else 'not found'}")
return exists return exists
elif response.status_code == 404: elif response.status_code == 404:
logger.debug(f"Package {package_name}:{full_version} not found (404)") logger.debug(f"Package {package_name}:{full_version} not found (404)")
return False return False
@@ -1241,6 +1308,7 @@ class Builder:
package_name = metadata.get('name', package_dir.name) package_name = metadata.get('name', package_dir.name)
build_configs = metadata.get('builds', []) build_configs = metadata.get('builds', [])
use_dist_tag = metadata.get('dist_tag', False)
if not build_configs: if not build_configs:
self.logger.warning(f"No builds in metadata.yaml for {package_name}") self.logger.warning(f"No builds in metadata.yaml for {package_name}")
@@ -1259,7 +1327,8 @@ class Builder:
if repositories and base_image and version and release: if repositories and base_image and version and release:
# Use the first repository as the distro identifier # Use the first repository as the distro identifier
build_distro = repositories[0] if repositories else 'unknown' build_distro = repositories[0] if repositories else 'unknown'
packages.append(PackageInfo(package_name, version, str(release), package_dir, build_distro, base_image)) rel = effective_release(str(release), build_distro, use_dist_tag)
packages.append(PackageInfo(package_name, version, rel, package_dir, build_distro, base_image))
else: else:
# Build for specific distro # Build for specific distro
for build_config in build_configs: for build_config in build_configs:
@@ -1271,7 +1340,8 @@ class Builder:
# Check if the target distro matches any repository # Check if the target distro matches any repository
if distro in repositories and base_image and version and release: if distro in repositories and base_image and version and release:
packages.append(PackageInfo(package_name, version, str(release), package_dir, distro, base_image)) rel = effective_release(str(release), distro, use_dist_tag)
packages.append(PackageInfo(package_name, version, rel, package_dir, distro, base_image))
break break
else: else:
# If no matching distro found, log a warning # If no matching distro found, log a warning
@@ -1324,6 +1394,8 @@ class Builder:
with open(metadata_file, 'r') as f: with open(metadata_file, 'r') as f:
metadata = yaml.safe_load(f) metadata = yaml.safe_load(f)
use_dist_tag = metadata.get('dist_tag', False)
# Find base image and validate version/release for the specified distro # Find base image and validate version/release for the specified distro
build_configs = metadata.get('builds', []) build_configs = metadata.get('builds', [])
base_image = None base_image = None
@@ -1367,7 +1439,8 @@ class Builder:
self.logger.error(f"Error reading metadata.yaml for {package}: {e}") self.logger.error(f"Error reading metadata.yaml for {package}: {e}")
return False return False
package_info = PackageInfo(package, version, release, package_dir, distro, base_image) rel = effective_release(release, distro, use_dist_tag)
package_info = PackageInfo(package, version, rel, package_dir, distro, base_image)
return self._build_package(package_info, dry_run, force, native, buildah) return self._build_package(package_info, dry_run, force, native, buildah)
def build_all(self, dry_run: bool = False, force: bool = False, parallel: int = 4, distro: str = 'el/9', native: bool = False, buildah: bool = False) -> bool: def build_all(self, dry_run: bool = False, force: bool = False, parallel: int = 4, distro: str = 'el/9', native: bool = False, buildah: bool = False) -> bool: