29 Commits
Author SHA1 Message Date
Joachim Schlöffel 13570ccbd9 Merge branch 'main' into development
Build Alpine Packages / preflight (pull_request) Successful in 5s
Build Alpine Packages / build (gitea) (pull_request) Successful in 3s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 4s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 4s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 6s
Build Alpine Packages / build (nifi) (pull_request) Successful in 3m22s
Build Alpine Packages / verify-and-publish (pull_request) Successful in 2m53s
Build Alpine Packages / preflight (push) Successful in 5s
Build Alpine Packages / build (gitea) (push) Successful in 2s
Build Alpine Packages / build (greptimedb) (push) Successful in 3s
Build Alpine Packages / build (lavinmq) (push) Successful in 3s
Build Alpine Packages / build (seaweedfs) (push) Successful in 6s
Build Alpine Packages / build (nifi) (push) Successful in 3m22s
Build Alpine Packages / verify-and-publish (push) Successful in 4m12s
2026-10-05 21:09:31 +02:00
fspjo f89ebac967 add Apache Nifi (#15)
Reviewed-on: #15
2026-10-05 21:06:42 +02:00
Joachim Schlöffel 158fd18984 bump LavinMQ to 2.10.1
Build Alpine Packages / preflight (pull_request) Successful in 4s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 5s
Build Alpine Packages / build (gitea) (pull_request) Successful in 52s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 3s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 2m19s
Build Alpine Packages / verify-and-publish (pull_request) Successful in 38s
2026-10-05 20:18:27 +02:00
Joachim Schlöffel fd0f484d4a WIP: check CI build
Build Alpine Packages / build (gitea) (pull_request) Canceled after 0s
Build Alpine Packages / build (greptimedb) (pull_request) Canceled after 0s
Build Alpine Packages / build (lavinmq) (pull_request) Canceled after 0s
Build Alpine Packages / build (seaweedfs) (pull_request) Canceled after 0s
Build Alpine Packages / verify-and-publish (pull_request) Canceled after 0s
Build Alpine Packages / preflight (pull_request) Canceled after 5s
2026-10-05 09:31:46 +02:00
Joachim Schlöffel 37b6e4cf2c bump Gitea to 28.0.0 (breaking network changes!)
Build Alpine Packages / preflight (pull_request) Successful in 6s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 7s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 5s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 4s
Build Alpine Packages / build (gitea) (pull_request) Successful in 54s
Build Alpine Packages / verify-and-publish (pull_request) Successful in 36s
2026-09-30 11:30:25 +02:00
Joachim Schlöffel a97bafbd92 Merge branch 'main' into development
Build Alpine Packages / preflight (pull_request) Successful in 23s
Build Alpine Packages / build (gitea) (pull_request) Successful in 11s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 13s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 12s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 28m48s
Build Alpine Packages / verify-and-publish (pull_request) Successful in 1m6s
2026-09-30 11:00:52 +02:00
Joachim Schlöffel 573608a04b add graceful shutdown to OpenRC script 2026-09-30 10:55:45 +02:00
Joachim Schlöffel fc965e072c fix trivy db download n CI
Build Alpine Packages / preflight (pull_request) Successful in 15s
Build Alpine Packages / build (gitea) (pull_request) Successful in 16s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 2m57s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 20m41s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 1h14m12s
Build Alpine Packages / verify-and-publish (pull_request) Successful in 1m47s
2026-09-29 09:33:26 +02:00
fspjo 1c3994a7c4 Merge branch 'main' into development
Build Alpine Packages / preflight (pull_request) Successful in 15s
Build Alpine Packages / build (gitea) (pull_request) Successful in 11s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 3m56s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 25m55s
Build Alpine Packages / verify-and-publish (pull_request) Canceled after 0s
Build Alpine Packages / build (greptimedb) (pull_request) Canceled after 1h29m33s
2026-09-29 08:00:21 +02:00
Joachim Schlöffel 03daf40d6e remove vendor src archives
Build Alpine Packages / preflight (pull_request) Successful in 20s
Build Alpine Packages / build (gitea) (pull_request) Successful in 15s
Build Alpine Packages / build (lavinmq) (pull_request) Successful in 3m30s
Build Alpine Packages / build (seaweedfs) (pull_request) Successful in 29m27s
Build Alpine Packages / build (greptimedb) (pull_request) Successful in 56m19s
Build Alpine Packages / verify-and-publish (pull_request) Successful in 1m31s
2026-09-29 01:02:15 +02:00
Joachim Schlöffel 40eaf081ad fix CI key collision
Build Alpine Packages / preflight (pull_request) Successful in 16s
Build Alpine Packages / build (gitea) (pull_request) Canceled after 0s
Build Alpine Packages / build (greptimedb) (pull_request) Canceled after 0s
Build Alpine Packages / build (lavinmq) (pull_request) Canceled after 0s
Build Alpine Packages / build (seaweedfs) (pull_request) Canceled after 0s
Build Alpine Packages / verify-and-publish (pull_request) Canceled after 0s
2026-09-29 00:34:41 +02:00
Joachim Schlöffel 254fa76a7d Merge branch 'features/source-build' into development 2026-09-28 23:46:45 +02:00
Joachim Schlöffel 0e6bc657a9 update readme 2026-09-28 23:18:01 +02:00
Joachim Schlöffel d21dadada7 Merge branch 'main' into development 2026-09-28 23:14:02 +02:00
Joachim Schlöffel b75fa2eac9 build only main branch in CI 2026-09-28 23:01:45 +02:00
Joachim Schlöffel 5e2093afec bump SeaweedFS to 4.48 2026-09-28 22:54:39 +02:00
Joachim Schlöffel 74a31e6f45 run Alpine runtime tests in Docker
Build Alpine Packages / preflight (push) Successful in 20s
Build Alpine Packages / build (gitea) (push) Successful in 16s
Build Alpine Packages / build (lavinmq) (push) Successful in 2m28s
Build Alpine Packages / build (seaweedfs) (push) Successful in 48m41s
Build Alpine Packages / build (greptimedb) (push) Successful in 1h39m5s
Build Alpine Packages / verify-and-publish (push) Failing after 20s
2026-09-28 22:50:32 +02:00
Joachim Schlöffel 815a47e19f parallel CI package builds
Build Alpine Packages / preflight (push) Successful in 23s
Build Alpine Packages / build (gitea) (push) Successful in 18s
Build Alpine Packages / build (lavinmq) (push) Successful in 2m30s
Build Alpine Packages / build (seaweedfs) (push) Successful in 47m10s
Build Alpine Packages / build (greptimedb) (push) Successful in 1h33m37s
Build Alpine Packages / verify-and-publish (push) Failing after 2m32s
2026-09-28 20:55:46 +02:00
Joachim Schlöffel 96bd8a20e0 fix greptimedb test linker memory
Build Alpine Packages / build-and-publish (v3.24, 3.24) (push) Failing after 3h0m4s
Build Alpine Packages / build-and-publish (v3.24, 3.24) (pull_request) Failing after 3h0m8s
2026-09-28 00:48:25 +02:00
Joachim Schlöffel 0a9ed89a47 fix lavinmq crystal dependency
Build Alpine Packages / build-and-publish (v3.24, 3.24) (push) Failing after 2h41m8s
Build Alpine Packages / build-and-publish (v3.24, 3.24) (pull_request) Failing after 3h0m4s
2026-09-27 17:55:35 +02:00
Joachim Schlöffel 001bd51931 fix greptimedb openrc shutdown
Build Alpine Packages / build-and-publish (v3.24, 3.24) (pull_request) Failing after 1h18m35s
Build Alpine Packages / build-and-publish (v3.24, 3.24) (push) Canceled after 55m50s
2026-09-27 09:42:13 +02:00
Joachim Schlöffel f01d209780 build greptimedb dashboard from source
Build Alpine Packages / build-and-publish (v3.24, 3.24) (push) Canceled after 59s
Build Alpine Packages / build-and-publish (v3.24, 3.24) (pull_request) Canceled after 8m22s
2026-09-27 02:27:30 +02:00
Joachim Schlöffel f5efea2160 add package update status badge
Build Alpine Packages / build-and-publish (v3.24, 3.24) (pull_request) Successful in 35m57s
Build Alpine Packages / build-and-publish (v3.24, 3.24) (push) Successful in 1h17m58s
2026-09-26 23:51:50 +02:00
Joachim Schlöffel e4093a3c9f retain package registries as CI artifacts 2026-09-26 23:40:12 +02:00
Joachim Schlöffel d70e9ce84c Merge branch 'main' into features/source-build 2026-09-26 23:30:24 +02:00
Joachim Schlöffel fed4ad011d Revert "add -ip and -port to openrc script"
This reverts commit 2825e1bfef.
2026-09-26 23:29:05 +02:00
Joachim Schlöffel dae1f755a2 vendor lavinmq build inputs 2026-09-26 23:22:14 +02:00
Joachim Schlöffel b3d5424349 vendor lavinmq build inputs 2026-09-26 23:21:44 +02:00
Joachim Schlöffel 13a2d0dd16 build seaweedfs from vendored source 2026-09-26 16:26:27 +02:00
11 changed files with 249 additions and 1 deletions
+8 -1
View File
@@ -70,7 +70,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
package: [seaweedfs, greptimedb, lavinmq, gitea] package: [seaweedfs, greptimedb, lavinmq, gitea, nifi]
container: container:
image: "alpine:3.24" image: "alpine:3.24"
env: env:
@@ -164,6 +164,13 @@ jobs:
name: alpine-package-gitea-${{ github.sha }} name: alpine-package-gitea-${{ github.sha }}
path: packages/worker-artifacts/gitea path: packages/worker-artifacts/gitea
- name: Download NiFi artifacts
if: contains(needs.preflight.outputs.selected_packages, 'nifi')
uses: actions/download-artifact@v3
with:
name: alpine-package-nifi-${{ github.sha }}
path: packages/worker-artifacts/nifi
- name: Merge package artifacts - name: Merge package artifacts
run: scripts/apk/merge-ci-artifacts.sh run: scripts/apk/merge-ci-artifacts.sh
+1
View File
@@ -25,6 +25,7 @@ https://code.factoring.digital/api/packages/public/alpine/v3.24/alpine-packages
| [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.0` | 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.0` | 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` | `1.27.3` | 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` | `1.27.3` | 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. |
## Use In Production ## Use In Production
+75
View File
@@ -0,0 +1,75 @@
# Maintainer: Joachim Schlöffel <joachim.schloeffel@financial-service-plus.de>
pkgname=nifi
pkgver=2.12.0
pkgrel=0
pkgdesc="Reliable system for processing and distributing data"
url="https://nifi.apache.org/"
arch="x86_64 aarch64"
license="Apache-2.0"
depends="openjdk21-jre-headless"
makedepends="unzip"
install="$pkgname.pre-install"
pkgusers="nifi"
pkggroups="nifi"
subpackages="
$pkgname-openrc:_openrc:noarch
"
options="!check !strip !tracedeps"
source="
$pkgname-$pkgver-bin.zip::https://dlcdn.apache.org/nifi/$pkgver/nifi-$pkgver-bin.zip
nifi.confd
nifi.initd
nifi.wrapper
"
package() {
local _dir
install -d "$pkgdir"/usr/lib/nifi "$pkgdir"/etc/nifi
cp -a "$builddir"/. "$pkgdir"/usr/lib/nifi/
chmod -R a+rX "$pkgdir"/usr/lib/nifi
cp -a "$pkgdir"/usr/lib/nifi/conf/. "$pkgdir"/etc/nifi/
rm -r "$pkgdir"/usr/lib/nifi/conf
ln -s /etc/nifi "$pkgdir"/usr/lib/nifi/conf
install -d -m 0750 -o nifi -g nifi "$pkgdir"/var/lib/nifi
for _dir in \
assets \
connector_assets \
content_repository \
database_repository \
diagnostics \
extensions \
flowfile_repository \
nar_repository \
provenance_repository \
state \
status_repository \
work; do
install -d -m 0750 -o nifi -g nifi "$pkgdir"/var/lib/nifi/$_dir
ln -s /var/lib/nifi/$_dir "$pkgdir"/usr/lib/nifi/$_dir
done
install -d -m 0750 -o nifi -g nifi "$pkgdir"/var/log/nifi
ln -s /var/log/nifi "$pkgdir"/usr/lib/nifi/logs
ln -s /run/nifi "$pkgdir"/usr/lib/nifi/run
chown -R nifi:nifi "$pkgdir"/etc/nifi
chmod 0750 "$pkgdir"/etc/nifi
install -Dm755 "$srcdir"/nifi.wrapper "$pkgdir"/usr/bin/nifi
}
_openrc() {
pkgdesc="$pkgdesc (OpenRC service)"
depends="$pkgname=$pkgver-r$pkgrel openrc"
install -Dm755 "$srcdir"/nifi.initd "$subpkgdir"/etc/init.d/nifi
install -Dm644 "$srcdir"/nifi.confd "$subpkgdir"/etc/conf.d/nifi
}
sha512sums="
5891039ccf15234bb21c2d1ce65027357ca7603ad8fdfc946dd4b6499ab8061fb07a6a56f8e8c5bb7635d446354ca7cc76ba40e55921818931f193a75f247334 nifi-2.12.0-bin.zip
fd576c2d2333aa79f7dac90e83f9cf6e0faed9748ebce0dfc1c18bcd1da0ec1d0da90d4004055bbddcb0f011a0e9efdc08f0eed2f3c19d49b1746019f2be1da9 nifi.confd
9f8a005fcd6a6f75a553321c27c672c4c202e8b86ff5fa0a1bd5eb0e7305592e67d8dc6a915d1f1bc01b39916b0fb0e61478cb6ae5aee4ae8b3be36c80c5662a nifi.initd
7764c6a53f0fb109ecde4959b438a0eeb669b00eafdbdb2abe5255f4053a237d4e97349594b3bf053abd55a96f8e217aa0cf0fec59a7c14f1db2490e747f713e nifi.wrapper
"
+50
View File
@@ -0,0 +1,50 @@
# Apache NiFi Alpine Package
Repackages Apache NiFi 2.12.0 Standard for Alpine. The package requires Java
21 and retains NiFi 2's secure default: HTTPS listens on `127.0.0.1:8443` and
uses generated single-user credentials.
## Install
```sh
apk add nifi nifi-openrc
rc-update add nifi default
rc-service nifi start
```
Open `https://127.0.0.1:8443/nifi` and retrieve the generated credentials:
```sh
grep 'Generated \(Username\|Password\)' /var/log/nifi/nifi-app.log
```
Set fixed single-user credentials as the service account:
```sh
doas -u nifi nifi set-single-user-credentials '<username>' '<password>'
rc-service nifi restart
```
## Runtime Layout
```text
/usr/bin/nifi Administration command wrapper
/usr/lib/nifi NiFi binaries and bundled NARs
/etc/nifi Mutable NiFi configuration and authorization state
/var/lib/nifi Repositories, state, extensions, and work files
/var/log/nifi Application logs
/etc/conf.d/nifi OpenRC account defaults
/etc/init.d/nifi OpenRC service
```
Edit `/etc/nifi/nifi.properties` to bind a different HTTPS address, configure
TLS, or select LDAP, OIDC, or another supported authentication provider.
## Package Commands
```sh
ALPINE_PACKAGE=nifi mise run apk:checksum
ALPINE_PACKAGE=nifi mise run apk:build
ALPINE_PACKAGE=nifi SKIP_BUILD=1 mise run apk:test-install
ALPINE_PACKAGE=nifi mise run apk:runtime-test
```
+3
View File
@@ -0,0 +1,3 @@
# Defaults for Apache NiFi.
NIFI_USER="nifi"
NIFI_GROUP="nifi"
+26
View File
@@ -0,0 +1,26 @@
#!/sbin/openrc-run
description="Apache NiFi dataflow service"
supervisor=supervise-daemon
name=nifi
command="/usr/lib/nifi/bin/nifi.sh"
command_args="run"
command_user="${NIFI_USER:-nifi}:${NIFI_GROUP:-nifi}"
directory="/usr/lib/nifi"
pidfile="/run/nifi/nifi.pid"
supervise_daemon_args="--chdir /usr/lib/nifi --env HOME=/var/lib/nifi --pidfile ${pidfile}"
depend() {
need net
use dns logger
}
start_pre() {
local service_owner="${NIFI_USER:-nifi}:${NIFI_GROUP:-nifi}"
checkpath -d -m 0750 -o "$service_owner" \
/run/nifi \
/var/lib/nifi \
/var/log/nifi
}
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
addgroup -S nifi 2>/dev/null
adduser -S -D -H -h /var/lib/nifi -s /sbin/nologin \
-G nifi -g nifi nifi 2>/dev/null
exit 0
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
exec /usr/lib/nifi/bin/nifi.sh "$@"
+34
View File
@@ -0,0 +1,34 @@
#!/usr/bin/env bash
set -euo pipefail
apk add nifi nifi-openrc curl
test -x /usr/bin/nifi
test -x /usr/lib/nifi/bin/nifi.sh
test -d /etc/nifi
test -L /usr/lib/nifi/conf
test "$(readlink /usr/lib/nifi/conf)" = /etc/nifi
test -d /var/lib/nifi
test -d /var/log/nifi
test -f /etc/init.d/nifi
test -f /etc/conf.d/nifi
test -d /usr/lib/nifi/docs
test "$(stat -c '%U:%G %a' /var/lib/nifi)" = "nifi:nifi 750"
rc-update add nifi default || true
test -L /etc/runlevels/default/nifi
rc-service nifi start
for _attempt in $(seq 1 300); do
if curl --fail --insecure --silent --show-error \
https://localhost:8443/nifi/ >/dev/null; then
break
fi
sleep 1
done
curl --fail --insecure --silent --show-error https://localhost:8443/nifi/ >/dev/null
grep -q 'Generated Username' /var/log/nifi/nifi-app.log
grep -q 'Generated Password' /var/log/nifi/nifi-app.log
rc-service nifi status
rc-service nifi stop
+39
View File
@@ -0,0 +1,39 @@
#!/usr/bin/env bash
set -euo pipefail
repo_root="${REPO_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../../.." && pwd)}"
# shellcheck source=scripts/apk/test-install-lib.sh
. "${repo_root}/scripts/apk/test-install-lib.sh"
apk_test_install_run "${repo_root}" "${PACKAGE_NAME:-nifi}" "${PACKAGE_VERSION:-2.12.0-r0}" <<'SCRIPT'
set -e
if [ -n "${ALPINE_REPOSITORY_URL}" ]; then
if [ -n "${ALPINE_REPOSITORY_KEY_URL}" ]; then
apk add --no-cache curl >/dev/null
cd /etc/apk/keys
curl -fsSLOJ "${ALPINE_REPOSITORY_KEY_URL}"
fi
printf "%s\n" "${ALPINE_REPOSITORY_URL}" >> /etc/apk/repositories
else
cp "/repo/${ALPINE_ARCH}"/*.rsa.pub /etc/apk/keys/
printf "%s\n" /repo >> /etc/apk/repositories
fi
apk update
apk add "${PACKAGE_NAME}" "${PACKAGE_NAME}-openrc"
test -x /usr/bin/nifi
test -x /usr/lib/nifi/bin/nifi.sh
test -d /etc/nifi
test -L /usr/lib/nifi/conf
test "$(readlink /usr/lib/nifi/conf)" = /etc/nifi
test -d /var/lib/nifi
test -d /var/log/nifi
test -f /etc/init.d/nifi
test -f /etc/conf.d/nifi
test -d /usr/lib/nifi/docs
test "$(stat -c '%U:%G %a' /var/lib/nifi)" = "nifi:nifi 750"
rc-update add nifi default
test -L /etc/runlevels/default/nifi
SCRIPT
@@ -0,0 +1,3 @@
provider="github"
repo="apache/nifi"
version_prefix="rel/nifi-"