Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 738871a692 | |||
| 449034a4a1 |
@@ -31,24 +31,6 @@ repos:
|
||||
"-s",
|
||||
]
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: pytest
|
||||
name: Run unit tests
|
||||
entry: make test
|
||||
language: system
|
||||
types: [python]
|
||||
pass_filenames: false
|
||||
|
||||
- repo: https://github.com/python-jsonschema/check-jsonschema
|
||||
rev: 0.37.2
|
||||
hooks:
|
||||
- id: check-jsonschema
|
||||
name: Validate RPM package metadata
|
||||
files: ^rpms/[^/]+/metadata\.yaml$
|
||||
args: [--schemafile, schema/metadata.json]
|
||||
language_version: python3.11
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.14.7
|
||||
hooks:
|
||||
|
||||
@@ -1,96 +1,20 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: pull_request
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- act_runner
|
||||
- bind_exporter
|
||||
- boilerplate
|
||||
- claude-code
|
||||
- cni-plugins
|
||||
- code-server
|
||||
- consul
|
||||
- consul-cni
|
||||
- etcd
|
||||
- exportarr
|
||||
- frr_exporter
|
||||
- g10k
|
||||
- git-delta
|
||||
- hadolint
|
||||
- helm
|
||||
- helmfile
|
||||
- jellyfin-ffmpeg-bin
|
||||
- jellyfin-server
|
||||
- jellyfin-web
|
||||
- jsonnet
|
||||
- jsonnet-language-server
|
||||
- jsonnet-lint
|
||||
- kubecolor
|
||||
- kubeconform
|
||||
- kubectx
|
||||
- kustomize
|
||||
- lazydocker
|
||||
- libfoundationdb
|
||||
- neovim
|
||||
- neovim-glibc-2.17
|
||||
- nfpm
|
||||
- node_exporter
|
||||
- nomad
|
||||
- nomad-autoscaler
|
||||
- nzbget
|
||||
- nzbget_exporter
|
||||
- openbao-plugin-secret-consul
|
||||
- openbao-plugin-secret-nomad
|
||||
- openbao-plugins
|
||||
- packer
|
||||
- pgbouncer_exporter
|
||||
- postgres_exporter
|
||||
- puppet-initial
|
||||
- puppetdb_exporter
|
||||
- ruff
|
||||
- sops
|
||||
- stalwart
|
||||
- stalwart-cli
|
||||
- stalwart-foundationdb
|
||||
- starship
|
||||
- stern
|
||||
- tea
|
||||
- terraform
|
||||
- terragrunt
|
||||
- tflint
|
||||
- unkin-ca-certificates
|
||||
- unkin-undionly-kpxe
|
||||
- unrar
|
||||
- uv
|
||||
- vals
|
||||
- vault
|
||||
- victoria-logs
|
||||
- vlutils
|
||||
- vmagent
|
||||
- vmalert
|
||||
- vminsert
|
||||
- vmselect
|
||||
- vmstorage
|
||||
- vmutils
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
- name: build rpms
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro almalinux/el8 --buildah "$PACKAGE"
|
||||
- dnf install buildah -y
|
||||
- ./tools/build build-all --distro almalinux/el8 --buildah
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
|
||||
- name: show rpms
|
||||
image: git.unkin.net/unkin/almalinux8-base:latest
|
||||
commands:
|
||||
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
|
||||
|
||||
@@ -1,97 +1,20 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: pull_request
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- act_runner
|
||||
- bind_exporter
|
||||
- boilerplate
|
||||
- claude-code
|
||||
- cni-plugins
|
||||
- code-server
|
||||
- consul
|
||||
- consul-cni
|
||||
- etcd
|
||||
- exportarr
|
||||
- frr_exporter
|
||||
- g10k
|
||||
- git-delta
|
||||
- hadolint
|
||||
- helm
|
||||
- helmfile
|
||||
- incus
|
||||
- jellyfin-ffmpeg-bin
|
||||
- jellyfin-server
|
||||
- jellyfin-web
|
||||
- jsonnet
|
||||
- jsonnet-language-server
|
||||
- jsonnet-lint
|
||||
- kubecolor
|
||||
- kubeconform
|
||||
- kubectx
|
||||
- kustomize
|
||||
- lazydocker
|
||||
- libfoundationdb
|
||||
- neovim
|
||||
- neovim-glibc-2.17
|
||||
- nfpm
|
||||
- node_exporter
|
||||
- nomad
|
||||
- nomad-autoscaler
|
||||
- nzbget
|
||||
- nzbget_exporter
|
||||
- openbao-plugin-secret-consul
|
||||
- openbao-plugin-secret-nomad
|
||||
- openbao-plugins
|
||||
- packer
|
||||
- pgbouncer_exporter
|
||||
- postgres_exporter
|
||||
- puppet-initial
|
||||
- puppetdb_exporter
|
||||
- ruff
|
||||
- sops
|
||||
- stalwart
|
||||
- stalwart-cli
|
||||
- stalwart-foundationdb
|
||||
- starship
|
||||
- stern
|
||||
- tea
|
||||
- terraform
|
||||
- terragrunt
|
||||
- tflint
|
||||
- unkin-ca-certificates
|
||||
- unkin-undionly-kpxe
|
||||
- unrar
|
||||
- uv
|
||||
- vals
|
||||
- vault
|
||||
- victoria-logs
|
||||
- vlutils
|
||||
- vmagent
|
||||
- vmalert
|
||||
- vminsert
|
||||
- vmselect
|
||||
- vmstorage
|
||||
- vmutils
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
- name: build rpms
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro almalinux/el9 --buildah "$PACKAGE"
|
||||
- dnf install buildah -y
|
||||
- ./tools/build build-all --distro almalinux/el9 --buildah
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
|
||||
- name: show rpms
|
||||
image: git.unkin.net/unkin/almalinux9-base:latest
|
||||
commands:
|
||||
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: pull_request
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- consul
|
||||
- nfpm
|
||||
- tea
|
||||
- unkin-ca-certificates
|
||||
- uv
|
||||
- vault
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro fedora/42 --buildah "$PACKAGE"
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
@@ -1,33 +0,0 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: pull_request
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- consul
|
||||
- nfpm
|
||||
- tea
|
||||
- unkin-ca-certificates
|
||||
- uv
|
||||
- vault
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro fedora/43 --buildah "$PACKAGE"
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
@@ -1,33 +0,0 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: pull_request
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- consul
|
||||
- nfpm
|
||||
- tea
|
||||
- unkin-ca-certificates
|
||||
- uv
|
||||
- vault
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro fedora/44 --buildah "$PACKAGE"
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
@@ -1,129 +1,37 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: push
|
||||
branch: master
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- act_runner
|
||||
- bind_exporter
|
||||
- boilerplate
|
||||
- claude-code
|
||||
- cni-plugins
|
||||
- code-server
|
||||
- consul
|
||||
- consul-cni
|
||||
- etcd
|
||||
- exportarr
|
||||
- frr_exporter
|
||||
- g10k
|
||||
- git-delta
|
||||
- hadolint
|
||||
- helm
|
||||
- helmfile
|
||||
- jellyfin-ffmpeg-bin
|
||||
- jellyfin-server
|
||||
- jellyfin-web
|
||||
- jsonnet
|
||||
- jsonnet-language-server
|
||||
- jsonnet-lint
|
||||
- kubecolor
|
||||
- kubeconform
|
||||
- kubectx
|
||||
- kustomize
|
||||
- lazydocker
|
||||
- libfoundationdb
|
||||
- neovim
|
||||
- neovim-glibc-2.17
|
||||
- nfpm
|
||||
- node_exporter
|
||||
- nomad
|
||||
- nomad-autoscaler
|
||||
- nzbget
|
||||
- nzbget_exporter
|
||||
- openbao-plugin-secret-consul
|
||||
- openbao-plugin-secret-nomad
|
||||
- openbao-plugins
|
||||
- packer
|
||||
- pgbouncer_exporter
|
||||
- postgres_exporter
|
||||
- puppet-initial
|
||||
- puppetdb_exporter
|
||||
- ruff
|
||||
- sops
|
||||
- stalwart
|
||||
- stalwart-cli
|
||||
- stalwart-foundationdb
|
||||
- starship
|
||||
- stern
|
||||
- tea
|
||||
- terraform
|
||||
- terragrunt
|
||||
- tflint
|
||||
- unkin-ca-certificates
|
||||
- unkin-undionly-kpxe
|
||||
- unrar
|
||||
- uv
|
||||
- vals
|
||||
- vault
|
||||
- victoria-logs
|
||||
- vlutils
|
||||
- vmagent
|
||||
- vmalert
|
||||
- vminsert
|
||||
- vmselect
|
||||
- vmstorage
|
||||
- vmutils
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
- name: build-rpms
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro almalinux/el8 --buildah "$PACKAGE"
|
||||
- dnf install buildah -y
|
||||
- ./tools/build build-all --distro almalinux/el8 --buildah
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
|
||||
- name: upload
|
||||
- name: show-rpms
|
||||
image: git.unkin.net/unkin/almalinux9-base:latest
|
||||
commands:
|
||||
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
|
||||
depends_on: [build-rpms]
|
||||
|
||||
- name: deploy-rpms
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- |
|
||||
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
|
||||
REPO="rpm-vendor-el8"
|
||||
for rpm in $(find dist -type f -name '*.rpm'); do
|
||||
FILE=$$(basename "$$rpm")
|
||||
# artifactapi has no HEAD route (405); probe the served Packages path.
|
||||
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
|
||||
if [ "$$code" = "200" ]; then
|
||||
echo "$$FILE already exists in $$REPO (HTTP $$code); skipping upload"
|
||||
continue
|
||||
fi
|
||||
echo "Uploading $$FILE to $$REPO (existence probe returned $$code)"
|
||||
curl -f -X PUT \
|
||||
"$$HOST/api/v2/remotes/$$REPO/files/$$FILE" \
|
||||
-H "Content-Type: application/x-rpm" \
|
||||
--data-binary @"$$rpm"
|
||||
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/almalinux/el8/upload
|
||||
done
|
||||
depends_on: [build]
|
||||
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]
|
||||
|
||||
@@ -1,130 +1,37 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: push
|
||||
branch: master
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- act_runner
|
||||
- bind_exporter
|
||||
- boilerplate
|
||||
- claude-code
|
||||
- cni-plugins
|
||||
- code-server
|
||||
- consul
|
||||
- consul-cni
|
||||
- etcd
|
||||
- exportarr
|
||||
- frr_exporter
|
||||
- g10k
|
||||
- git-delta
|
||||
- hadolint
|
||||
- helm
|
||||
- helmfile
|
||||
- incus
|
||||
- jellyfin-ffmpeg-bin
|
||||
- jellyfin-server
|
||||
- jellyfin-web
|
||||
- jsonnet
|
||||
- jsonnet-language-server
|
||||
- jsonnet-lint
|
||||
- kubecolor
|
||||
- kubeconform
|
||||
- kubectx
|
||||
- kustomize
|
||||
- lazydocker
|
||||
- libfoundationdb
|
||||
- neovim
|
||||
- neovim-glibc-2.17
|
||||
- nfpm
|
||||
- node_exporter
|
||||
- nomad
|
||||
- nomad-autoscaler
|
||||
- nzbget
|
||||
- nzbget_exporter
|
||||
- openbao-plugin-secret-consul
|
||||
- openbao-plugin-secret-nomad
|
||||
- openbao-plugins
|
||||
- packer
|
||||
- pgbouncer_exporter
|
||||
- postgres_exporter
|
||||
- puppet-initial
|
||||
- puppetdb_exporter
|
||||
- ruff
|
||||
- sops
|
||||
- stalwart
|
||||
- stalwart-cli
|
||||
- stalwart-foundationdb
|
||||
- starship
|
||||
- stern
|
||||
- tea
|
||||
- terraform
|
||||
- terragrunt
|
||||
- tflint
|
||||
- unkin-ca-certificates
|
||||
- unkin-undionly-kpxe
|
||||
- unrar
|
||||
- uv
|
||||
- vals
|
||||
- vault
|
||||
- victoria-logs
|
||||
- vlutils
|
||||
- vmagent
|
||||
- vmalert
|
||||
- vminsert
|
||||
- vmselect
|
||||
- vmstorage
|
||||
- vmutils
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
- name: build-rpms
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro almalinux/el9 --buildah "$PACKAGE"
|
||||
- dnf install buildah -y
|
||||
- ./tools/build build-all --distro almalinux/el9 --buildah
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
|
||||
- name: upload
|
||||
- name: show-rpms
|
||||
image: git.unkin.net/unkin/almalinux9-base:latest
|
||||
commands:
|
||||
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
|
||||
depends_on: [build-rpms]
|
||||
|
||||
- name: deploy-rpms
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- |
|
||||
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
|
||||
REPO="rpm-vendor-el9"
|
||||
for rpm in $(find dist -type f -name '*.rpm'); do
|
||||
FILE=$$(basename "$$rpm")
|
||||
# artifactapi has no HEAD route (405); probe the served Packages path.
|
||||
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
|
||||
if [ "$$code" = "200" ]; then
|
||||
echo "$$FILE already exists in $$REPO (HTTP $$code); skipping upload"
|
||||
continue
|
||||
fi
|
||||
echo "Uploading $$FILE to $$REPO (existence probe returned $$code)"
|
||||
curl -f -X PUT \
|
||||
"$$HOST/api/v2/remotes/$$REPO/files/$$FILE" \
|
||||
-H "Content-Type: application/x-rpm" \
|
||||
--data-binary @"$$rpm"
|
||||
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/almalinux/el9/upload
|
||||
done
|
||||
depends_on: [build]
|
||||
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]
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: push
|
||||
branch: master
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- consul
|
||||
- nfpm
|
||||
- tea
|
||||
- unkin-ca-certificates
|
||||
- uv
|
||||
- vault
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro fedora/42 --buildah "$PACKAGE"
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
|
||||
- name: upload
|
||||
image: git.unkin.net/unkin/almalinux9-base:latest
|
||||
commands:
|
||||
- |
|
||||
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
|
||||
REPO="rpm-vendor-f42"
|
||||
for rpm in $(find dist -type f -name '*.rpm'); do
|
||||
FILE=$$(basename "$$rpm")
|
||||
# artifactapi has no HEAD route (405); probe the served Packages path.
|
||||
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
|
||||
if [ "$$code" = "200" ]; then
|
||||
echo "$$FILE already exists in $$REPO (HTTP $$code); skipping upload"
|
||||
continue
|
||||
fi
|
||||
echo "Uploading $$FILE to $$REPO (existence probe returned $$code)"
|
||||
curl -f -X PUT \
|
||||
"$$HOST/api/v2/remotes/$$REPO/files/$$FILE" \
|
||||
-H "Content-Type: application/x-rpm" \
|
||||
--data-binary @"$$rpm"
|
||||
done
|
||||
depends_on: [build]
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
cpu: 100m
|
||||
limits:
|
||||
memory: 512Mi
|
||||
cpu: 500m
|
||||
@@ -1,66 +0,0 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: push
|
||||
branch: master
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- consul
|
||||
- nfpm
|
||||
- tea
|
||||
- unkin-ca-certificates
|
||||
- uv
|
||||
- vault
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro fedora/43 --buildah "$PACKAGE"
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
|
||||
- name: upload
|
||||
image: git.unkin.net/unkin/almalinux9-base:latest
|
||||
commands:
|
||||
- |
|
||||
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
|
||||
REPO="rpm-vendor-f43"
|
||||
for rpm in $(find dist -type f -name '*.rpm'); do
|
||||
FILE=$$(basename "$$rpm")
|
||||
# artifactapi has no HEAD route (405); probe the served Packages path.
|
||||
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
|
||||
if [ "$$code" = "200" ]; then
|
||||
echo "$$FILE already exists in $$REPO (HTTP $$code); skipping upload"
|
||||
continue
|
||||
fi
|
||||
echo "Uploading $$FILE to $$REPO (existence probe returned $$code)"
|
||||
curl -f -X PUT \
|
||||
"$$HOST/api/v2/remotes/$$REPO/files/$$FILE" \
|
||||
-H "Content-Type: application/x-rpm" \
|
||||
--data-binary @"$$rpm"
|
||||
done
|
||||
depends_on: [build]
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
cpu: 100m
|
||||
limits:
|
||||
memory: 512Mi
|
||||
cpu: 500m
|
||||
@@ -1,66 +0,0 @@
|
||||
# Generated by tools/gen-pipelines - do not edit by hand.
|
||||
when:
|
||||
- event: push
|
||||
branch: master
|
||||
|
||||
matrix:
|
||||
PACKAGE:
|
||||
- consul
|
||||
- nfpm
|
||||
- tea
|
||||
- unkin-ca-certificates
|
||||
- uv
|
||||
- vault
|
||||
- xh
|
||||
- yq
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro fedora/44 --buildah "$PACKAGE"
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
|
||||
- name: upload
|
||||
image: git.unkin.net/unkin/almalinux9-base:latest
|
||||
commands:
|
||||
- |
|
||||
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
|
||||
REPO="rpm-vendor-f44"
|
||||
for rpm in $(find dist -type f -name '*.rpm'); do
|
||||
FILE=$$(basename "$$rpm")
|
||||
# artifactapi has no HEAD route (405); probe the served Packages path.
|
||||
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
|
||||
if [ "$$code" = "200" ]; then
|
||||
echo "$$FILE already exists in $$REPO (HTTP $$code); skipping upload"
|
||||
continue
|
||||
fi
|
||||
echo "Uploading $$FILE to $$REPO (existence probe returned $$code)"
|
||||
curl -f -X PUT \
|
||||
"$$HOST/api/v2/remotes/$$REPO/files/$$FILE" \
|
||||
-H "Content-Type: application/x-rpm" \
|
||||
--data-binary @"$$rpm"
|
||||
done
|
||||
depends_on: [build]
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
cpu: 100m
|
||||
limits:
|
||||
memory: 512Mi
|
||||
cpu: 500m
|
||||
@@ -11,14 +11,9 @@ DISTRO ?= almalinux/el9
|
||||
PACKAGES := $(shell find $(ROOT_DIR)/rpms -mindepth 1 -maxdepth 1 -type d -exec test -f {}/metadata.yaml \; -print | xargs -n1 basename | sort)
|
||||
|
||||
# Default target to build all packages
|
||||
.PHONY: all list build clean test pipelines
|
||||
.PHONY: all list build clean
|
||||
all: build-all
|
||||
|
||||
# Regenerate the per-distro Woodpecker matrix pipelines from rpms/*/metadata.yaml
|
||||
pipelines:
|
||||
@echo "Regenerating .woodpecker pipelines..."
|
||||
$(ROOT_DIR)/tools/gen-pipelines
|
||||
|
||||
# List all available packages
|
||||
list:
|
||||
@echo "Available packages:"
|
||||
@@ -52,10 +47,6 @@ dry-run:
|
||||
@echo "Dry run - showing what would be built for distro $(DISTRO):"
|
||||
$(BUILD_TOOL) build-all --distro $(DISTRO) --dry-run
|
||||
|
||||
# Run unit tests
|
||||
test:
|
||||
@uv run --group dev pytest tests/ -q; rc=$$?; [ $$rc -eq 5 ] && exit 0 || exit $$rc
|
||||
|
||||
# Clean target
|
||||
clean:
|
||||
@echo "Cleaning build artifacts..."
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
[project]
|
||||
name = "rpmbuilder"
|
||||
version = "0.1.0"
|
||||
requires-python = ">=3.11"
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"pytest>=8",
|
||||
"jsonschema>=4",
|
||||
"pyyaml>=6",
|
||||
]
|
||||
@@ -1,20 +1,18 @@
|
||||
name: act_runner
|
||||
github: unknown/act_runner
|
||||
description: A runner for Gitea based on act.
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Gitea
|
||||
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
|
||||
homepage: https://gitea.com/gitea/act_runner
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el8
|
||||
version: 0.2.12
|
||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el9
|
||||
version: 0.2.12
|
||||
maintainer: Gitea
|
||||
name: act_runner
|
||||
platform: linux
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
name: bind_exporter
|
||||
github: prometheus-community/bind_exporter
|
||||
description: Prometheus exporter for BIND
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Prometheus
|
||||
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
|
||||
homepage: https://github.com/prometheus-community/bind_exporter
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el8
|
||||
version: 0.8.0
|
||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el9
|
||||
version: 0.8.0
|
||||
maintainer: Prometheus
|
||||
name: bind_exporter
|
||||
platform: linux
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: Gruntwork
|
||||
homepage: https://github.com/gruntwork-io/boilerplate
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
name: claude-code
|
||||
description: Claude Code - Anthropic's agentic AI coding tool
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Anthropic
|
||||
homepage: https://claude.ai/code
|
||||
license: Proprietary
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: 1
|
||||
repository:
|
||||
- almalinux/el8
|
||||
version: 2.1.156
|
||||
version: 2.1.126
|
||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
repository:
|
||||
- almalinux/el9
|
||||
version: 2.1.156
|
||||
version: 2.1.126
|
||||
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
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: ContainerNetworking
|
||||
homepage: https://github.com/containernetworking/plugins
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: code-server
|
||||
github: coder/code-server
|
||||
description: VS Code in the browser.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: Coder
|
||||
homepage: https://github.com/coder/code-server
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,21 +1,18 @@
|
||||
name: 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
|
||||
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
|
||||
homepage: https://hashicorp.com
|
||||
license: Mozilla Public License, version 2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el8
|
||||
version: 1.7.1
|
||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el9
|
||||
version: 1.7.1
|
||||
maintainer: Hashicorp
|
||||
name: consul-cni
|
||||
platform: linux
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: HashiCorp
|
||||
homepage: https://github.com/hashicorp/consul
|
||||
license: BUSL-1.1
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
@@ -19,10 +18,3 @@ builds:
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
version: 1.22.7
|
||||
- repository:
|
||||
- fedora/42
|
||||
- fedora/43
|
||||
- fedora/44
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
version: 1.22.7
|
||||
|
||||
@@ -7,15 +7,14 @@ platform: linux
|
||||
maintainer: https://etcd.io/
|
||||
homepage: https://etcd.io/
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: 1
|
||||
version: 3.6.7
|
||||
version: 3.6.10
|
||||
- repository:
|
||||
- almalinux/el9
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
version: 3.6.7
|
||||
version: 3.6.10
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: onedr0p
|
||||
homepage: https://github.com/onedr0p/exportarr
|
||||
license: MIT license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Prometheus
|
||||
homepage: https://github.com/tynany/frr_exporter
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
+15
-17
@@ -1,20 +1,18 @@
|
||||
name: 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
|
||||
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
|
||||
homepage: https://github.com/xorpaul/g10k
|
||||
license: Apache2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el8
|
||||
version: 0.9.10
|
||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- almalinux/el9
|
||||
version: 0.9.10
|
||||
maintainer: xorpaul
|
||||
name: g10k
|
||||
platform: linux
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: git-delta
|
||||
github: dandavison/delta
|
||||
description: A syntax-highlighting pager for git, diff, grep, and blame output.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: dandavison
|
||||
homepage: https://github.com/dandavison/delta
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
---
|
||||
name: 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
|
||||
platform: linux
|
||||
maintainer: hadolint
|
||||
homepage: https://github.com/hadolint/hadolint
|
||||
license: GPL-3.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Helm Contributors
|
||||
homepage: https://github.com/helm/helm
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -8,7 +8,6 @@ platform: linux
|
||||
maintainer: Helmfile Contributors
|
||||
homepage: https://github.com/helmfile/helmfile
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,10 +6,9 @@ platform: linux
|
||||
maintainer: unkin
|
||||
homepage: https://linuxcontainers.org/incus/
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el9
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
version: 6.23.0
|
||||
version: 6.20.0
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: unkin
|
||||
homepage: https://github.com/jellyfin/jellyfin-ffmpeg
|
||||
license: GPL-3.0
|
||||
dist_tag: false
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
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
|
||||
- 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
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
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
|
||||
- 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
|
||||
|
||||
@@ -1,13 +1,4 @@
|
||||
name: jsonnet-language-server
|
||||
github: grafana/jsonnet-language-server
|
||||
description: Jsonnet Language Server Protocol implementation for the Jsonnet templating
|
||||
language.
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Grafana Labs
|
||||
homepage: https://github.com/grafana/jsonnet-language-server
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: 1
|
||||
@@ -19,3 +10,11 @@ builds:
|
||||
repository:
|
||||
- almalinux/el9
|
||||
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
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
name: jsonnet-lint
|
||||
github: google/go-jsonnet
|
||||
description: Linter for Jsonnet
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Google
|
||||
homepage: https://github.com/google/go-jsonnet
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: 1
|
||||
@@ -18,3 +10,10 @@ builds:
|
||||
repository:
|
||||
- almalinux/el9
|
||||
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
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
name: jsonnet
|
||||
github: google/go-jsonnet
|
||||
description: A data templating language
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Google
|
||||
homepage: https://github.com/google/go-jsonnet
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: 1
|
||||
@@ -18,3 +10,10 @@ builds:
|
||||
repository:
|
||||
- almalinux/el9
|
||||
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
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
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
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/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
|
||||
@@ -1,30 +0,0 @@
|
||||
# nfpm.yaml
|
||||
|
||||
name: ${PACKAGE_NAME}
|
||||
version: ${PACKAGE_VERSION}
|
||||
release: ${PACKAGE_RELEASE}
|
||||
arch: ${PACKAGE_ARCH}
|
||||
platform: ${PACKAGE_PLATFORM}
|
||||
section: default
|
||||
priority: extra
|
||||
description: "${PACKAGE_DESCRIPTION}"
|
||||
|
||||
maintainer: ${PACKAGE_MAINTAINER}
|
||||
homepage: ${PACKAGE_HOMEPAGE}
|
||||
license: ${PACKAGE_LICENSE}
|
||||
|
||||
disable_globbing: false
|
||||
|
||||
replaces:
|
||||
- kubecolor
|
||||
|
||||
provides:
|
||||
- kubecolor
|
||||
|
||||
contents:
|
||||
- src: /app/kubecolor
|
||||
dst: /usr/bin/kubecolor
|
||||
file_info:
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Yann Hamon
|
||||
homepage: https://github.com/yannh/kubeconform
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: kubectx
|
||||
github: ahmetb/kubectx
|
||||
description: Faster way to switch between clusters and namespaces in kubectl.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: ahmetb
|
||||
homepage: https://github.com/ahmetb/kubectx
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: kustomize
|
||||
github: kubernetes-sigs/kustomize
|
||||
description: Kubernetes native configuration management
|
||||
@@ -6,16 +7,13 @@ platform: linux
|
||||
maintainer: kubernetes-sigs
|
||||
homepage: https://github.com/kubernetes-sigs/kustomize
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
github_release_pattern: ^kustomize/v.*
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: '1'
|
||||
version: 5.8.1
|
||||
- repository:
|
||||
- almalinux/el9
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: '1'
|
||||
version: 5.8.1
|
||||
- repository: [almalinux/el8]
|
||||
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: '1'
|
||||
version: 5.8.1
|
||||
- repository: [almalinux/el9]
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: '1'
|
||||
version: 5.8.1
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: lazydocker
|
||||
github: jesseduffield/lazydocker
|
||||
description: The lazier way to manage everything docker.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: jesseduffield
|
||||
homepage: https://github.com/jesseduffield/lazydocker
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
name: libfoundationdb
|
||||
github: apple/foundationdb
|
||||
description: FoundationDB client library - Shared library for FoundationDB applications
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: FoundationDB Community
|
||||
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
|
||||
homepage: https://github.com/apple/foundationdb
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
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
|
||||
maintainer: FoundationDB Community
|
||||
name: libfoundationdb
|
||||
platform: linux
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
---
|
||||
name: neovim-glibc-2.17
|
||||
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
|
||||
platform: linux
|
||||
maintainer: neovim
|
||||
homepage: https://neovim.io
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: neovim
|
||||
github: neovim/neovim
|
||||
description: Vim-fork focused on extensibility and usability.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: neovim
|
||||
homepage: https://neovim.io
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: GoReleaser
|
||||
homepage: https://nfpm.goreleaser.com/
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
@@ -19,10 +18,3 @@ builds:
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
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
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Prometheus
|
||||
homepage: https://github.com/prometheus/node_exporter
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -8,7 +8,6 @@ platform: linux
|
||||
maintainer: Hashicorp
|
||||
homepage: https://github.com/hashicorp/nomad-autoscaler
|
||||
license: Mozilla Public License, version 2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
+15
-18
@@ -1,21 +1,18 @@
|
||||
name: 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
|
||||
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
|
||||
homepage: https://www.nomadproject.io/
|
||||
license: BUSL-1.1
|
||||
dist_tag: true
|
||||
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
|
||||
maintainer: HashiCorp
|
||||
name: nomad
|
||||
platform: linux
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: nzbgetcom
|
||||
homepage: https://github.com/nzbgetcom/nzbget
|
||||
license: GPL-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
name: nzbget_exporter
|
||||
github: frebib/nzbget-exporter
|
||||
description: Prometheus exporter for NZBGet
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Prometheus
|
||||
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
|
||||
homepage: https://github.com/frebib/nzbget-exporter
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
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
|
||||
maintainer: Prometheus
|
||||
name: nzbget_exporter
|
||||
platform: linux
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
name: openbao-plugin-secret-consul
|
||||
github: openbao/openbao-plugins
|
||||
github_release_pattern: "^secrets-consul-v.*"
|
||||
description: OpenBao secrets engine plugin for HashiCorp Consul
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: OpenBao Community
|
||||
homepage: https://github.com/openbao/openbao-plugins
|
||||
license: MPL-2.0
|
||||
dist_tag: true
|
||||
github_release_pattern: ^secrets-consul-v.*
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
name: openbao-plugin-secret-nomad
|
||||
github: openbao/openbao-plugins
|
||||
github_release_pattern: "^secrets-nomad-v.*"
|
||||
description: OpenBao secrets engine plugin for HashiCorp Nomad
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: OpenBao Community
|
||||
homepage: https://github.com/openbao/openbao-plugins
|
||||
license: MPL-2.0
|
||||
dist_tag: true
|
||||
github_release_pattern: ^secrets-nomad-v.*
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: OpenBao Community
|
||||
homepage: https://github.com/openbao/openbao-plugins
|
||||
license: MPL-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: HashiCorp
|
||||
homepage: https://www.packer.io/
|
||||
license: BUSL-1.1
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
name: pgbouncer_exporter
|
||||
github: prometheus-community/pgbouncer_exporter
|
||||
description: Prometheus exporter for PgBouncer
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Prometheus
|
||||
homepage: https://github.com/prometheus-community/pgbouncer_exporter
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: 1
|
||||
@@ -18,3 +10,10 @@ builds:
|
||||
repository:
|
||||
- almalinux/el9
|
||||
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
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Prometheus
|
||||
homepage: https://github.com/prometheus-community/postgres_exporter
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
name: puppet-initial
|
||||
github: unknown/puppet-initial
|
||||
description: A script and service to initialise puppet for the unkin environmnet.
|
||||
---
|
||||
arch: amd64
|
||||
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
|
||||
- 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
|
||||
platform: linux
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
name: puppetdb_exporter
|
||||
github: camptocamp/prometheus-puppetdb-exporter
|
||||
description: Prometheus exporter for PuppetDB
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Comptocamp
|
||||
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
|
||||
homepage: https://github.com/camptocamp/prometheus-puppetdb-exporter
|
||||
license: Apache 2.0 License
|
||||
dist_tag: true
|
||||
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
|
||||
maintainer: Comptocamp
|
||||
name: puppetdb_exporter
|
||||
platform: linux
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Astral.sh
|
||||
homepage: https://docs.astral.sh/ruff/
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: sops
|
||||
github: getsops/sops
|
||||
description: Simple and flexible tool for managing secrets.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: getsops
|
||||
homepage: https://github.com/getsops/sops
|
||||
license: MPL-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Stalwart Labs
|
||||
homepage: https://stalw.art
|
||||
license: AGPL-3.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: Stalwart Labs
|
||||
homepage: https://stalw.art
|
||||
license: AGPL-3.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: Stalwart Labs
|
||||
homepage: https://stalw.art
|
||||
license: AGPL-3.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: starship
|
||||
homepage: https://starship.rs
|
||||
license: ISC
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: stern
|
||||
github: stern/stern
|
||||
description: Multi pod and container log tailing for Kubernetes.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: stern
|
||||
homepage: https://github.com/stern/stern
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: tea
|
||||
github: unknown/tea
|
||||
description: The official CLI for Gitea.
|
||||
@@ -6,7 +7,6 @@ platform: linux
|
||||
maintainer: Gitea
|
||||
homepage: https://gitea.com/gitea/tea
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
@@ -18,10 +18,3 @@ builds:
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
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
|
||||
|
||||
@@ -9,7 +9,6 @@ platform: linux
|
||||
maintainer: HashiCorp
|
||||
homepage: https://terraform.io/
|
||||
license: BUSL-1.1
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: Gruntwork
|
||||
homepage: https://github.com/gruntwork-io/terragrunt
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: Terraform Linters
|
||||
homepage: https://github.com/terraform-linters/tflint
|
||||
license: MPL-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -1,27 +1,18 @@
|
||||
name: unkin-ca-certificates
|
||||
github: unknown/unkin-ca-certificates
|
||||
description: ca-certificates for the unkin site
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: Unkin
|
||||
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
|
||||
homepage: https://vault.query.consul:8200
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
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
|
||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: '1'
|
||||
repository:
|
||||
- fedora/42
|
||||
- fedora/43
|
||||
- fedora/44
|
||||
version: 2025.07.13
|
||||
maintainer: Unkin
|
||||
name: unkin-ca-certificates
|
||||
platform: linux
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
name: unkin-undionly-kpxe
|
||||
github: ipxe/ipxe
|
||||
description: iPXE network bootloader
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: iPXE
|
||||
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
|
||||
homepage: https://github.com/ipxe/ipxe
|
||||
license: GPL-2.0 license
|
||||
dist_tag: true
|
||||
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
|
||||
maintainer: iPXE
|
||||
name: unkin-undionly-kpxe
|
||||
platform: linux
|
||||
|
||||
+15
-19
@@ -1,22 +1,18 @@
|
||||
name: 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
|
||||
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
|
||||
homepage: https://www.rarlab.com/
|
||||
license: Freeware (UNRAR 7.11 freeware Copyright (c) 1993-2025 Alexander Roshal)
|
||||
dist_tag: true
|
||||
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'
|
||||
maintainer: RARLAB
|
||||
name: unrar
|
||||
platform: linux
|
||||
|
||||
+2
-10
@@ -6,22 +6,14 @@ platform: linux
|
||||
maintainer: Astral.sh
|
||||
homepage: https://docs.astral.sh/uv/
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||
release: 1
|
||||
version: 0.11.14
|
||||
version: 0.11.8
|
||||
- repository:
|
||||
- almalinux/el9
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
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
|
||||
version: 0.11.8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: Helmfile Contributors
|
||||
homepage: https://github.com/helmfile/vals
|
||||
license: Apache-2.0
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -9,7 +9,6 @@ platform: linux
|
||||
maintainer: HashiCorp
|
||||
homepage: https://github.com/hashicorp/vault
|
||||
license: BUSL-1.1
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
@@ -21,10 +20,3 @@ builds:
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@ set -e
|
||||
dnf install -y unzip
|
||||
|
||||
# Download and extract vault
|
||||
curl -L -o /app/vault.zip https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/hashicorp-releases/vault/${PACKAGE_VERSION}/vault_${PACKAGE_VERSION}_linux_amd64.zip
|
||||
curl -L -o /app/vault.zip https://releases.hashicorp.com/vault/${PACKAGE_VERSION}/vault_${PACKAGE_VERSION}_linux_amd64.zip
|
||||
unzip vault.zip
|
||||
|
||||
# Process the nfpm.yaml template with environment variables
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaLogs
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaLogs
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -6,7 +6,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
@@ -7,7 +7,6 @@ platform: linux
|
||||
maintainer: VictoriaMetrics
|
||||
homepage: https://github.com/VictoriaMetrics/VictoriaMetrics
|
||||
license: Apache-2.0 license
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
|
||||
+15
-25
@@ -1,28 +1,18 @@
|
||||
name: xh
|
||||
github: ducaale/xh
|
||||
description: A friendly and fast tool for sending HTTP requests (HTTPie reimplementation
|
||||
in Rust)
|
||||
---
|
||||
arch: amd64
|
||||
platform: linux
|
||||
maintainer: ducaale
|
||||
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
|
||||
homepage: https://github.com/ducaale/xh
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
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
|
||||
- repository:
|
||||
- fedora/42
|
||||
- fedora/43
|
||||
- fedora/44
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
version: 0.25.3
|
||||
maintainer: ducaale
|
||||
name: xh
|
||||
platform: linux
|
||||
|
||||
+2
-10
@@ -1,13 +1,12 @@
|
||||
---
|
||||
name: 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
|
||||
platform: linux
|
||||
maintainer: mikefarah
|
||||
homepage: https://github.com/mikefarah/yq
|
||||
license: MIT
|
||||
dist_tag: true
|
||||
builds:
|
||||
- repository:
|
||||
- almalinux/el8
|
||||
@@ -19,10 +18,3 @@ builds:
|
||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||
release: 1
|
||||
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
|
||||
|
||||
@@ -1,111 +0,0 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"additionalProperties": false,
|
||||
"description": "Schema for rpms/*/metadata.yaml files",
|
||||
"properties": {
|
||||
"arch": {
|
||||
"enum": [
|
||||
"amd64",
|
||||
"arm64",
|
||||
"x86_64"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"builds": {
|
||||
"items": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"image": {
|
||||
"minLength": 1,
|
||||
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_.:/@]+$",
|
||||
"type": "string"
|
||||
},
|
||||
"release": {
|
||||
"oneOf": [
|
||||
{
|
||||
"minLength": 1,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "number"
|
||||
}
|
||||
]
|
||||
},
|
||||
"repository": {
|
||||
"items": {
|
||||
"enum": [
|
||||
"almalinux/el8",
|
||||
"almalinux/el9",
|
||||
"fedora/42",
|
||||
"fedora/43",
|
||||
"fedora/44"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
},
|
||||
"version": {
|
||||
"minLength": 1,
|
||||
"pattern": "^[0-9]+(\\.[0-9]+)*(-[a-zA-Z0-9]+)*$",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"repository",
|
||||
"image",
|
||||
"release",
|
||||
"version"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"minLength": 1,
|
||||
"type": "string"
|
||||
},
|
||||
"dist_tag": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"github": {
|
||||
"minLength": 1,
|
||||
"pattern": "^[a-zA-Z0-9\\-_]+/[a-zA-Z0-9\\-_.]+$",
|
||||
"type": "string"
|
||||
},
|
||||
"github_release_pattern": {
|
||||
"minLength": 1,
|
||||
"type": "string"
|
||||
},
|
||||
"homepage": {
|
||||
"minLength": 1,
|
||||
"pattern": "^https?://.+",
|
||||
"type": "string"
|
||||
},
|
||||
"license": {
|
||||
"minLength": 1,
|
||||
"type": "string"
|
||||
},
|
||||
"maintainer": {
|
||||
"minLength": 1,
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"minLength": 1,
|
||||
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_.]*$",
|
||||
"type": "string"
|
||||
},
|
||||
"platform": {
|
||||
"minLength": 1,
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"description",
|
||||
"builds"
|
||||
],
|
||||
"title": "RPM Package Metadata",
|
||||
"type": "object"
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# Tests for tools/build and tools/update-gh.
|
||||
# See https://git.unkin.net/unkin/rpmbuilder/issues/162
|
||||
@@ -1,36 +0,0 @@
|
||||
"""Validate every rpms/*/metadata.yaml against schema/metadata.json."""
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import jsonschema
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
REPO_ROOT = Path(__file__).parent.parent
|
||||
SCHEMA_FILE = REPO_ROOT / "schema" / "metadata.json"
|
||||
RPMS_DIR = REPO_ROOT / "rpms"
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def schema():
|
||||
with open(SCHEMA_FILE) as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
def metadata_files():
|
||||
return sorted(RPMS_DIR.glob("*/metadata.yaml"))
|
||||
|
||||
|
||||
@pytest.mark.parametrize("metadata_file", metadata_files(), ids=lambda p: p.parent.name)
|
||||
def test_metadata_valid(metadata_file, schema):
|
||||
with open(metadata_file) as f:
|
||||
data = yaml.safe_load(f)
|
||||
|
||||
validator = jsonschema.Draft7Validator(schema)
|
||||
errors = sorted(validator.iter_errors(data), key=str)
|
||||
|
||||
assert not errors, "\n".join(
|
||||
f" {'.'.join(str(p) for p in e.absolute_path) or '(root)'}: {e.message}"
|
||||
for e in errors
|
||||
)
|
||||
+57
-152
@@ -23,8 +23,6 @@ import sys
|
||||
import logging
|
||||
import subprocess
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter
|
||||
from urllib3.util.retry import Retry
|
||||
from pathlib import Path
|
||||
from typing import List, Optional
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
@@ -35,46 +33,6 @@ import yaml
|
||||
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()
|
||||
_artifactapi_session = _make_session()
|
||||
# artifactapi serves an internally-signed TLS cert. Verify against the OS CA
|
||||
# bundle (which includes the internal CA, as dnf/curl in the builder images do)
|
||||
# rather than certifi's Mozilla bundle, which does not trust it.
|
||||
_artifactapi_session.verify = os.getenv('ARTIFACTAPI_CA_BUNDLE') or next(
|
||||
(p for p in ('/etc/pki/tls/certs/ca-bundle.crt',
|
||||
'/etc/ssl/certs/ca-certificates.crt')
|
||||
if os.path.exists(p)),
|
||||
True,
|
||||
)
|
||||
|
||||
|
||||
# ==================== VALIDATION SCHEMA ====================
|
||||
|
||||
# Cerberus schema for metadata.yaml validation based on PackageMetadata and Build dataclasses
|
||||
@@ -123,11 +81,6 @@ METADATA_SCHEMA = {
|
||||
'required': False,
|
||||
'empty': False
|
||||
},
|
||||
'dist_tag': {
|
||||
'type': 'boolean',
|
||||
'required': False,
|
||||
'default': False
|
||||
},
|
||||
'builds': {
|
||||
'type': 'list',
|
||||
'required': True,
|
||||
@@ -141,7 +94,7 @@ METADATA_SCHEMA = {
|
||||
'minlength': 1,
|
||||
'schema': {
|
||||
'type': 'string',
|
||||
'allowed': ['almalinux/el8', 'almalinux/el9', 'fedora/42', 'fedora/43', 'fedora/44'],
|
||||
'allowed': ['almalinux/el8', 'almalinux/el9'],
|
||||
'empty': False
|
||||
}
|
||||
},
|
||||
@@ -193,7 +146,6 @@ class PackageMetadata:
|
||||
maintainer: str = ""
|
||||
homepage: str = ""
|
||||
license: str = ""
|
||||
dist_tag: bool = False
|
||||
builds: List[Build] = None
|
||||
|
||||
def __post_init__(self):
|
||||
@@ -322,14 +274,15 @@ def get_github_latest_release(repo: str) -> Optional[dict]:
|
||||
|
||||
try:
|
||||
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"
|
||||
headers = {
|
||||
'Authorization': f'token {github_token}',
|
||||
'Accept': 'application/vnd.github.v3+json'
|
||||
}
|
||||
|
||||
logger.debug(f"Checking GitHub releases: {url}")
|
||||
response = _github_session.get(url, timeout=15)
|
||||
response = requests.get(url, headers=headers, timeout=30)
|
||||
|
||||
if response.status_code == 200:
|
||||
release = response.json()
|
||||
@@ -436,14 +389,15 @@ def get_github_releases_by_pattern(repo: str, pattern: str) -> Optional[dict]:
|
||||
|
||||
try:
|
||||
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"
|
||||
headers = {
|
||||
'Authorization': f'token {github_token}',
|
||||
'Accept': 'application/vnd.github.v3+json'
|
||||
}
|
||||
|
||||
logger.debug(f"Checking GitHub releases with pattern '{pattern}': {url}")
|
||||
response = _github_session.get(url, timeout=15)
|
||||
response = requests.get(url, headers=headers, timeout=30)
|
||||
|
||||
if response.status_code == 200:
|
||||
releases = response.json()
|
||||
@@ -550,104 +504,64 @@ def normalize_version(version: str) -> str:
|
||||
return ''.join(normalized_parts)
|
||||
|
||||
|
||||
def get_rpm_dist_tag(distro: str) -> str:
|
||||
def check_package_exists(package_name: str, version: str, release: str) -> bool:
|
||||
"""
|
||||
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 get_vendor_repo(distro: str) -> str:
|
||||
"""
|
||||
Map a distro path to its artifactapi rpm-vendor local repo name.
|
||||
|
||||
Examples:
|
||||
'almalinux/el8' -> 'rpm-vendor-el8'
|
||||
'almalinux/el9' -> 'rpm-vendor-el9'
|
||||
'fedora/42' -> 'rpm-vendor-f42'
|
||||
"""
|
||||
if distro.startswith('almalinux/'):
|
||||
return 'rpm-vendor-' + distro.split('/', 1)[1]
|
||||
if distro.startswith('fedora/'):
|
||||
return 'rpm-vendor-f' + distro.split('/', 1)[1]
|
||||
return 'rpm-vendor'
|
||||
|
||||
|
||||
def get_rpm_arch(arch: str) -> str:
|
||||
"""Map a metadata arch to the RPM architecture used in built filenames."""
|
||||
return {'amd64': 'x86_64', 'arm64': 'aarch64'}.get(arch, arch)
|
||||
|
||||
|
||||
def check_package_exists(
|
||||
package_name: str,
|
||||
version: str,
|
||||
release: str,
|
||||
distro: str,
|
||||
arch: str = 'amd64',
|
||||
) -> bool:
|
||||
"""
|
||||
Check if a built RPM already exists in the artifactapi rpm-vendor repo.
|
||||
|
||||
Each distro publishes to its own local repo (rpm-vendor-el9, rpm-vendor-f42,
|
||||
...), and dist_tag disambiguation is carried in the release string (e.g.
|
||||
'1.el9', '1.fc43'), so the served RPM filename is unique per distro. We probe
|
||||
the served path under Packages/ with a GET (artifactapi has no HEAD route).
|
||||
Check if a package version exists in the Gitea package registry.
|
||||
|
||||
Args:
|
||||
package_name: Name of the package
|
||||
version: Version string
|
||||
release: Effective release (may include dist tag suffix, e.g. '1.el9')
|
||||
distro: Target distro (e.g. 'almalinux/el9', 'fedora/42')
|
||||
arch: Package arch from metadata (default 'amd64')
|
||||
release: Release number
|
||||
|
||||
Returns:
|
||||
True if the RPM is already published, False otherwise
|
||||
True if package exists, False otherwise
|
||||
"""
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
base_url = os.getenv('ARTIFACTAPI_URL', 'https://artifactapi.k8s.syd1.au.unkin.net')
|
||||
repo = get_vendor_repo(distro)
|
||||
rpm_file = f"{package_name}-{version}-{release}.{get_rpm_arch(arch)}.rpm"
|
||||
url = f"{base_url}/api/v2/remotes/{repo}/files/Packages/{rpm_file}"
|
||||
# Get configuration from environment
|
||||
base_url = os.getenv('GITEA_URL', 'https://git.unkin.net')
|
||||
owner = os.getenv('GITEA_OWNER', 'unkin')
|
||||
package_type = os.getenv('GITEA_PACKAGE_TYPE', 'rpm')
|
||||
|
||||
# Get Gitea token from Vault - fail hard if unavailable
|
||||
gitea_token = get_gitea_token()
|
||||
|
||||
try:
|
||||
# Normalize version by removing leading zeros (Gitea does this automatically)
|
||||
# e.g., "2025.08.03" becomes "2025.8.3"
|
||||
normalized_version = normalize_version(version)
|
||||
full_version = f"{normalized_version}-{release}"
|
||||
url = (
|
||||
f"{base_url}/api/v1/packages/{owner}/"
|
||||
f"{package_type}/{package_name}/{full_version}"
|
||||
)
|
||||
|
||||
headers = {'Authorization': f'token {gitea_token}'}
|
||||
|
||||
logger.debug(f"Checking package existence: {url}")
|
||||
response = _artifactapi_session.get(url, timeout=10)
|
||||
response = requests.get(url, headers=headers, timeout=30)
|
||||
|
||||
if response.status_code == 200:
|
||||
logger.debug(f"Package {rpm_file} exists in {repo}")
|
||||
return True
|
||||
if response.status_code == 404:
|
||||
logger.debug(f"Package {rpm_file} not found in {repo} (404)")
|
||||
package_info = response.json()
|
||||
# Package exists if we get package info back
|
||||
exists = bool(package_info.get('id'))
|
||||
logger.debug(f"Package {package_name}:{full_version} {'exists' if exists else 'not found'}")
|
||||
return exists
|
||||
elif response.status_code == 404:
|
||||
logger.debug(f"Package {package_name}:{full_version} not found (404)")
|
||||
return False
|
||||
elif response.status_code == 401:
|
||||
logger.error("Authentication failed. Check GITEA_API_TOKEN.")
|
||||
return False
|
||||
else:
|
||||
logger.warning(
|
||||
f"Unexpected response checking package {package_name}:{full_version}: "
|
||||
f"{response.status_code} - {response.text}"
|
||||
)
|
||||
return False
|
||||
logger.warning(
|
||||
f"Unexpected response checking {rpm_file} in {repo}: "
|
||||
f"{response.status_code}"
|
||||
)
|
||||
return False
|
||||
|
||||
except requests.RequestException as e:
|
||||
logger.error(f"Failed to check {rpm_file} in {repo}: {e}")
|
||||
logger.error(f"Failed to check package {package_name}:{version}-{release}: {e}")
|
||||
return False
|
||||
|
||||
|
||||
@@ -1270,7 +1184,6 @@ class PackageInfo:
|
||||
directory: Path
|
||||
distro: str = 'almalinux/el9'
|
||||
base_image: str = "git.unkin.net/unkin/almalinux9-rpmbuilder:latest"
|
||||
arch: str = 'amd64'
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name}-{self.version}-{self.release} ({self.distro})"
|
||||
@@ -1328,7 +1241,6 @@ class Builder:
|
||||
|
||||
package_name = metadata.get('name', package_dir.name)
|
||||
build_configs = metadata.get('builds', [])
|
||||
use_dist_tag = metadata.get('dist_tag', False)
|
||||
|
||||
if not build_configs:
|
||||
self.logger.warning(f"No builds in metadata.yaml for {package_name}")
|
||||
@@ -1347,8 +1259,7 @@ class Builder:
|
||||
if repositories and base_image and version and release:
|
||||
# Use the first repository as the distro identifier
|
||||
build_distro = repositories[0] if repositories else 'unknown'
|
||||
rel = effective_release(str(release), build_distro, use_dist_tag)
|
||||
packages.append(PackageInfo(package_name, version, rel, package_dir, build_distro, base_image, arch=metadata.get('arch', 'amd64')))
|
||||
packages.append(PackageInfo(package_name, version, str(release), package_dir, build_distro, base_image))
|
||||
else:
|
||||
# Build for specific distro
|
||||
for build_config in build_configs:
|
||||
@@ -1360,8 +1271,7 @@ class Builder:
|
||||
|
||||
# Check if the target distro matches any repository
|
||||
if distro in repositories and base_image and version and release:
|
||||
rel = effective_release(str(release), distro, use_dist_tag)
|
||||
packages.append(PackageInfo(package_name, version, rel, package_dir, distro, base_image, arch=metadata.get('arch', 'amd64')))
|
||||
packages.append(PackageInfo(package_name, version, str(release), package_dir, distro, base_image))
|
||||
break
|
||||
else:
|
||||
# If no matching distro found, log a warning
|
||||
@@ -1414,8 +1324,6 @@ class Builder:
|
||||
with open(metadata_file, 'r') as 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
|
||||
build_configs = metadata.get('builds', [])
|
||||
base_image = None
|
||||
@@ -1459,8 +1367,7 @@ class Builder:
|
||||
self.logger.error(f"Error reading metadata.yaml for {package}: {e}")
|
||||
return False
|
||||
|
||||
rel = effective_release(release, distro, use_dist_tag)
|
||||
package_info = PackageInfo(package, version, rel, package_dir, distro, base_image, arch=metadata.get('arch', 'amd64'))
|
||||
package_info = PackageInfo(package, version, release, package_dir, distro, base_image)
|
||||
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:
|
||||
@@ -1542,9 +1449,7 @@ class Builder:
|
||||
if check_package_exists(
|
||||
package_info.name,
|
||||
package_info.version,
|
||||
package_info.release,
|
||||
package_info.distro,
|
||||
package_info.arch,
|
||||
package_info.release
|
||||
):
|
||||
self.logger.info(
|
||||
f"Skipping {package_info} (already exists in repository)"
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
#!/usr/bin/env -S uv run --script
|
||||
# /// script
|
||||
# dependencies = [
|
||||
# "pyyaml",
|
||||
# ]
|
||||
# ///
|
||||
|
||||
# vim: filetype=python
|
||||
|
||||
"""
|
||||
Generate Woodpecker pipelines for rpmbuilder.
|
||||
|
||||
One pipeline file per distro (build-<distro>.yaml for pull_request checks and
|
||||
deploy-<distro>.yaml for master pushes). Each pipeline uses a Woodpecker matrix
|
||||
over the packages that target that distro, so every vendor package builds in its
|
||||
own job. Deploy jobs publish to the distro's artifactapi rpm-vendor local repo.
|
||||
|
||||
The matrix package lists are derived from each rpms/*/metadata.yaml, so this
|
||||
script is the source of truth: run `make pipelines` (or ./tools/gen-pipelines)
|
||||
after adding/removing a package or changing its target distros, and commit the
|
||||
regenerated .woodpecker/*.yaml.
|
||||
"""
|
||||
|
||||
import glob
|
||||
from pathlib import Path
|
||||
|
||||
import yaml
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
WOODPECKER = ROOT / ".woodpecker"
|
||||
|
||||
# Distro -> pipeline settings. `builder` runs buildah/the build tool (the actual
|
||||
# RPM build happens in a nested container using each package's metadata image);
|
||||
# `upload` only needs curl. rpm-vendor-<suffix> mirrors the artifactapi repos.
|
||||
DISTROS = [
|
||||
{"key": "almalinux8", "distro": "almalinux/el8", "repo": "rpm-vendor-el8"},
|
||||
{"key": "almalinux9", "distro": "almalinux/el9", "repo": "rpm-vendor-el9"},
|
||||
{"key": "fedora42", "distro": "fedora/42", "repo": "rpm-vendor-f42"},
|
||||
{"key": "fedora43", "distro": "fedora/43", "repo": "rpm-vendor-f43"},
|
||||
{"key": "fedora44", "distro": "fedora/44", "repo": "rpm-vendor-f44"},
|
||||
]
|
||||
|
||||
BUILDER_IMAGE = "git.unkin.net/unkin/almalinux9-rpmbuilder:latest"
|
||||
UPLOAD_IMAGE = "git.unkin.net/unkin/almalinux9-base:latest"
|
||||
ARTIFACTAPI = "https://artifactapi.k8s.syd1.au.unkin.net"
|
||||
|
||||
HEADER = "# Generated by tools/gen-pipelines - do not edit by hand.\n"
|
||||
|
||||
|
||||
def packages_for(distro: str) -> list[str]:
|
||||
names = []
|
||||
for mf in sorted(glob.glob(str(ROOT / "rpms" / "*" / "metadata.yaml"))):
|
||||
meta = yaml.safe_load(open(mf)) or {}
|
||||
distros = {
|
||||
repo
|
||||
for build in meta.get("builds", [])
|
||||
for repo in build.get("repository", [])
|
||||
}
|
||||
if distro in distros:
|
||||
names.append(meta.get("name", Path(mf).parent.name))
|
||||
return sorted(names)
|
||||
|
||||
|
||||
def matrix_block(packages: list[str]) -> str:
|
||||
lines = "\n".join(f" - {p}" for p in packages)
|
||||
return f"matrix:\n PACKAGE:\n{lines}\n"
|
||||
|
||||
|
||||
def build_step() -> str:
|
||||
return f""" - name: build
|
||||
image: {BUILDER_IMAGE}
|
||||
commands:
|
||||
- mkdir -p /woodpecker/rpms
|
||||
- ln -s /woodpecker/rpms /workspace
|
||||
- ./tools/build build --distro DISTRO --buildah "$PACKAGE"
|
||||
privileged: true
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 2
|
||||
"""
|
||||
|
||||
|
||||
def upload_step(repo: str) -> str:
|
||||
return f""" - name: upload
|
||||
image: {UPLOAD_IMAGE}
|
||||
commands:
|
||||
- |
|
||||
HOST="{ARTIFACTAPI}"
|
||||
REPO="{repo}"
|
||||
for rpm in $(find dist -type f -name '*.rpm'); do
|
||||
FILE=$$(basename "$$rpm")
|
||||
# artifactapi has no HEAD route (405); probe the served Packages path.
|
||||
code=$$(curl -s -o /dev/null -w '%{{http_code}}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
|
||||
if [ "$$code" = "200" ]; then
|
||||
echo "$$FILE already exists in $$REPO (HTTP $$code); skipping upload"
|
||||
continue
|
||||
fi
|
||||
echo "Uploading $$FILE to $$REPO (existence probe returned $$code)"
|
||||
curl -f -X PUT \\
|
||||
"$$HOST/api/v2/remotes/$$REPO/files/$$FILE" \\
|
||||
-H "Content-Type: application/x-rpm" \\
|
||||
--data-binary @"$$rpm"
|
||||
done
|
||||
depends_on: [build]
|
||||
backend_options:
|
||||
kubernetes:
|
||||
serviceAccountName: default
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
cpu: 100m
|
||||
limits:
|
||||
memory: 512Mi
|
||||
cpu: 500m
|
||||
"""
|
||||
|
||||
|
||||
def render(distro_cfg: dict, deploy: bool) -> str:
|
||||
packages = packages_for(distro_cfg["distro"])
|
||||
if deploy:
|
||||
when = "when:\n - event: push\n branch: master\n"
|
||||
else:
|
||||
when = "when:\n - event: pull_request\n"
|
||||
body = HEADER + when + "\n" + matrix_block(packages) + "\nsteps:\n"
|
||||
body += build_step().replace("DISTRO", distro_cfg["distro"])
|
||||
if deploy:
|
||||
body += "\n" + upload_step(distro_cfg["repo"])
|
||||
return body
|
||||
|
||||
|
||||
def main() -> None:
|
||||
for cfg in DISTROS:
|
||||
(WOODPECKER / f"build-{cfg['key']}.yaml").write_text(render(cfg, deploy=False))
|
||||
(WOODPECKER / f"deploy-{cfg['key']}.yaml").write_text(render(cfg, deploy=True))
|
||||
print(f"generated build-{cfg['key']}.yaml deploy-{cfg['key']}.yaml "
|
||||
f"({len(packages_for(cfg['distro']))} packages)")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user