SeaweedFS Alpine Package

Local Alpine 3.23 packaging for SeaweedFS 4.31. The workflow runs Alpine tooling inside Docker and writes signed packages under packages/local/<arch>/.

Commands

mise run apk:build
mise run apk:build-all
mise run apk:build-x86_64
mise run apk:build-aarch64
mise run apk:update-generated
mise run apk:checksum
mise run apk:lint
mise run apk:packages
mise run apk:smoke
mise run apk:test-shell
mise run apk:publish-check
mise run apk:publish-gitea
mise run gitea-workflow-build
mise run apk:shell
mise run apk:clean

apk:build targets x86_64 by default. Multi-arch builds target x86_64 and aarch64; override with ALPINE_ARCHES when needed:

ALPINE_ARCHES="x86_64 aarch64" mise run apk:build-all

The release binary is also exposed as a mise HTTP tool stub:

./bin/weed version

Package Layout

packaging/alpine/local/seaweedfs/APKBUILD
packaging/alpine/local/seaweedfs/*.toml
packaging/alpine/local/seaweedfs/example-*.toml
packaging/alpine/local/seaweedfs/weed.bash-completion
packaging/alpine/local/seaweedfs/seaweedfs.*.confd
packaging/alpine/local/seaweedfs/seaweedfs.initd
packages/local/<arch>/

The package repackages upstream release tarballs, so builds use ALPINE_BUILD_PLATFORM=linux/amd64 by default. Signing keys and distfiles are cached in .cache/abuild/ and .cache/apk-distfiles/.

The Gitea workflow publishes to the Alpine package registry branch v3.23. Override ALPINE_VERSION and ALPINE_REGISTRY_BRANCH if you intentionally build for another Alpine branch, including edge. Use mise run gitea-workflow-build for a local pull_request workflow check through act; the publish step is skipped for that event.

Test And Publish

mise run apk:smoke
mise run apk:test-shell
mise run apk:publish-check

apk:publish-check runs APKBUILD linting, rebuilds configured architectures, lists package metadata, and installs the built packages in an Alpine container. apk:test-shell builds the selected architecture, installs the local package set in an Alpine container, and opens a shell. Use SKIP_BUILD=1 to reuse an existing local repository. Set TEST_SHELL_TIMEOUT to adjust the timeout for apk update and apk add inside the test container.

Install from the local repo with the base package plus the role-specific OpenRC subpackage you need:

apk add seaweedfs seaweedfs-master-openrc

Optional generated material is split out:

apk add seaweedfs-doc
apk add bash-completion seaweedfs-bash-completion

The doc split installs upstream scaffolds under /usr/share/doc/seaweedfs/examples/. The bash completion split installs /usr/share/bash-completion/completions/weed and is also selected by install_if when seaweedfs and bash-completion are installed together.

This repository publishes seaweedfs, matching Alpine aports. Remove Alpine's old generic OpenRC package before installing a role split:

apk del seaweedfs-openrc
apk add seaweedfs seaweedfs-master-openrc

The OpenRC subpackages are:

seaweedfs-master-openrc   -> seaweedfs.master
seaweedfs-volume-openrc   -> seaweedfs.volume
seaweedfs-filer-openrc    -> seaweedfs.filer
seaweedfs-s3-openrc       -> seaweedfs.s3
seaweedfs-webdav-openrc   -> seaweedfs.webdav
seaweedfs-sftp-openrc     -> seaweedfs.sftp
seaweedfs-admin-openrc    -> seaweedfs.admin
seaweedfs-worker-openrc   -> seaweedfs.worker

Each service has defaults in /etc/conf.d/seaweedfs.*. Enable only the roles needed on the node:

rc-update add seaweedfs.master default
rc-service seaweedfs.master start

If the repo key is missing on a target system, copy .cache/abuild/*.rsa.pub into /etc/apk/keys/ before apk update.

Gitea Registry

The Gitea workflow reads these repository variables and secrets:

Variables: INSTANCE_URL, PACKAGE_OWNER, PACKAGE_NAME
Secrets:   PACKAGE_USER, PACKAGE_TOKEN

It uploads each built *.apk with HTTP PUT to:

${INSTANCE_URL}/api/packages/${PACKAGE_OWNER}/alpine/v3.23/${PACKAGE_NAME}

For local publishing, run:

INSTANCE_URL=https://code.factoring.digital \
PACKAGE_OWNER=fspdigital \
PACKAGE_NAME=seaweedfs-alpine \
PACKAGE_USER=... \
PACKAGE_TOKEN=... \
mise run apk:publish-gitea

Alpine Package Dos And Don'ts

Do:

  • Keep local source files next to the APKBUILD.
  • Put full upstream scaffolds in /usr/share/doc/seaweedfs/examples/, not active /etc.
  • Run mise run apk:update-generated when updating generated examples or completions.
  • Run mise run apk:checksum after changing any package source file.
  • Increment pkgrel for package-only changes; reset it when pkgver changes.
  • Keep installed defaults short and production-neutral.
  • Run mise run apk:publish-check before handing off a repository.

Don't:

  • Edit generated src/, pkg/, or packages/ output.
  • Hand-edit checksum lines when abuild checksum can do it.
  • Bundle long upstream examples as active /etc defaults.
  • Install all OpenRC roles on a node by default.
Description
No description provided
Readme 179 KiB
Languages
Shell 97.6%
Dockerfile 2.4%