Compare commits
129 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 738871a692 | |||
| d860a9d27f | |||
| 9e76b1ad83 | |||
| a5a6c90b8e | |||
| 99c4db7b51 | |||
| 9bc820ceaf | |||
| 743f272793 | |||
| e8f87aa9b5 | |||
| ddf4b72ec5 | |||
| a915b2c9f4 | |||
| fb91ae8240 | |||
| 7b808bce5c | |||
| 5a3cca95e8 | |||
| cdc60c992f | |||
| 189b7aaa8b | |||
| 2f289a8bea | |||
| 124f258009 | |||
| d71b0570ff | |||
| 084d0f7ebb | |||
| 6b7fe0cf50 | |||
| 447df4116b | |||
| a46d30fc95 | |||
| 5e0f56b6ef | |||
| 58692a96b1 | |||
| 9e78b93a6a | |||
| 3419072f0c | |||
| afe6673399 | |||
| 89185e07c2 | |||
| 2bcfad04b0 | |||
| b7d5f2d656 | |||
| 4b5419cf20 | |||
| 3785181000 | |||
| 8801731e13 | |||
| 6a764d28d3 | |||
| 03dd516600 | |||
| 9872215bf8 | |||
| 92a9a20445 | |||
| 042029ddc3 | |||
| 3610c20ae6 | |||
| 301f491a7c | |||
| 58c997a971 | |||
| 34516a951d | |||
| cd2cee4b44 | |||
| c5408d231c | |||
| 1ec69da49b | |||
| 62dc3c56d2 | |||
| 0665f3bdb2 | |||
| 4ae1758d81 | |||
| c977bb3f81 | |||
| 13c4a2365d | |||
| 6db63d80ef | |||
| 79fa72fd09 | |||
| 6c2ae01c1f | |||
| b778d77617 | |||
| d4c961c3b0 | |||
| d28087cd7c | |||
| 9903a888dc | |||
| 6fe13f2c06 | |||
| e1c0dc7f85 | |||
| 2de5147e27 | |||
| b2e786f444 | |||
| 0bd0655009 | |||
| af06a66e86 | |||
| 083abf54b0 | |||
| 7a7cc8c3ac | |||
| 955c7d98c8 | |||
| 2b584d74a3 | |||
| e2634dfa4a | |||
| 6f154faaf1 | |||
| 738541fe59 | |||
| 7fd61d945a | |||
| 83d532a538 | |||
| 071de6a716 | |||
| 449034a4a1 | |||
| 0f97c20f30 | |||
| 66ba9e7b8d | |||
| 39513219c7 | |||
| 40470f4778 | |||
| 7e834112c4 | |||
| 61513c7647 | |||
| 2d46a58cdb | |||
| 9da177743e | |||
| 6a271b988d | |||
| 17e0568616 | |||
| a5b7591187 | |||
| 4ad40ed620 | |||
| 3a7a016592 | |||
| 78bb31b806 | |||
| e4000d4abc | |||
| a8ec31fbde | |||
| 5a0b93c4b7 | |||
| 17fec6b015 | |||
| eafcc7abc4 | |||
| f80fde0524 | |||
| b4b7b39715 | |||
| 3a286fc69c | |||
| 029ca3ab17 | |||
| 11ae33d80a | |||
| dd2c72548f | |||
| 96ca30941a | |||
| f001a9aa4b | |||
| 0fd817b13f | |||
| c7eddffbb3 | |||
| 17e0fadd44 | |||
| cfd1972d54 | |||
| 82ae18e914 | |||
| 169959a3ac | |||
| ee98e4bcd3 | |||
| 2a56be453e | |||
| 1128eb5d0f | |||
| adaa9d8b19 | |||
| 7f7f314121 | |||
| 03e3d6c9ca | |||
| 8a7e991c5f | |||
| e04f19ed03 | |||
| ff054f42bb | |||
| 818a48fa78 | |||
| 111ea50d80 | |||
| 1b46845734 | |||
| 497b99c328 | |||
| 6b070d8c14 | |||
| dff743a00b | |||
| f408d3d705 | |||
| c4c018b1ee | |||
| b18e34c905 | |||
| cede57a565 | |||
| 07a75008a1 | |||
| 5e1533289f | |||
| cd1eb1f46c |
@@ -1,59 +0,0 @@
|
|||||||
name: Build
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
workflow_call:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-8:
|
|
||||||
runs-on: almalinux-8
|
|
||||||
container:
|
|
||||||
image: git.unkin.net/unkin/almalinux8-actionsdind:latest
|
|
||||||
options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Build Packages
|
|
||||||
env:
|
|
||||||
VAULT_ROLE_ID: ${{ secrets.RPMBUILDER_VAULT_ROLEID }}
|
|
||||||
run: |
|
|
||||||
./tools/build build-all --distro almalinux/el8
|
|
||||||
|
|
||||||
- name: Show RPMs
|
|
||||||
run: |
|
|
||||||
find /workspace -type f -name "*.rpm"
|
|
||||||
|
|
||||||
- name: Upload Artifacts
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: rpms-8
|
|
||||||
path: /workspace/unkin/rpmbuilder/dist/*/*/*.rpm
|
|
||||||
|
|
||||||
build-9:
|
|
||||||
runs-on: almalinux-8
|
|
||||||
container:
|
|
||||||
image: git.unkin.net/unkin/almalinux9-actionsdind:latest
|
|
||||||
options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Build Packages
|
|
||||||
env:
|
|
||||||
VAULT_ROLE_ID: ${{ secrets.RPMBUILDER_VAULT_ROLEID }}
|
|
||||||
run: |
|
|
||||||
./tools/build build-all --distro almalinux/el9
|
|
||||||
|
|
||||||
- name: Show RPMs
|
|
||||||
run: |
|
|
||||||
find /workspace -type f -name "*.rpm"
|
|
||||||
|
|
||||||
- name: Upload Artifacts
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: rpms-9
|
|
||||||
path: /workspace/unkin/rpmbuilder/dist/*/*/*.rpm
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
name: Deploy
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy-8:
|
|
||||||
runs-on: almalinux-8
|
|
||||||
container:
|
|
||||||
image: git.unkin.net/unkin/almalinux8-actionsdind:latest
|
|
||||||
options: --privileged
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Download Artifacts
|
|
||||||
run: |
|
|
||||||
mkdir -p /workspace/unkin/rpmbuilder/dist/almalinux/el8
|
|
||||||
export PREVIOUS_RUN_ID=$((GITHUB_RUN_NUMBER - 1))
|
|
||||||
curl -L -o /workspace/rpms.zip "https://git.unkin.net/${GITHUB_REPOSITORY}/actions/runs/${PREVIOUS_RUN_ID}/artifacts/rpms-8"
|
|
||||||
unzip /workspace/rpms.zip -d /workspace/unkin/rpmbuilder/dist/almalinux/el8
|
|
||||||
|
|
||||||
- name: Show RPMs
|
|
||||||
run: |
|
|
||||||
find /workspace -type f -name "*.rpm"
|
|
||||||
|
|
||||||
- name: Upload RPMs to Gitea
|
|
||||||
env:
|
|
||||||
DRONECI_PASSWORD: ${{ secrets.DRONECI_PASSWORD }}
|
|
||||||
run: |
|
|
||||||
for rpm in $(find /workspace/unkin/rpmbuilder/dist/almalinux/el8 -type f -name "*.rpm"); do
|
|
||||||
curl --user droneci:${{ secrets.DRONECI_PASSWORD }} --upload-file $rpm https://git.unkin.net/api/packages/unkin/rpm/almalinux/el8/upload
|
|
||||||
done
|
|
||||||
|
|
||||||
deploy-9:
|
|
||||||
runs-on: almalinux-8
|
|
||||||
container:
|
|
||||||
image: git.unkin.net/unkin/almalinux9-actionsdind:latest
|
|
||||||
options: --privileged
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Download Artifacts
|
|
||||||
run: |
|
|
||||||
mkdir -p /workspace/unkin/rpmbuilder/dist/almalinux/el9
|
|
||||||
export PREVIOUS_RUN_ID=$((GITHUB_RUN_NUMBER - 1))
|
|
||||||
curl -L -o /workspace/rpms.zip "https://git.unkin.net/${GITHUB_REPOSITORY}/actions/runs/${PREVIOUS_RUN_ID}/artifacts/rpms-9"
|
|
||||||
unzip /workspace/rpms.zip -d /workspace/unkin/rpmbuilder/dist/almalinux/el9
|
|
||||||
|
|
||||||
- name: Show RPMs
|
|
||||||
run: |
|
|
||||||
find /workspace -type f -name "*.rpm"
|
|
||||||
|
|
||||||
- name: Upload RPMs to Gitea
|
|
||||||
env:
|
|
||||||
DRONECI_PASSWORD: ${{ secrets.DRONECI_PASSWORD }}
|
|
||||||
run: |
|
|
||||||
for rpm in $(find /workspace/unkin/rpmbuilder/dist/almalinux/el9 -type f -name "*.rpm"); do
|
|
||||||
curl --user droneci:${{ secrets.DRONECI_PASSWORD }} --upload-file $rpm https://git.unkin.net/api/packages/unkin/rpm/almalinux/el9/upload
|
|
||||||
done
|
|
||||||
+16
-3
@@ -3,12 +3,24 @@ repos:
|
|||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.5.0
|
rev: v4.5.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: check-executables-have-shebangs
|
||||||
- id: end-of-file-fixer
|
- id: check-json
|
||||||
|
- id: check-added-large-files
|
||||||
|
args: ['--maxkb=500']
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: check-shebang-scripts-are-executable
|
||||||
|
- id: check-symlinks
|
||||||
|
- id: check-toml
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
args: [--allow-multiple-documents]
|
args: [--allow-multiple-documents]
|
||||||
- id: check-merge-conflict
|
- id: detect-aws-credentials
|
||||||
|
args: [--allow-missing-credentials]
|
||||||
- id: detect-private-key
|
- id: detect-private-key
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- id: forbid-new-submodules
|
||||||
|
- id: pretty-format-json
|
||||||
|
- id: trailing-whitespace
|
||||||
|
|
||||||
- repo: https://github.com/adrienverge/yamllint.git
|
- repo: https://github.com/adrienverge/yamllint.git
|
||||||
rev: v1.37.1
|
rev: v1.37.1
|
||||||
hooks:
|
hooks:
|
||||||
@@ -18,6 +30,7 @@ repos:
|
|||||||
"-d {extends: relaxed, rules: {line-length: disable}}",
|
"-d {extends: relaxed, rules: {line-length: disable}}",
|
||||||
"-s",
|
"-s",
|
||||||
]
|
]
|
||||||
|
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.14.7
|
rev: v0.14.7
|
||||||
hooks:
|
hooks:
|
||||||
|
|||||||
@@ -3,13 +3,18 @@ when:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: build rpms
|
- name: build rpms
|
||||||
image: gcr.io/kaniko-project/executor:latest
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
commands:
|
commands:
|
||||||
- ./tools/build build-all --distro almalinux/el8 --use-kaniko
|
- mkdir -p /woodpecker/rpms
|
||||||
|
- ln -s /woodpecker/rpms /workspace
|
||||||
|
- dnf install buildah -y
|
||||||
|
- ./tools/build build-all --distro almalinux/el8 --buildah
|
||||||
|
privileged: true
|
||||||
backend_options:
|
backend_options:
|
||||||
kubernetes:
|
kubernetes:
|
||||||
serviceAccountName: default
|
serviceAccountName: default
|
||||||
|
|
||||||
- name: show rpms
|
- name: show rpms
|
||||||
image: git.unkin.net/unkin/almalinux8-base:latest
|
image: git.unkin.net/unkin/almalinux8-base:latest
|
||||||
commands:
|
commands:
|
||||||
- find /workspace -type f -name "*.rpm"
|
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
|
||||||
|
|||||||
@@ -3,13 +3,18 @@ when:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: build rpms
|
- name: build rpms
|
||||||
image: gcr.io/kaniko-project/executor:latest
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
commands:
|
commands:
|
||||||
- ./tools/build build-all --distro almalinux/el8 --use-kaniko
|
- mkdir -p /woodpecker/rpms
|
||||||
|
- ln -s /woodpecker/rpms /workspace
|
||||||
|
- dnf install buildah -y
|
||||||
|
- ./tools/build build-all --distro almalinux/el9 --buildah
|
||||||
|
privileged: true
|
||||||
backend_options:
|
backend_options:
|
||||||
kubernetes:
|
kubernetes:
|
||||||
serviceAccountName: default
|
serviceAccountName: default
|
||||||
|
|
||||||
- name: show rpms
|
- name: show rpms
|
||||||
image: git.unkin.net/unkin/almalinux8-base:latest
|
image: git.unkin.net/unkin/almalinux9-base:latest
|
||||||
commands:
|
commands:
|
||||||
- find /workspace -type f -name "*.rpm"
|
- find /woodpecker/src/git.unkin.net/unkin/rpmbuilder/ -type f -name "*.rpm"
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
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
|
||||||
|
- dnf install buildah -y
|
||||||
|
- ./tools/build build-all --distro almalinux/el8 --buildah
|
||||||
|
privileged: true
|
||||||
|
backend_options:
|
||||||
|
kubernetes:
|
||||||
|
serviceAccountName: default
|
||||||
|
|
||||||
|
- 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:
|
||||||
|
- |
|
||||||
|
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
|
||||||
|
environment:
|
||||||
|
DRONECI_PASSWORD:
|
||||||
|
from_secret: DRONECI_PASSWORD
|
||||||
|
backend_options:
|
||||||
|
kubernetes:
|
||||||
|
serviceAccountName: default
|
||||||
|
depends_on: [build-rpms, show-rpms]
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
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
|
||||||
|
- dnf install buildah -y
|
||||||
|
- ./tools/build build-all --distro almalinux/el9 --buildah
|
||||||
|
privileged: true
|
||||||
|
backend_options:
|
||||||
|
kubernetes:
|
||||||
|
serviceAccountName: default
|
||||||
|
|
||||||
|
- 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:
|
||||||
|
- |
|
||||||
|
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
|
||||||
|
environment:
|
||||||
|
DRONECI_PASSWORD:
|
||||||
|
from_secret: DRONECI_PASSWORD
|
||||||
|
backend_options:
|
||||||
|
kubernetes:
|
||||||
|
serviceAccountName: default
|
||||||
|
depends_on: [build-rpms, show-rpms]
|
||||||
@@ -26,6 +26,16 @@ build-all:
|
|||||||
@echo "Building all packages using Python tooling for distro $(DISTRO)..."
|
@echo "Building all packages using Python tooling for distro $(DISTRO)..."
|
||||||
$(BUILD_TOOL) build-all --distro $(DISTRO)
|
$(BUILD_TOOL) build-all --distro $(DISTRO)
|
||||||
|
|
||||||
|
# Build all packages using native build (no Docker)
|
||||||
|
build-all-native:
|
||||||
|
@echo "Building all packages natively (no Docker) for distro $(DISTRO)..."
|
||||||
|
$(BUILD_TOOL) build-all --distro $(DISTRO) --native
|
||||||
|
|
||||||
|
# Build all packages using Buildah
|
||||||
|
build-all-buildah:
|
||||||
|
@echo "Building all packages using Buildah for distro $(DISTRO)..."
|
||||||
|
$(BUILD_TOOL) build-all --distro $(DISTRO) --buildah
|
||||||
|
|
||||||
# Build specific package using Python tool
|
# Build specific package using Python tool
|
||||||
.PHONY: $(PACKAGES)
|
.PHONY: $(PACKAGES)
|
||||||
$(PACKAGES):
|
$(PACKAGES):
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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.10.1
|
version: 0.15.0
|
||||||
- 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.10.1
|
version: 0.15.0
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
arch: amd64
|
||||||
|
builds:
|
||||||
|
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
repository:
|
||||||
|
- almalinux/el8
|
||||||
|
version: 2.1.126
|
||||||
|
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
repository:
|
||||||
|
- almalinux/el9
|
||||||
|
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
|
||||||
Executable
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Download claude-code binary
|
||||||
|
wget -O /app/claude https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/claude-ai/claude-code-releases/${PACKAGE_VERSION}/linux-x64/claude
|
||||||
|
chmod +x /app/claude
|
||||||
|
|
||||||
|
# Process the nfpm.yaml template with environment variables
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
# Build the RPM
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# nfpm.yaml
|
||||||
|
|
||||||
|
name: ${PACKAGE_NAME}
|
||||||
|
version: ${PACKAGE_VERSION}
|
||||||
|
release: ${PACKAGE_RELEASE}
|
||||||
|
arch: ${PACKAGE_ARCH}
|
||||||
|
platform: ${PACKAGE_PLATFORM}
|
||||||
|
section: default
|
||||||
|
priority: extra
|
||||||
|
description: "${PACKAGE_DESCRIPTION}"
|
||||||
|
|
||||||
|
maintainer: ${PACKAGE_MAINTAINER}
|
||||||
|
homepage: ${PACKAGE_HOMEPAGE}
|
||||||
|
license: ${PACKAGE_LICENSE}
|
||||||
|
|
||||||
|
disable_globbing: false
|
||||||
|
|
||||||
|
replaces:
|
||||||
|
- claude-code
|
||||||
|
- claude
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- claude-code
|
||||||
|
- claude
|
||||||
|
|
||||||
|
# Files to include in the package
|
||||||
|
contents:
|
||||||
|
- src: /app/claude
|
||||||
|
dst: /usr/bin/claude
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.9.0
|
version: 1.9.1
|
||||||
- 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: 1.9.0
|
version: 1.9.1
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: code-server
|
||||||
|
github: coder/code-server
|
||||||
|
description: VS Code in the browser.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: Coder
|
||||||
|
homepage: https://github.com/coder/code-server
|
||||||
|
license: MIT
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 4.117.0
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 4.117.0
|
||||||
Executable
+6
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
curl -L -o /app/dist/code-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.x86_64.rpm \
|
||||||
|
https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/coder/code-server/releases/download/v${PACKAGE_VERSION}/code-server-${PACKAGE_VERSION}-amd64.rpm
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# nfpm.yaml - unused, RPM is downloaded directly in build.sh
|
||||||
|
|
||||||
|
name: ${PACKAGE_NAME}
|
||||||
|
version: ${PACKAGE_VERSION}
|
||||||
|
release: ${PACKAGE_RELEASE}
|
||||||
|
arch: ${PACKAGE_ARCH}
|
||||||
|
platform: ${PACKAGE_PLATFORM}
|
||||||
|
section: default
|
||||||
|
priority: extra
|
||||||
|
description: "${PACKAGE_DESCRIPTION}"
|
||||||
|
|
||||||
|
maintainer: ${PACKAGE_MAINTAINER}
|
||||||
|
homepage: ${PACKAGE_HOMEPAGE}
|
||||||
|
license: ${PACKAGE_LICENSE}
|
||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.22.2
|
version: 1.22.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: 1.22.2
|
version: 1.22.7
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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.7
|
version: 3.6.10
|
||||||
- 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.7
|
version: 3.6.10
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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: 1.9.0
|
version: 1.11.0
|
||||||
- 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: 1.9.0
|
version: 1.11.0
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: git-delta
|
||||||
|
github: dandavison/delta
|
||||||
|
description: A syntax-highlighting pager for git, diff, grep, and blame output.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: dandavison
|
||||||
|
homepage: https://github.com/dandavison/delta
|
||||||
|
license: MIT
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.19.2
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.19.2
|
||||||
Executable
+12
@@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Note: delta releases use plain version tags (no v prefix)
|
||||||
|
wget -O /app/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/dandavison/delta/releases/download/${PACKAGE_VERSION}/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl.tar.gz
|
||||||
|
tar xf /app/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl.tar.gz
|
||||||
|
mv /app/delta-${PACKAGE_VERSION}-x86_64-unknown-linux-musl/delta /app/delta
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- git-delta
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- git-delta
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/delta
|
||||||
|
dst: /usr/bin/delta
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: hadolint
|
||||||
|
github: hadolint/hadolint
|
||||||
|
description: A smarter Dockerfile linter that helps you build best practice Docker images.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: hadolint
|
||||||
|
homepage: https://github.com/hadolint/hadolint
|
||||||
|
license: GPL-3.0
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 2.14.0
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 2.14.0
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/hadolint https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/hadolint/hadolint/releases/download/v${PACKAGE_VERSION}/hadolint-linux-x86_64
|
||||||
|
chmod +x /app/hadolint
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- hadolint
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- hadolint
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/hadolint
|
||||||
|
dst: /usr/bin/hadolint
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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: 4.0.5
|
version: 4.1.4
|
||||||
- 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: 4.0.5
|
version: 4.1.4
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ builds:
|
|||||||
- 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: 1.2.3
|
version: 1.4.4
|
||||||
- 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: 1.2.3
|
version: 1.4.4
|
||||||
|
|||||||
Regular → Executable
@@ -1,15 +1,17 @@
|
|||||||
---
|
|
||||||
arch: amd64
|
arch: amd64
|
||||||
builds:
|
builds:
|
||||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
release: '1'
|
release: 1
|
||||||
repository: [almalinux/el8]
|
repository:
|
||||||
version: 0.16.0
|
- almalinux/el8
|
||||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
version: 0.17.0
|
||||||
release: '1'
|
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
repository: [almalinux/el9]
|
release: 1
|
||||||
version: 0.16.0
|
repository:
|
||||||
description: Jsonnet Language Server Protocol implementation for the Jsonnet templating language.
|
- almalinux/el9
|
||||||
|
version: 0.17.0
|
||||||
|
description: Jsonnet Language Server Protocol implementation for the Jsonnet templating
|
||||||
|
language.
|
||||||
github: grafana/jsonnet-language-server
|
github: grafana/jsonnet-language-server
|
||||||
homepage: https://github.com/grafana/jsonnet-language-server
|
homepage: https://github.com/grafana/jsonnet-language-server
|
||||||
license: Apache-2.0
|
license: Apache-2.0
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
---
|
|
||||||
arch: amd64
|
arch: amd64
|
||||||
builds:
|
builds:
|
||||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
release: '1'
|
release: 1
|
||||||
repository: [almalinux/el8]
|
repository:
|
||||||
version: 0.21.0
|
- almalinux/el8
|
||||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
version: 0.22.0
|
||||||
release: '1'
|
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
repository: [almalinux/el9]
|
release: 1
|
||||||
version: 0.21.0
|
repository:
|
||||||
|
- almalinux/el9
|
||||||
|
version: 0.22.0
|
||||||
description: Linter for Jsonnet
|
description: Linter for Jsonnet
|
||||||
github: google/go-jsonnet
|
github: google/go-jsonnet
|
||||||
homepage: https://github.com/google/go-jsonnet
|
homepage: https://github.com/google/go-jsonnet
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
---
|
|
||||||
arch: amd64
|
arch: amd64
|
||||||
builds:
|
builds:
|
||||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
release: '1'
|
release: 1
|
||||||
repository: [almalinux/el8]
|
repository:
|
||||||
version: 0.21.0
|
- almalinux/el8
|
||||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
version: 0.22.0
|
||||||
release: '1'
|
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
repository: [almalinux/el9]
|
release: 1
|
||||||
version: 0.21.0
|
repository:
|
||||||
|
- almalinux/el9
|
||||||
|
version: 0.22.0
|
||||||
description: A data templating language
|
description: A data templating language
|
||||||
github: google/go-jsonnet
|
github: google/go-jsonnet
|
||||||
homepage: https://github.com/google/go-jsonnet
|
homepage: https://github.com/google/go-jsonnet
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: kubectx
|
||||||
|
github: ahmetb/kubectx
|
||||||
|
description: Faster way to switch between clusters and namespaces in kubectl.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: ahmetb
|
||||||
|
homepage: https://github.com/ahmetb/kubectx
|
||||||
|
license: Apache-2.0
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.11.0
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.11.0
|
||||||
Executable
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/kubectx_v${PACKAGE_VERSION}_linux_x86_64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/ahmetb/kubectx/releases/download/v${PACKAGE_VERSION}/kubectx_v${PACKAGE_VERSION}_linux_x86_64.tar.gz
|
||||||
|
wget -O /app/kubens_v${PACKAGE_VERSION}_linux_x86_64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/ahmetb/kubectx/releases/download/v${PACKAGE_VERSION}/kubens_v${PACKAGE_VERSION}_linux_x86_64.tar.gz
|
||||||
|
|
||||||
|
tar xf /app/kubectx_v${PACKAGE_VERSION}_linux_x86_64.tar.gz -C /app/ kubectx
|
||||||
|
tar xf /app/kubens_v${PACKAGE_VERSION}_linux_x86_64.tar.gz -C /app/ kubens
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# 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:
|
||||||
|
- kubectx
|
||||||
|
- kubens
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- kubectx
|
||||||
|
- kubens
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/kubectx
|
||||||
|
dst: /usr/bin/kubectx
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
- src: /app/kubens
|
||||||
|
dst: /usr/bin/kubens
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: lazydocker
|
||||||
|
github: jesseduffield/lazydocker
|
||||||
|
description: The lazier way to manage everything docker.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: jesseduffield
|
||||||
|
homepage: https://github.com/jesseduffield/lazydocker
|
||||||
|
license: MIT
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.25.2
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.25.2
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/lazydocker_${PACKAGE_VERSION}_Linux_x86_64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/jesseduffield/lazydocker/releases/download/v${PACKAGE_VERSION}/lazydocker_${PACKAGE_VERSION}_Linux_x86_64.tar.gz
|
||||||
|
tar xf /app/lazydocker_${PACKAGE_VERSION}_Linux_x86_64.tar.gz -C /app/ lazydocker
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- lazydocker
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- lazydocker
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/lazydocker
|
||||||
|
dst: /usr/bin/lazydocker
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
Regular → Executable
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: neovim-glibc-2.17
|
||||||
|
github: neovim/neovim-releases
|
||||||
|
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
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.12.2
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.12.2
|
||||||
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/nvim-linux-x86_64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/neovim/neovim-releases/releases/download/v${PACKAGE_VERSION}/nvim-linux-x86_64.tar.gz
|
||||||
|
tar xf /app/nvim-linux-x86_64.tar.gz
|
||||||
|
mv /app/nvim-linux-x86_64/bin/nvim /app/nvim
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# 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:
|
||||||
|
- neovim-glibc-2.17
|
||||||
|
- neovim
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- neovim-glibc-2.17
|
||||||
|
- nvim
|
||||||
|
|
||||||
|
conflicts:
|
||||||
|
- neovim
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/nvim
|
||||||
|
dst: /usr/bin/nvim
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: neovim
|
||||||
|
github: neovim/neovim
|
||||||
|
description: Vim-fork focused on extensibility and usability.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: neovim
|
||||||
|
homepage: https://neovim.io
|
||||||
|
license: Apache-2.0
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.12.2
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.12.2
|
||||||
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/nvim-linux-x86_64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/neovim/neovim/releases/download/v${PACKAGE_VERSION}/nvim-linux-x86_64.tar.gz
|
||||||
|
tar xf /app/nvim-linux-x86_64.tar.gz
|
||||||
|
mv /app/nvim-linux-x86_64/bin/nvim /app/nvim
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# 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:
|
||||||
|
- neovim
|
||||||
|
- neovim-glibc-2.17
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- neovim
|
||||||
|
- nvim
|
||||||
|
|
||||||
|
conflicts:
|
||||||
|
- neovim-glibc-2.17
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/nvim
|
||||||
|
dst: /usr/bin/nvim
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 2.44.1
|
version: 2.46.3
|
||||||
- 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: 2.44.1
|
version: 2.46.3
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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: 1.10.2
|
version: 1.11.1
|
||||||
- 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: 1.10.2
|
version: 1.11.1
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ builds:
|
|||||||
- 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.4.8
|
version: 0.4.9
|
||||||
- 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.4.8
|
version: 0.4.9
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ builds:
|
|||||||
- repository:
|
- repository:
|
||||||
- almalinux/el8
|
- almalinux/el8
|
||||||
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
release: 2
|
release: 1
|
||||||
version: '25.4'
|
version: '26.1'
|
||||||
- repository:
|
- repository:
|
||||||
- almalinux/el9
|
- almalinux/el9
|
||||||
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
release: 2
|
release: 1
|
||||||
version: '25.4'
|
version: '26.1'
|
||||||
|
|||||||
Regular → Executable
Regular → Executable
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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: 1.14.3
|
version: 1.15.3
|
||||||
- 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: 1.14.3
|
version: 1.15.3
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
---
|
|
||||||
arch: amd64
|
arch: amd64
|
||||||
builds:
|
builds:
|
||||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
release: '1'
|
release: 1
|
||||||
repository: [almalinux/el8]
|
repository:
|
||||||
version: 0.11.0
|
- almalinux/el8
|
||||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
version: 0.12.0
|
||||||
release: '1'
|
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
repository: [almalinux/el9]
|
release: 1
|
||||||
version: 0.11.0
|
repository:
|
||||||
|
- almalinux/el9
|
||||||
|
version: 0.12.0
|
||||||
description: Prometheus exporter for PgBouncer
|
description: Prometheus exporter for PgBouncer
|
||||||
github: prometheus-community/pgbouncer_exporter
|
github: prometheus-community/pgbouncer_exporter
|
||||||
homepage: https://github.com/prometheus-community/pgbouncer_exporter
|
homepage: https://github.com/prometheus-community/pgbouncer_exporter
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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.18.1
|
version: 0.19.1
|
||||||
- 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.18.1
|
version: 0.19.1
|
||||||
|
|||||||
Regular → Executable
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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.14.10
|
version: 0.15.12
|
||||||
- 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.14.10
|
version: 0.15.12
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: sops
|
||||||
|
github: getsops/sops
|
||||||
|
description: Simple and flexible tool for managing secrets.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: getsops
|
||||||
|
homepage: https://github.com/getsops/sops
|
||||||
|
license: MPL-2.0
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 3.12.2
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 3.12.2
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/sops https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/getsops/sops/releases/download/v${PACKAGE_VERSION}/sops-v${PACKAGE_VERSION}.linux.amd64
|
||||||
|
chmod +x /app/sops
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- sops
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- sops
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/sops
|
||||||
|
dst: /usr/bin/sops
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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.15.3
|
version: 0.16.3
|
||||||
- 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.15.3
|
version: 0.16.3
|
||||||
|
|||||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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.15.3
|
version: 0.16.3
|
||||||
- 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.15.3
|
version: 0.16.3
|
||||||
|
|||||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
@@ -0,0 +1,20 @@
|
|||||||
|
name: starship
|
||||||
|
github: starship/starship
|
||||||
|
description: The minimal, blazing-fast, and infinitely customizable prompt for any
|
||||||
|
shell.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: starship
|
||||||
|
homepage: https://starship.rs
|
||||||
|
license: ISC
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 1.25.1
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 1.25.1
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/starship-x86_64-unknown-linux-musl.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/starship/starship/releases/download/v${PACKAGE_VERSION}/starship-x86_64-unknown-linux-musl.tar.gz
|
||||||
|
tar xf /app/starship-x86_64-unknown-linux-musl.tar.gz
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- starship
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- starship
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/starship
|
||||||
|
dst: /usr/bin/starship
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: stern
|
||||||
|
github: stern/stern
|
||||||
|
description: Multi pod and container log tailing for Kubernetes.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: stern
|
||||||
|
homepage: https://github.com/stern/stern
|
||||||
|
license: Apache-2.0
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 1.33.1
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 1.33.1
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/stern_${PACKAGE_VERSION}_linux_amd64.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/stern/stern/releases/download/v${PACKAGE_VERSION}/stern_${PACKAGE_VERSION}_linux_amd64.tar.gz
|
||||||
|
tar xf /app/stern_${PACKAGE_VERSION}_linux_amd64.tar.gz
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- stern
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- stern
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/stern
|
||||||
|
dst: /usr/bin/stern
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: tea
|
||||||
|
github: unknown/tea
|
||||||
|
description: The official CLI for Gitea.
|
||||||
|
arch: amd64
|
||||||
|
platform: linux
|
||||||
|
maintainer: Gitea
|
||||||
|
homepage: https://gitea.com/gitea/tea
|
||||||
|
license: MIT
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.14.0
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 0.14.0
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
curl -L --output /app/tea-linux-amd64 https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/gitea-dl/tea/${PACKAGE_VERSION}/tea-${PACKAGE_VERSION}-linux-amd64
|
||||||
|
chmod +x /app/tea-linux-amd64
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- tea
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- tea
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/tea-linux-amd64
|
||||||
|
dst: /usr/bin/tea
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
@@ -14,9 +14,9 @@ builds:
|
|||||||
- 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: 1.14.3
|
version: 1.15.0
|
||||||
- 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: 1.14.3
|
version: 1.15.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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.96.1
|
version: 1.0.3
|
||||||
- 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.96.1
|
version: 1.0.3
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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.60.0
|
version: 0.62.0
|
||||||
- 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.60.0
|
version: 0.62.0
|
||||||
|
|||||||
Regular → Executable
@@ -4,11 +4,11 @@ builds:
|
|||||||
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
- image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
release: '1'
|
release: '1'
|
||||||
repository: [almalinux/el8]
|
repository: [almalinux/el8]
|
||||||
version: '7.12'
|
version: '7.20'
|
||||||
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
- image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
release: '1'
|
release: '1'
|
||||||
repository: [almalinux/el9]
|
repository: [almalinux/el9]
|
||||||
version: '7.12'
|
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.
|
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
|
||||||
homepage: https://www.rarlab.com/
|
homepage: https://www.rarlab.com/
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ set -e
|
|||||||
|
|
||||||
# Download and extract unrar (with version formatting)
|
# Download and extract unrar (with version formatting)
|
||||||
export DOWNLOAD_VERSION=$(echo $PACKAGE_VERSION | sed s/\\.//)
|
export DOWNLOAD_VERSION=$(echo $PACKAGE_VERSION | sed s/\\.//)
|
||||||
curl -L -o /app/rarlinux.tar.gz https://www.rarlab.com/rar/rarlinux-x64-${DOWNLOAD_VERSION}.tar.gz
|
curl -L -o /app/rarlinux.tar.gz https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/rarlab/rar/rarlinux-x64-${DOWNLOAD_VERSION}.tar.gz
|
||||||
tar xf /app/rarlinux.tar.gz
|
tar xf /app/rarlinux.tar.gz -C /app
|
||||||
mv /app/rar/unrar /app/
|
mv /app/rar/unrar /app/
|
||||||
|
|
||||||
# Process the nfpm.yaml template with environment variables
|
# Process the nfpm.yaml template with environment variables
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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.9.20
|
version: 0.11.8
|
||||||
- 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.9.20
|
version: 0.11.8
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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.43.0
|
version: 0.44.0
|
||||||
- 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.43.0
|
version: 0.44.0
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ builds:
|
|||||||
- 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: 1.21.1
|
version: 2.0.0
|
||||||
- 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: 1.21.1
|
version: 2.0.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.43.1
|
version: 1.50.0
|
||||||
- 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: 1.43.1
|
version: 1.50.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.43.1
|
version: 1.50.0
|
||||||
- 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: 1.43.1
|
version: 1.50.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ builds:
|
|||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ builds:
|
|||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
- 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: 1.132.0
|
version: 1.142.0
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: yq
|
||||||
|
github: mikefarah/yq
|
||||||
|
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
|
||||||
|
builds:
|
||||||
|
- repository:
|
||||||
|
- almalinux/el8
|
||||||
|
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 4.53.2
|
||||||
|
- repository:
|
||||||
|
- almalinux/el9
|
||||||
|
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
|
||||||
|
release: 1
|
||||||
|
version: 4.53.2
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
wget -O /app/yq https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/mikefarah/yq/releases/download/v${PACKAGE_VERSION}/yq_linux_amd64
|
||||||
|
chmod +x /app/yq
|
||||||
|
|
||||||
|
envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml
|
||||||
|
|
||||||
|
nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm
|
||||||
@@ -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:
|
||||||
|
- yq
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- yq
|
||||||
|
|
||||||
|
contents:
|
||||||
|
- src: /app/yq
|
||||||
|
dst: /usr/bin/yq
|
||||||
|
file_info:
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
+319
-104
@@ -601,16 +601,41 @@ def check_docker_available() -> bool:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def check_kaniko_available() -> bool:
|
def check_native_build_deps() -> bool:
|
||||||
"""
|
"""
|
||||||
Check if Kaniko executor is available.
|
Check if native build dependencies are available (nfpm, envsubst, etc.).
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
True if Kaniko is available, False otherwise
|
True if native build dependencies are available, False otherwise
|
||||||
|
"""
|
||||||
|
required_commands = ['nfpm', 'envsubst', 'wget', 'tar']
|
||||||
|
|
||||||
|
for cmd in required_commands:
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
[cmd, '--version'],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
timeout=5
|
||||||
|
)
|
||||||
|
if result.returncode != 0:
|
||||||
|
return False
|
||||||
|
except (subprocess.TimeoutExpired, FileNotFoundError):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def check_buildah_available() -> bool:
|
||||||
|
"""
|
||||||
|
Check if Buildah is available.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
True if Buildah is available, False otherwise
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
['/kaniko/executor', '--version'],
|
['buildah', 'version'],
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
timeout=10
|
timeout=10
|
||||||
@@ -744,6 +769,7 @@ def build_package_docker(
|
|||||||
build_args = [
|
build_args = [
|
||||||
'docker', 'build',
|
'docker', 'build',
|
||||||
'--pull',
|
'--pull',
|
||||||
|
'--network=host',
|
||||||
'-f', str(central_dockerfile),
|
'-f', str(central_dockerfile),
|
||||||
'--build-arg', f'BASE_IMAGE={base_image}',
|
'--build-arg', f'BASE_IMAGE={base_image}',
|
||||||
'--build-arg', f'PACKAGE_NAME={package_name}',
|
'--build-arg', f'PACKAGE_NAME={package_name}',
|
||||||
@@ -776,6 +802,7 @@ def build_package_docker(
|
|||||||
# Step 2: Create and start container
|
# Step 2: Create and start container
|
||||||
create_args = [
|
create_args = [
|
||||||
'docker', 'create',
|
'docker', 'create',
|
||||||
|
'--network=host',
|
||||||
'--name', container_name,
|
'--name', container_name,
|
||||||
image_name
|
image_name
|
||||||
]
|
]
|
||||||
@@ -827,7 +854,132 @@ def build_package_docker(
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def build_package_kaniko(
|
def build_package_native(
|
||||||
|
package_dir: Path,
|
||||||
|
package_name: str,
|
||||||
|
package_version: str,
|
||||||
|
package_release: str,
|
||||||
|
dist_dir: Path,
|
||||||
|
repository: str,
|
||||||
|
dry_run: bool = False
|
||||||
|
) -> bool:
|
||||||
|
"""
|
||||||
|
Build a package natively without Docker, running build scripts directly.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
package_dir: Directory containing the package resources
|
||||||
|
package_name: Name of the package
|
||||||
|
package_version: Package version
|
||||||
|
package_release: Package release number
|
||||||
|
dist_dir: Directory to store built packages
|
||||||
|
repository: Repository path (e.g., 'almalinux/el9')
|
||||||
|
dry_run: If True, only show what would be done
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
True if build succeeded, False otherwise
|
||||||
|
"""
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Ensure dist directory exists with repository structure
|
||||||
|
package_dist_dir = dist_dir / repository
|
||||||
|
if not dry_run:
|
||||||
|
package_dist_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
# Create a temporary workspace for native build
|
||||||
|
import tempfile
|
||||||
|
with tempfile.TemporaryDirectory() as temp_dir:
|
||||||
|
temp_path = Path(temp_dir)
|
||||||
|
app_dir = temp_path / "app"
|
||||||
|
app_dist_dir = app_dir / "dist"
|
||||||
|
|
||||||
|
# Create directories
|
||||||
|
if not dry_run:
|
||||||
|
app_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
app_dist_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
# Copy package resources to temp directory
|
||||||
|
import shutil
|
||||||
|
temp_resources_dir = app_dir / "resources"
|
||||||
|
if not dry_run:
|
||||||
|
shutil.copytree(package_dir / "resources", temp_resources_dir)
|
||||||
|
|
||||||
|
# Read metadata.yaml to get all package fields
|
||||||
|
metadata_file = package_dir / "metadata.yaml"
|
||||||
|
metadata = {}
|
||||||
|
if metadata_file.exists():
|
||||||
|
try:
|
||||||
|
with open(metadata_file, 'r') as f:
|
||||||
|
metadata = yaml.safe_load(f) or {}
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Could not read metadata.yaml: {e}")
|
||||||
|
|
||||||
|
logger.info(f"Building RPM for {package_name} version {package_version} natively")
|
||||||
|
|
||||||
|
if dry_run:
|
||||||
|
logger.info(f"[DRY RUN] Would build natively from: {temp_path}")
|
||||||
|
logger.info("[DRY RUN] Would set environment variables:")
|
||||||
|
logger.info(f"[DRY RUN] PACKAGE_NAME={package_name}")
|
||||||
|
logger.info(f"[DRY RUN] PACKAGE_VERSION={package_version}")
|
||||||
|
logger.info(f"[DRY RUN] PACKAGE_RELEASE={package_release}")
|
||||||
|
logger.info(f"[DRY RUN] PACKAGE_DESCRIPTION={metadata.get('description', '')}")
|
||||||
|
logger.info(f"[DRY RUN] Would run: {temp_resources_dir / 'build.sh'}")
|
||||||
|
logger.info(f"[DRY RUN] Would copy artifacts to: {package_dist_dir}")
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Set up environment variables like the Dockerfile does
|
||||||
|
build_env = os.environ.copy()
|
||||||
|
build_env.update({
|
||||||
|
'PACKAGE_NAME': package_name,
|
||||||
|
'PACKAGE_VERSION': package_version,
|
||||||
|
'PACKAGE_RELEASE': package_release,
|
||||||
|
'PACKAGE_DESCRIPTION': metadata.get('description', ''),
|
||||||
|
'PACKAGE_MAINTAINER': metadata.get('maintainer', ''),
|
||||||
|
'PACKAGE_HOMEPAGE': metadata.get('homepage', ''),
|
||||||
|
'PACKAGE_LICENSE': metadata.get('license', ''),
|
||||||
|
'PACKAGE_ARCH': metadata.get('arch', 'amd64'),
|
||||||
|
'PACKAGE_PLATFORM': metadata.get('platform', 'linux')
|
||||||
|
})
|
||||||
|
|
||||||
|
# Run the build script
|
||||||
|
build_script = temp_resources_dir / "build.sh"
|
||||||
|
if not build_script.exists():
|
||||||
|
logger.error(f"Build script not found: {build_script}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Make build script executable
|
||||||
|
build_script.chmod(0o755)
|
||||||
|
|
||||||
|
logger.debug(f"Running build script: {build_script}")
|
||||||
|
result = subprocess.run(
|
||||||
|
[str(build_script)],
|
||||||
|
cwd=app_dir,
|
||||||
|
env=build_env,
|
||||||
|
capture_output=True,
|
||||||
|
text=True
|
||||||
|
)
|
||||||
|
|
||||||
|
if result.returncode != 0:
|
||||||
|
logger.error(f"Native build failed for {package_name}")
|
||||||
|
logger.error(f"stdout: {result.stdout}")
|
||||||
|
logger.error(f"stderr: {result.stderr}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Copy artifacts to final destination
|
||||||
|
if app_dist_dir.exists():
|
||||||
|
for item in app_dist_dir.iterdir():
|
||||||
|
if item.is_file():
|
||||||
|
shutil.copy2(item, package_dist_dir)
|
||||||
|
|
||||||
|
logger.info(f"Successfully built {package_name}-{package_version}-{package_release} natively")
|
||||||
|
return True
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Unexpected error building {package_name} natively: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def build_package_buildah(
|
||||||
package_dir: Path,
|
package_dir: Path,
|
||||||
package_name: str,
|
package_name: str,
|
||||||
package_version: str,
|
package_version: str,
|
||||||
@@ -838,7 +990,7 @@ def build_package_kaniko(
|
|||||||
dry_run: bool = False
|
dry_run: bool = False
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""
|
"""
|
||||||
Build a package using Kaniko without Docker daemon.
|
Build a package using Buildah without Docker daemon.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
package_dir: Directory containing the package resources
|
package_dir: Directory containing the package resources
|
||||||
@@ -861,103 +1013,140 @@ def build_package_kaniko(
|
|||||||
if not dry_run:
|
if not dry_run:
|
||||||
package_dist_dir.mkdir(parents=True, exist_ok=True)
|
package_dist_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
# Create a temporary workspace for Kaniko
|
# Generate container name
|
||||||
import tempfile
|
container_name = f"{package_name}-{package_version}-buildah"
|
||||||
with tempfile.TemporaryDirectory() as temp_dir:
|
|
||||||
temp_path = Path(temp_dir)
|
|
||||||
|
|
||||||
# Copy package resources to temp directory
|
# Read metadata.yaml to get all package fields
|
||||||
import shutil
|
metadata_file = package_dir / "metadata.yaml"
|
||||||
temp_resources_dir = temp_path / "resources"
|
metadata = {}
|
||||||
shutil.copytree(package_dir / "resources", temp_resources_dir)
|
if metadata_file.exists():
|
||||||
|
try:
|
||||||
|
with open(metadata_file, 'r') as f:
|
||||||
|
metadata = yaml.safe_load(f) or {}
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Could not read metadata.yaml: {e}")
|
||||||
|
|
||||||
# Copy Dockerfile to temp directory
|
logger.info(f"Building RPM for {package_name} version {package_version} using Buildah")
|
||||||
central_dockerfile = package_dir.parent.parent / "Dockerfile"
|
|
||||||
shutil.copy2(central_dockerfile, temp_path / "Dockerfile")
|
|
||||||
|
|
||||||
# Read metadata.yaml to get all package fields
|
if dry_run:
|
||||||
metadata_file = package_dir / "metadata.yaml"
|
logger.info(f"[DRY RUN] Would use Buildah to build from: {base_image}")
|
||||||
metadata = {}
|
logger.info("[DRY RUN] Would set environment variables:")
|
||||||
if metadata_file.exists():
|
logger.info(f"[DRY RUN] PACKAGE_NAME={package_name}")
|
||||||
try:
|
logger.info(f"[DRY RUN] PACKAGE_VERSION={package_version}")
|
||||||
with open(metadata_file, 'r') as f:
|
logger.info(f"[DRY RUN] PACKAGE_RELEASE={package_release}")
|
||||||
metadata = yaml.safe_load(f) or {}
|
logger.info(f"[DRY RUN] Would copy artifacts to: {package_dist_dir}")
|
||||||
except Exception as e:
|
return True
|
||||||
logger.warning(f"Could not read metadata.yaml: {e}")
|
|
||||||
|
|
||||||
logger.info(f"Building RPM for {package_name} version {package_version} using Kaniko")
|
try:
|
||||||
|
# Step 1: Create a working container from base image
|
||||||
if dry_run:
|
from_args = ['buildah', 'from', '--name', container_name, base_image]
|
||||||
logger.info(f"[DRY RUN] Would use Kaniko to build from: {temp_path}")
|
logger.debug(f"Running: {' '.join(from_args)}")
|
||||||
logger.info(f"[DRY RUN] Would use base image: {base_image}")
|
result = subprocess.run(from_args, capture_output=True, text=True)
|
||||||
logger.info("[DRY RUN] Would pass build arguments:")
|
|
||||||
logger.info(f"[DRY RUN] PACKAGE_NAME={package_name}")
|
|
||||||
logger.info(f"[DRY RUN] PACKAGE_VERSION={package_version}")
|
|
||||||
logger.info(f"[DRY RUN] PACKAGE_RELEASE={package_release}")
|
|
||||||
logger.info(f"[DRY RUN] Would copy artifacts to: {package_dist_dir}")
|
|
||||||
return True
|
|
||||||
|
|
||||||
# Build using Kaniko
|
|
||||||
kaniko_args = [
|
|
||||||
'/kaniko/executor',
|
|
||||||
'--context', str(temp_path),
|
|
||||||
'--dockerfile', str(temp_path / "Dockerfile"),
|
|
||||||
'--build-arg', f'BASE_IMAGE={base_image}',
|
|
||||||
'--build-arg', f'PACKAGE_NAME={package_name}',
|
|
||||||
'--build-arg', f'PACKAGE_VERSION={package_version}',
|
|
||||||
'--build-arg', f'PACKAGE_RELEASE={package_release}',
|
|
||||||
'--build-arg', f'PACKAGE_DESCRIPTION={metadata.get("description", "")}',
|
|
||||||
'--build-arg', f'PACKAGE_MAINTAINER={metadata.get("maintainer", "")}',
|
|
||||||
'--build-arg', f'PACKAGE_HOMEPAGE={metadata.get("homepage", "")}',
|
|
||||||
'--build-arg', f'PACKAGE_LICENSE={metadata.get("license", "")}',
|
|
||||||
'--build-arg', f'PACKAGE_ARCH={metadata.get("arch", "amd64")}',
|
|
||||||
'--build-arg', f'PACKAGE_PLATFORM={metadata.get("platform", "linux")}',
|
|
||||||
'--no-push', # Don't push to registry, just build
|
|
||||||
'--tar-path', str(temp_path / "image.tar")
|
|
||||||
]
|
|
||||||
|
|
||||||
logger.debug(f"Running: {' '.join(kaniko_args)}")
|
|
||||||
result = subprocess.run(
|
|
||||||
kaniko_args,
|
|
||||||
capture_output=True,
|
|
||||||
text=True,
|
|
||||||
cwd=temp_path
|
|
||||||
)
|
|
||||||
|
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
logger.error(f"Kaniko build failed for {package_name}")
|
logger.error(f"Failed to create Buildah container from {base_image}")
|
||||||
|
logger.error(f"stderr: {result.stderr}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Step 2: Set environment variables
|
||||||
|
env_vars = {
|
||||||
|
'PACKAGE_NAME': package_name,
|
||||||
|
'PACKAGE_VERSION': package_version,
|
||||||
|
'PACKAGE_RELEASE': package_release,
|
||||||
|
'PACKAGE_DESCRIPTION': metadata.get('description', ''),
|
||||||
|
'PACKAGE_MAINTAINER': metadata.get('maintainer', ''),
|
||||||
|
'PACKAGE_HOMEPAGE': metadata.get('homepage', ''),
|
||||||
|
'PACKAGE_LICENSE': metadata.get('license', ''),
|
||||||
|
'PACKAGE_ARCH': metadata.get('arch', 'amd64'),
|
||||||
|
'PACKAGE_PLATFORM': metadata.get('platform', 'linux')
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, value in env_vars.items():
|
||||||
|
config_args = ['buildah', 'config', '--env', f'{key}={value}', container_name]
|
||||||
|
logger.debug(f"Running: {' '.join(config_args)}")
|
||||||
|
result = subprocess.run(config_args, capture_output=True, text=True)
|
||||||
|
if result.returncode != 0:
|
||||||
|
logger.error(f"Failed to set environment variable {key}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Step 3: Copy resources to container
|
||||||
|
copy_args = [
|
||||||
|
'buildah', 'copy', container_name,
|
||||||
|
str(package_dir / "resources"), '/app/resources'
|
||||||
|
]
|
||||||
|
logger.debug(f"Running: {' '.join(copy_args)}")
|
||||||
|
result = subprocess.run(copy_args, capture_output=True, text=True)
|
||||||
|
|
||||||
|
if result.returncode != 0:
|
||||||
|
logger.error(f"Failed to copy resources to container")
|
||||||
|
logger.error(f"stderr: {result.stderr}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Step 4: Create dist directory in container
|
||||||
|
run_args = ['buildah', 'run', container_name, 'mkdir', '-p', '/app/dist']
|
||||||
|
logger.debug(f"Running: {' '.join(run_args)}")
|
||||||
|
result = subprocess.run(run_args, capture_output=True, text=True)
|
||||||
|
|
||||||
|
# Step 5: Run the build script
|
||||||
|
run_args = ['buildah', 'run', '--workingdir', '/app', container_name, '/app/resources/build.sh']
|
||||||
|
logger.debug(f"Running: {' '.join(run_args)}")
|
||||||
|
result = subprocess.run(run_args, capture_output=True, text=True)
|
||||||
|
|
||||||
|
if result.returncode != 0:
|
||||||
|
logger.error(f"Buildah build script failed for {package_name}")
|
||||||
logger.error(f"stdout: {result.stdout}")
|
logger.error(f"stdout: {result.stdout}")
|
||||||
logger.error(f"stderr: {result.stderr}")
|
logger.error(f"stderr: {result.stderr}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Extract the artifacts from the built image
|
# Step 6: Copy artifacts from container to host
|
||||||
extract_args = [
|
copy_out_args = [
|
||||||
'tar', '-xf', str(temp_path / "image.tar"),
|
'buildah', 'run', container_name,
|
||||||
'-C', str(temp_path),
|
'find', '/app/dist', '-type', 'f', '-name', '*.rpm'
|
||||||
'--strip-components=1',
|
|
||||||
'app/dist'
|
|
||||||
]
|
]
|
||||||
|
result = subprocess.run(copy_out_args, capture_output=True, text=True)
|
||||||
|
logger.debug(f"Find RPMs result: {result.stdout}")
|
||||||
|
|
||||||
logger.debug(f"Running: {' '.join(extract_args)}")
|
if result.returncode == 0 and result.stdout.strip():
|
||||||
result = subprocess.run(extract_args, capture_output=True, text=True)
|
rpm_files = result.stdout.strip().split('\n')
|
||||||
|
logger.info(f"Found {len(rpm_files)} RPM files to copy")
|
||||||
|
|
||||||
if result.returncode != 0:
|
for rpm_file in rpm_files:
|
||||||
logger.error(f"Failed to extract artifacts for {package_name}")
|
rpm_file = rpm_file.strip()
|
||||||
logger.error(f"stderr: {result.stderr}")
|
if rpm_file:
|
||||||
return False
|
# Use buildah mount to copy files out
|
||||||
|
mount_args = ['buildah', 'mount', container_name]
|
||||||
|
mount_result = subprocess.run(mount_args, capture_output=True, text=True)
|
||||||
|
|
||||||
# Copy artifacts to final destination
|
if mount_result.returncode == 0:
|
||||||
extracted_dist = temp_path / "app" / "dist"
|
container_path = mount_result.stdout.strip()
|
||||||
if extracted_dist.exists():
|
source_file = Path(container_path) / rpm_file.lstrip('/')
|
||||||
for item in extracted_dist.iterdir():
|
|
||||||
if item.is_file():
|
|
||||||
shutil.copy2(item, package_dist_dir)
|
|
||||||
|
|
||||||
logger.info(f"Successfully built {package_name}-{package_version}-{package_release} using Kaniko")
|
if source_file.exists():
|
||||||
|
import shutil
|
||||||
|
dest_file = package_dist_dir / source_file.name
|
||||||
|
shutil.copy2(source_file, dest_file)
|
||||||
|
logger.debug(f"Copied {source_file} to {dest_file}")
|
||||||
|
else:
|
||||||
|
logger.error(f"Source file not found: {source_file}")
|
||||||
|
|
||||||
|
# Unmount
|
||||||
|
subprocess.run(['buildah', 'unmount', container_name], capture_output=True)
|
||||||
|
else:
|
||||||
|
logger.error(f"Failed to mount container: {mount_result.stderr}")
|
||||||
|
else:
|
||||||
|
logger.warning(f"No RPM files found or find command failed: {result.stderr}")
|
||||||
|
|
||||||
|
logger.info(f"Successfully built {package_name}-{package_version}-{package_release} using Buildah")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
finally:
|
||||||
|
# Step 7: Clean up container
|
||||||
|
rm_args = ['buildah', 'rm', container_name]
|
||||||
|
logger.debug(f"Running: {' '.join(rm_args)}")
|
||||||
|
subprocess.run(rm_args, capture_output=True, text=True)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Unexpected error building {package_name} with Kaniko: {e}")
|
logger.error(f"Unexpected error building {package_name} with Buildah: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
@@ -1101,7 +1290,9 @@ class Builder:
|
|||||||
release: str,
|
release: str,
|
||||||
dry_run: bool = False,
|
dry_run: bool = False,
|
||||||
force: bool = False,
|
force: bool = False,
|
||||||
distro: str = 'almalinux/el9'
|
distro: str = 'almalinux/el9',
|
||||||
|
native: bool = False,
|
||||||
|
buildah: bool = False
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""
|
"""
|
||||||
Build a single package.
|
Build a single package.
|
||||||
@@ -1177,9 +1368,9 @@ class Builder:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
package_info = PackageInfo(package, version, release, package_dir, distro, base_image)
|
package_info = PackageInfo(package, version, release, package_dir, distro, base_image)
|
||||||
return self._build_package(package_info, dry_run, force)
|
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') -> 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:
|
||||||
"""
|
"""
|
||||||
Build all packages.
|
Build all packages.
|
||||||
|
|
||||||
@@ -1201,29 +1392,29 @@ class Builder:
|
|||||||
self.logger.info(f"Found {len(packages)} packages to process")
|
self.logger.info(f"Found {len(packages)} packages to process")
|
||||||
|
|
||||||
if parallel == 1:
|
if parallel == 1:
|
||||||
return self._build_sequential(packages, dry_run, force)
|
return self._build_sequential(packages, dry_run, force, native, buildah)
|
||||||
else:
|
else:
|
||||||
return self._build_parallel(packages, dry_run, force, parallel)
|
return self._build_parallel(packages, dry_run, force, parallel, native, buildah)
|
||||||
|
|
||||||
def _build_sequential(self, packages: List[PackageInfo], dry_run: bool, force: bool) -> bool:
|
def _build_sequential(self, packages: List[PackageInfo], dry_run: bool, force: bool, native: bool, buildah: bool) -> bool:
|
||||||
"""Build packages sequentially."""
|
"""Build packages sequentially."""
|
||||||
success_count = 0
|
success_count = 0
|
||||||
|
|
||||||
for package_info in packages:
|
for package_info in packages:
|
||||||
if self._build_package(package_info, dry_run, force):
|
if self._build_package(package_info, dry_run, force, native, buildah):
|
||||||
success_count += 1
|
success_count += 1
|
||||||
|
|
||||||
self.logger.info(f"Built {success_count}/{len(packages)} packages successfully")
|
self.logger.info(f"Built {success_count}/{len(packages)} packages successfully")
|
||||||
return success_count == len(packages)
|
return success_count == len(packages)
|
||||||
|
|
||||||
def _build_parallel(self, packages: List[PackageInfo], dry_run: bool, force: bool, parallel: int) -> bool:
|
def _build_parallel(self, packages: List[PackageInfo], dry_run: bool, force: bool, parallel: int, native: bool, buildah: bool) -> bool:
|
||||||
"""Build packages in parallel."""
|
"""Build packages in parallel."""
|
||||||
success_count = 0
|
success_count = 0
|
||||||
|
|
||||||
with ThreadPoolExecutor(max_workers=parallel) as executor:
|
with ThreadPoolExecutor(max_workers=parallel) as executor:
|
||||||
# Submit all build tasks
|
# Submit all build tasks
|
||||||
future_to_package = {
|
future_to_package = {
|
||||||
executor.submit(self._build_package, pkg, dry_run, force): pkg
|
executor.submit(self._build_package, pkg, dry_run, force, native, buildah): pkg
|
||||||
for pkg in packages
|
for pkg in packages
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1240,7 +1431,7 @@ class Builder:
|
|||||||
self.logger.info(f"Built {success_count}/{len(packages)} packages successfully")
|
self.logger.info(f"Built {success_count}/{len(packages)} packages successfully")
|
||||||
return success_count == len(packages)
|
return success_count == len(packages)
|
||||||
|
|
||||||
def _build_package(self, package_info: PackageInfo, dry_run: bool, force: bool) -> bool:
|
def _build_package(self, package_info: PackageInfo, dry_run: bool, force: bool, native: bool = False, buildah: bool = False) -> bool:
|
||||||
"""
|
"""
|
||||||
Build a single package.
|
Build a single package.
|
||||||
|
|
||||||
@@ -1266,17 +1457,33 @@ class Builder:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
# Check build tool availability (unless dry run)
|
# Check build tool availability (unless dry run)
|
||||||
use_kaniko = check_kaniko_available()
|
use_native = native
|
||||||
use_docker = not use_kaniko and check_docker_available()
|
use_buildah = buildah
|
||||||
|
use_docker = not use_native and not use_buildah and check_docker_available()
|
||||||
|
if not use_native and not use_buildah and not use_docker:
|
||||||
|
use_buildah = check_buildah_available()
|
||||||
|
if not use_native and not use_buildah and not use_docker:
|
||||||
|
use_native = check_native_build_deps()
|
||||||
|
|
||||||
if not dry_run and not use_kaniko and not use_docker:
|
if not dry_run and not use_native and not use_buildah and not use_docker:
|
||||||
self.logger.error("Neither Kaniko nor Docker is available")
|
self.logger.error("No build tools available (tried native, Buildah, Docker)")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Build the package using available tool
|
# Build the package using available tool
|
||||||
if use_kaniko:
|
if use_native:
|
||||||
self.logger.debug(f"Using Kaniko to build {package_info.name}")
|
self.logger.debug(f"Using native build for {package_info.name}")
|
||||||
return build_package_kaniko(
|
return build_package_native(
|
||||||
|
package_dir=package_info.directory,
|
||||||
|
package_name=package_info.name,
|
||||||
|
package_version=package_info.version,
|
||||||
|
package_release=package_info.release,
|
||||||
|
dist_dir=self.dist_dir,
|
||||||
|
repository=package_info.distro,
|
||||||
|
dry_run=dry_run
|
||||||
|
)
|
||||||
|
elif use_buildah:
|
||||||
|
self.logger.debug(f"Using Buildah to build {package_info.name}")
|
||||||
|
return build_package_buildah(
|
||||||
package_dir=package_info.directory,
|
package_dir=package_info.directory,
|
||||||
package_name=package_info.name,
|
package_name=package_info.name,
|
||||||
package_version=package_info.version,
|
package_version=package_info.version,
|
||||||
@@ -1559,6 +1766,8 @@ def build(
|
|||||||
distro: str = typer.Option("almalinux/el9", help="Target distro (default: almalinux/el9)"),
|
distro: str = typer.Option("almalinux/el9", help="Target distro (default: almalinux/el9)"),
|
||||||
dry_run: bool = typer.Option(False, "--dry-run", help="Show what would be built without building"),
|
dry_run: bool = typer.Option(False, "--dry-run", help="Show what would be built without building"),
|
||||||
force: bool = typer.Option(False, "--force", help="Build even if package exists in registry"),
|
force: bool = typer.Option(False, "--force", help="Build even if package exists in registry"),
|
||||||
|
native: bool = typer.Option(False, "--native", help="Force native build (skip Docker even if available)"),
|
||||||
|
buildah: bool = typer.Option(False, "--buildah", help="Force Buildah build (requires Buildah)"),
|
||||||
verbose: bool = typer.Option(False, "--verbose", "-v", help="Enable verbose logging")
|
verbose: bool = typer.Option(False, "--verbose", "-v", help="Enable verbose logging")
|
||||||
):
|
):
|
||||||
"""Build a specific package."""
|
"""Build a specific package."""
|
||||||
@@ -1620,7 +1829,9 @@ def build(
|
|||||||
release=str(release),
|
release=str(release),
|
||||||
dry_run=dry_run,
|
dry_run=dry_run,
|
||||||
force=force,
|
force=force,
|
||||||
distro=distro
|
distro=distro,
|
||||||
|
native=native,
|
||||||
|
buildah=buildah
|
||||||
)
|
)
|
||||||
|
|
||||||
if not success:
|
if not success:
|
||||||
@@ -1636,6 +1847,8 @@ def build_all(
|
|||||||
force: bool = typer.Option(False, "--force", help="Build even if packages exist in registry"),
|
force: bool = typer.Option(False, "--force", help="Build even if packages exist in registry"),
|
||||||
parallel: int = typer.Option(4, help="Number of parallel builds"),
|
parallel: int = typer.Option(4, help="Number of parallel builds"),
|
||||||
distro: str = typer.Option("almalinux/el9", help="Target distro (almalinux/el8, almalinux/el9, or 'all' for all distros)"),
|
distro: str = typer.Option("almalinux/el9", help="Target distro (almalinux/el8, almalinux/el9, or 'all' for all distros)"),
|
||||||
|
native: bool = typer.Option(False, "--native", help="Force native build (skip Docker even if available)"),
|
||||||
|
buildah: bool = typer.Option(False, "--buildah", help="Force Buildah build (requires Buildah)"),
|
||||||
verbose: bool = typer.Option(False, "--verbose", "-v", help="Enable verbose logging")
|
verbose: bool = typer.Option(False, "--verbose", "-v", help="Enable verbose logging")
|
||||||
):
|
):
|
||||||
"""Build all packages."""
|
"""Build all packages."""
|
||||||
@@ -1649,7 +1862,9 @@ def build_all(
|
|||||||
dry_run=dry_run,
|
dry_run=dry_run,
|
||||||
force=force,
|
force=force,
|
||||||
parallel=parallel,
|
parallel=parallel,
|
||||||
distro=distro
|
distro=distro,
|
||||||
|
native=native,
|
||||||
|
buildah=buildah
|
||||||
)
|
)
|
||||||
|
|
||||||
if not success:
|
if not success:
|
||||||
|
|||||||
+66
-18
@@ -154,6 +154,33 @@ def load_env_vars(env_file: Path) -> Dict[str, str]:
|
|||||||
return env_vars
|
return env_vars
|
||||||
|
|
||||||
|
|
||||||
|
def get_claude_ai_latest_version() -> Optional[str]:
|
||||||
|
"""
|
||||||
|
Get the latest claude-code version from downloads.claude.ai.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Latest version string or None if not found
|
||||||
|
"""
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
try:
|
||||||
|
url = "https://downloads.claude.ai/claude-code-releases/latest"
|
||||||
|
logger.debug(f"Checking claude-code latest version: {url}")
|
||||||
|
response = requests.get(url, timeout=30)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
version = response.text.strip()
|
||||||
|
logger.debug(f"Latest claude-code version: {version}")
|
||||||
|
return version
|
||||||
|
else:
|
||||||
|
logger.warning(f"Unexpected response from claude.ai: {response.status_code}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
except requests.RequestException as e:
|
||||||
|
logger.error(f"Failed to check claude-code version: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_github_latest_release(repo: str) -> Optional[Dict]:
|
def get_github_latest_release(repo: str) -> Optional[Dict]:
|
||||||
"""
|
"""
|
||||||
Get the latest release from GitHub API.
|
Get the latest release from GitHub API.
|
||||||
@@ -266,7 +293,11 @@ def update_package_metadata(package_dir: Path, new_version: str, dry_run: bool =
|
|||||||
with open(metadata_file, 'r') as f:
|
with open(metadata_file, 'r') as f:
|
||||||
metadata = yaml.safe_load(f)
|
metadata = yaml.safe_load(f)
|
||||||
|
|
||||||
old_version = metadata.get('version', 'unknown')
|
builds = metadata.get('builds', [])
|
||||||
|
if builds and isinstance(builds, list) and builds[0].get('version') is not None:
|
||||||
|
old_version = str(builds[0].get('version', 'unknown'))
|
||||||
|
else:
|
||||||
|
old_version = metadata.get('version', 'unknown')
|
||||||
logger.info(f"Updating {metadata.get('name', 'unknown')} from {old_version} to {new_version}")
|
logger.info(f"Updating {metadata.get('name', 'unknown')} from {old_version} to {new_version}")
|
||||||
|
|
||||||
if dry_run:
|
if dry_run:
|
||||||
@@ -274,8 +305,15 @@ def update_package_metadata(package_dir: Path, new_version: str, dry_run: bool =
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
# Update version in metadata and reset release to 1
|
# Update version in metadata and reset release to 1
|
||||||
metadata['version'] = new_version
|
# Support both top-level version and builds[].version
|
||||||
metadata['release'] = 1
|
builds = metadata.get('builds', [])
|
||||||
|
if builds and isinstance(builds, list) and builds[0].get('version') is not None:
|
||||||
|
for build in builds:
|
||||||
|
build['version'] = new_version
|
||||||
|
build['release'] = 1
|
||||||
|
else:
|
||||||
|
metadata['version'] = new_version
|
||||||
|
metadata['release'] = 1
|
||||||
|
|
||||||
# Write updated metadata
|
# Write updated metadata
|
||||||
with open(metadata_file, 'w') as f:
|
with open(metadata_file, 'w') as f:
|
||||||
@@ -313,28 +351,38 @@ def check_package_updates(package_dir: Path, dry_run: bool = False) -> bool:
|
|||||||
metadata = yaml.safe_load(f)
|
metadata = yaml.safe_load(f)
|
||||||
|
|
||||||
package_name = metadata.get('name', package_dir.name)
|
package_name = metadata.get('name', package_dir.name)
|
||||||
current_version = metadata.get('version')
|
|
||||||
github_repo = metadata.get('github')
|
github_repo = metadata.get('github')
|
||||||
|
claude_ai = metadata.get('claude_ai', False)
|
||||||
|
|
||||||
if not github_repo:
|
if not github_repo and not claude_ai:
|
||||||
logger.debug(f"Package {package_name} has no GitHub repo configured")
|
logger.debug(f"Package {package_name} has no GitHub repo or claude_ai configured")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# Support both top-level version and builds[].version
|
||||||
|
builds = metadata.get('builds', [])
|
||||||
|
if builds and isinstance(builds, list) and builds[0].get('version'):
|
||||||
|
current_version = str(builds[0].get('version'))
|
||||||
|
else:
|
||||||
|
current_version = metadata.get('version')
|
||||||
|
|
||||||
if not current_version:
|
if not current_version:
|
||||||
logger.warning(f"Package {package_name} has no version in metadata")
|
logger.warning(f"Package {package_name} has no version in metadata")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
logger.info(f"Checking {package_name} (current: {current_version}) from {github_repo}")
|
if claude_ai:
|
||||||
|
logger.info(f"Checking {package_name} (current: {current_version}) from downloads.claude.ai")
|
||||||
# Get latest release from GitHub
|
latest_version = get_claude_ai_latest_version()
|
||||||
latest_release = get_github_latest_release(github_repo)
|
if not latest_version:
|
||||||
if not latest_release:
|
return False
|
||||||
return False
|
else:
|
||||||
|
logger.info(f"Checking {package_name} (current: {current_version}) from {github_repo}")
|
||||||
latest_version = normalize_version(latest_release.get('tag_name', ''))
|
latest_release = get_github_latest_release(github_repo)
|
||||||
if not latest_version:
|
if not latest_release:
|
||||||
logger.warning(f"Could not determine latest version for {package_name}")
|
return False
|
||||||
return False
|
latest_version = normalize_version(latest_release.get('tag_name', ''))
|
||||||
|
if not latest_version:
|
||||||
|
logger.warning(f"Could not determine latest version for {package_name}")
|
||||||
|
return False
|
||||||
|
|
||||||
# Compare versions
|
# Compare versions
|
||||||
if compare_versions(current_version, latest_version):
|
if compare_versions(current_version, latest_version):
|
||||||
@@ -373,7 +421,7 @@ def find_packages_with_github(rpms_dir: Path) -> List[Path]:
|
|||||||
with open(metadata_file, 'r') as f:
|
with open(metadata_file, 'r') as f:
|
||||||
metadata = yaml.safe_load(f)
|
metadata = yaml.safe_load(f)
|
||||||
|
|
||||||
if metadata.get('github'):
|
if metadata.get('github') or metadata.get('claude_ai'):
|
||||||
github_packages.append(package_dir)
|
github_packages.append(package_dir)
|
||||||
except Exception:
|
except Exception:
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user