97 lines
3.1 KiB
Markdown
97 lines
3.1 KiB
Markdown
# SeaweedFS Alpine package base
|
|
|
|
This repository is set up to build a local SeaweedFS Alpine package with `mise` while keeping all Alpine tooling inside Docker.
|
|
|
|
## Tasks
|
|
|
|
```sh
|
|
mise run apk:build
|
|
mise run apk:build-all
|
|
mise run apk:build-x86_64
|
|
mise run apk:build-aarch64
|
|
mise run apk:checksum
|
|
mise run apk:lint
|
|
mise run apk:packages
|
|
mise run apk:smoke
|
|
mise run apk:publish-check
|
|
mise run apk:shell
|
|
mise run apk:clean
|
|
```
|
|
|
|
`mise` also declares the Docker CLI as a project tool dependency, so the package workflow has a single command surface.
|
|
|
|
## Tool stub
|
|
|
|
The SeaweedFS release binary is also available as a mise HTTP tool stub:
|
|
|
|
```sh
|
|
./bin/weed version
|
|
```
|
|
|
|
The stub is pinned to SeaweedFS `4.31` and includes Linux x64 and arm64 release URLs with SHA-256 checksums.
|
|
|
|
The default build targets `x86_64`. Multi-arch builds currently target `x86_64` and Alpine's `aarch64`; override this with `ALPINE_ARCHES`, for example:
|
|
|
|
```sh
|
|
ALPINE_ARCHES="x86_64 aarch64" mise run apk:build-all
|
|
```
|
|
|
|
Generated packages and repository indexes are written under `packages/`, typically:
|
|
|
|
```text
|
|
packages/local/x86_64/
|
|
packages/local/aarch64/
|
|
```
|
|
|
|
Because this package repackages upstream release binaries, all targets are built from the native Docker builder platform by default (`ALPINE_BUILD_PLATFORM=linux/amd64`). No QEMU/binfmt setup is required.
|
|
|
|
The signing key and distfiles cache are kept in `.cache/abuild/` and `.cache/apk-distfiles/` so repeated builds use the same local repository key.
|
|
|
|
## Local repository
|
|
|
|
To test the package in an Alpine container:
|
|
|
|
```sh
|
|
mise run apk:smoke
|
|
```
|
|
|
|
Before publishing or handing the local repository to another system, run:
|
|
|
|
```sh
|
|
mise run apk:publish-check
|
|
```
|
|
|
|
That runs APKBUILD linting, rebuilds all configured architectures, lists the generated package metadata, and performs the install smoke test.
|
|
|
|
To install OpenRC service scripts as well:
|
|
|
|
```sh
|
|
apk add seaweedfs seaweedfs-master-openrc
|
|
```
|
|
|
|
The OpenRC subpackages are:
|
|
|
|
```text
|
|
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 matching defaults in `/etc/conf.d/seaweedfs.*`. Remote targets use distinct variables such as `SEAWEEDFS_MASTER`, `SEAWEEDFS_FILER`, and `SEAWEEDFS_ADMIN`; `SEAWEEDFS_OPTS` remains available for additional flags. Enable only the roles needed for a node, for example:
|
|
|
|
```sh
|
|
rc-update add seaweedfs.master default
|
|
rc-service seaweedfs.master start
|
|
```
|
|
|
|
If the repository key is not copied into `packages/local/x86_64/`, copy the public key from `.cache/abuild/*.rsa.pub` into `/etc/apk/keys/` in the test system before running `apk update`.
|
|
|
|
## Package inputs
|
|
|
|
The package lives in `packaging/alpine/local/seaweedfs/APKBUILD`. It repackages SeaweedFS `4.31` release binaries from GitHub and installs the `weed` binary. Generated scaffold configs are installed under `/etc/seaweedfs/`.
|