2 Commits
Author SHA1 Message Date
Joachim Schlöffel caf722905b trigger package rebuild
Build Alpine Packages / preflight (pull_request) Successful in 10s
Build Alpine Packages / build (gitea) (pull_request) Successful in 58s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 1h9m44s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 2m21s
Build Alpine Packages / build (nifi) (pull_request) Successful in 6m55s
Build Alpine Packages / build (rclone-openrc) (pull_request) Successful in 15s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 33m28s
Build Alpine Packages / verify-and-publish (pull_request) Failing after 6m29s
2026-10-22 09:33:43 +02:00
Joachim Schlöffel eea0b3fea6 bump LavinMQ version to 2.10.3
Build Alpine Packages / preflight (pull_request) Successful in 10s
Build Alpine Packages / build (gitea) (pull_request) Successful in 10s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 10s
Build Alpine Packages / build (nifi) (pull_request) Successful in 10s
Build Alpine Packages / build (rclone-openrc) (pull_request) Successful in 8s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 8s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 2m13s
Build Alpine Packages / verify-and-publish (pull_request) Successful in 27s
2026-10-21 19:11:22 +02:00
7 changed files with 73 additions and 15 deletions
+25 -3
View File
@@ -36,7 +36,10 @@ jobs:
steps: steps:
- name: Prepare Environment - name: Prepare Environment
run: | run: |
printf '%s\n' 'https://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories printf '%s\n' \
'https://dl-cdn.alpinelinux.org/alpine/edge/main' \
'https://dl-cdn.alpinelinux.org/alpine/edge/community' \
>> /etc/apk/repositories
apk add --no-cache --update atools-apkbuild-lint bash ca-certificates curl git jq nodejs shellcheck tar apk add --no-cache --update atools-apkbuild-lint bash ca-certificates curl git jq nodejs shellcheck tar
- name: Checkout - name: Checkout
@@ -90,7 +93,10 @@ jobs:
steps: steps:
- name: Prepare Environment - name: Prepare Environment
run: | run: |
printf '%s\n' 'https://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories printf '%s\n' \
'https://dl-cdn.alpinelinux.org/alpine/edge/main' \
'https://dl-cdn.alpinelinux.org/alpine/edge/community' \
>> /etc/apk/repositories
apk add --no-cache --update abuild-rootbld alpine-sdk bash ca-certificates doas git nodejs sudo apk add --no-cache --update abuild-rootbld alpine-sdk bash ca-certificates doas git nodejs sudo
mkdir -p "$ALPINE_RUST_CACHE_ROOT" mkdir -p "$ALPINE_RUST_CACHE_ROOT"
chown -R 1000:1000 /cache/public-alpine-packages/v3.24 chown -R 1000:1000 /cache/public-alpine-packages/v3.24
@@ -132,7 +138,10 @@ jobs:
steps: steps:
- name: Prepare Environment - name: Prepare Environment
run: | run: |
printf '%s\n' 'https://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories printf '%s\n' \
'https://dl-cdn.alpinelinux.org/alpine/edge/main' \
'https://dl-cdn.alpinelinux.org/alpine/edge/community' \
>> /etc/apk/repositories
apk add --no-cache --update abuild-rootbld alpine-sdk bash ca-certificates curl doas docker-cli git jq nodejs rsync shellcheck sudo tar apk add --no-cache --update abuild-rootbld alpine-sdk bash ca-certificates curl doas docker-cli git jq nodejs rsync shellcheck sudo tar
trivy_archive="trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz" trivy_archive="trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz"
curl -fsSL -o "/tmp/${trivy_archive}" "https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/${trivy_archive}" curl -fsSL -o "/tmp/${trivy_archive}" "https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/${trivy_archive}"
@@ -198,3 +207,16 @@ jobs:
- name: Publish Alpine packages - name: Publish Alpine packages
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
run: scripts/apk/publish-gitea.sh run: scripts/apk/publish-gitea.sh
- name: Verify published Alpine registry
if: github.ref == 'refs/heads/main'
run: |
registry_url="${INSTANCE_URL}/api/packages/${PACKAGE_OWNER}/alpine/${ALPINE_REGISTRY_BRANCH}/${ALPINE_REGISTRY_REPOSITORY}"
for arch in ${ALPINE_ARCHES}; do
index_path="/tmp/APKINDEX-${arch}.tar.gz"
if ! curl --fail --silent --show-error --location \
--output "${index_path}" \
"${registry_url}/${arch}/APKINDEX.tar.gz" || ! test -s "${index_path}"; then
echo "::warning::Published Alpine index is unavailable for ${arch}: ${registry_url}/${arch}/APKINDEX.tar.gz"
fi
done
+8 -8
View File
@@ -17,14 +17,14 @@ https://code.factoring.digital/api/packages/public/alpine/v3.24/alpine-packages
## Available Packages ## Available Packages
| Package | APK Name | Package Version | Package Type | Purpose | | Package | APK Name | Package Version | Package Type | Purpose |
|-----------------------------------------------------------|--------------|-----------------|----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| |-----------------------------------------------------------------|-----------------|-----------------|----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
| [SeaweedFS](packaging/alpine/local/seaweedfs/README.md) | `seaweedfs` | `4.48` | Binary repackaging of official upstream release tarballs | Ships current SeaweedFS features with Alpine OpenRC role splits. | | [SeaweedFS](packaging/alpine/local/seaweedfs/README.md) | `seaweedfs` | `4.48` | Binary repackaging of official upstream release tarballs | Ships current SeaweedFS features with Alpine OpenRC role splits. |
| [GreptimeDB](packaging/alpine/local/greptimedb/README.md) | `greptimedb` | `1.2.1` | Source build from upstream release | Provides a current GreptimeDB build and component OpenRC packages before it is available from Alpine community. | | [GreptimeDB](packaging/alpine/local/greptimedb/README.md) | `greptimedb` | `1.2.1` | Source build from upstream release | Provides a current GreptimeDB build and component OpenRC packages before it is available from Alpine community. |
| [LavinMQ](packaging/alpine/local/lavinmq/README.md) | `lavinmq` | `2.10.1` | Source build from upstream release | Provides a current LavinMQ build on Alpine 3.24 with matching Crystal support. | | [LavinMQ](packaging/alpine/local/lavinmq/README.md) | `lavinmq` | `2.10.3` | Source build from upstream release | Provides a current LavinMQ build on Alpine 3.24 with matching Crystal support. |
| [Gitea](packaging/alpine/local/gitea/README.md) | `gitea` | `28.2.0` | Binary repackaging of official upstream release binaries | Ships current Gitea releases with the expected Alpine runtime layout and OpenRC service. | | [Gitea](packaging/alpine/local/gitea/README.md) | `gitea` | `28.2.0` | Binary repackaging of official upstream release binaries | Ships current Gitea releases with the expected Alpine runtime layout and OpenRC service. |
| [Apache NiFi](packaging/alpine/local/nifi/README.md) | `nifi` | `2.12.0` | Binary repackaging of the official Standard distribution | Provides Apache NiFi 2 with a secure default configuration and OpenRC service. | | [Apache NiFi](packaging/alpine/local/nifi/README.md) | `nifi` | `2.12.0` | Binary repackaging of the official Standard distribution | Provides Apache NiFi 2 with a secure default configuration and OpenRC service. |
| [rclone OpenRC](packaging/alpine/local/rclone-openrc/README.md) | `rclone-openrc` | `0.1.0` | OpenRC integration for Alpine's rclone package | Provides reusable, instance-capable OpenRC supervision for rclone commands. | | [rclone OpenRC](packaging/alpine/local/rclone-openrc/README.md) | `rclone-openrc` | `0.1.0` | OpenRC integration for Alpine's rclone package | Provides reusable, instance-capable OpenRC supervision for rclone commands. |
## Use In Production ## Use In Production
+1 -1
View File
@@ -1,7 +1,7 @@
# Maintainer: Joachim Schlöffel <joachim.schloeffel@financial-service-plus.de> # Maintainer: Joachim Schlöffel <joachim.schloeffel@financial-service-plus.de>
pkgname=gitea pkgname=gitea
pkgver=28.2.0 pkgver=28.2.0
pkgrel=0 pkgrel=1
pkgdesc="Self-hosted Git service written in Go" pkgdesc="Self-hosted Git service written in Go"
url="https://about.gitea.com/" url="https://about.gitea.com/"
arch="x86_64 aarch64" arch="x86_64 aarch64"
+1 -1
View File
@@ -1,7 +1,7 @@
# Maintainer: Joachim Schlöffel <joachim.schloeffel@financial-service-plus.de> # Maintainer: Joachim Schlöffel <joachim.schloeffel@financial-service-plus.de>
pkgname=lavinmq pkgname=lavinmq
pkgver=2.10.3 pkgver=2.10.3
pkgrel=0 pkgrel=1
pkgdesc="High-performance AMQP and MQTT message queue server" pkgdesc="High-performance AMQP and MQTT message queue server"
url="https://github.com/cloudamqp/lavinmq" url="https://github.com/cloudamqp/lavinmq"
arch="x86_64" arch="x86_64"
+1 -1
View File
@@ -1,7 +1,7 @@
# Maintainer: Joachim Schlöffel <joachim.schloeffel@financial-service-plus.de> # Maintainer: Joachim Schlöffel <joachim.schloeffel@financial-service-plus.de>
pkgname=nifi pkgname=nifi
pkgver=2.12.0 pkgver=2.12.0
pkgrel=1 pkgrel=2
pkgdesc="Reliable system for processing and distributing data" pkgdesc="Reliable system for processing and distributing data"
url="https://nifi.apache.org/" url="https://nifi.apache.org/"
arch="x86_64 aarch64" arch="x86_64 aarch64"
+3 -1
View File
@@ -4,7 +4,9 @@ FROM alpine:${ALPINE_VERSION}
ARG BUILDER_UID=1000 ARG BUILDER_UID=1000
ARG BUILDER_GID=1000 ARG BUILDER_GID=1000
RUN printf '%s\n' 'https://dl-cdn.alpinelinux.org/alpine/edge/community' \ RUN printf '%s\n' \
'https://dl-cdn.alpinelinux.org/alpine/edge/main' \
'https://dl-cdn.alpinelinux.org/alpine/edge/community' \
>> /etc/apk/repositories >> /etc/apk/repositories
RUN apk add --no-cache \ RUN apk add --no-cache \
+34
View File
@@ -51,6 +51,7 @@ if [[ "${#apks[@]}" -eq 0 ]]; then
fi fi
declare -A expected_apks=() declare -A expected_apks=()
declare -A package_names=()
while IFS= read -r package_dir; do while IFS= read -r package_dir; do
apk_validate_package_dir "${package_dir}" apk_validate_package_dir "${package_dir}"
for arch in ${arches}; do for arch in ${arches}; do
@@ -61,6 +62,10 @@ while IFS= read -r package_dir; do
while IFS= read -r apk_name; do while IFS= read -r apk_name; do
expected_apks["${package_root}/${arch}/${apk_name}"]=1 expected_apks["${package_root}/${arch}/${apk_name}"]=1
done < <(apk_package_apk_names "${package_dir}" "${arch}") done < <(apk_package_apk_names "${package_dir}" "${arch}")
while IFS= read -r package_version; do
package_names["${package_version%%=*}"]=1
done < <(apk_package_versioned_names "${package_dir}" "${arch}")
done done
done < <(apk_all_package_dirs "${repo_root}") done < <(apk_all_package_dirs "${repo_root}")
@@ -116,3 +121,32 @@ for apk in "${current_apks[@]}"; do
;; ;;
esac esac
done done
# Alpine's repository path groups registry files, but does not associate package
# records with the Gitea code repository. Link each package explicitly so it is
# visible from the repository's Packages tab as well as the owner package list.
for package_name in "${!package_names[@]}"; do
link_url="${instance_url}/api/v1/packages/${owner}/alpine/${package_name}/-/link/${repository}"
status="$(
curl --silent --show-error --location \
--request POST \
--user "${user}:${token}" \
--write-out '%{http_code}' \
--output /tmp/gitea-apk-link-response \
"${link_url}"
)"
case "${status}" in
201)
printf 'linked to repository: %s\n' "${package_name}"
;;
409)
printf 'already linked to repository: %s\n' "${package_name}"
;;
*)
printf 'repository link failed for %s: HTTP %s\n' "${package_name}" "${status}" >&2
cat /tmp/gitea-apk-link-response >&2
exit 1
;;
esac
done