tighten docs

This commit is contained in:
Joachim Schlöffel
2026-07-05 23:21:24 +02:00
parent 1c4b598b5c
commit e076b3249a
3 changed files with 50 additions and 92 deletions
+18 -43
View File
@@ -16,16 +16,14 @@ https://code.factoring.digital/api/packages/public/alpine/v3.24/alpine-packages
### Add The Package Repository
Install the registry signing key on each Alpine node:
Install the registry key:
```sh
cd /etc/apk/keys
curl -fsSLOJ https://code.factoring.digital/api/packages/public/alpine/key
```
Keep the filename returned by Gitea. Alpine matches repository signatures by key filename, otherwise `apk update` reports `UNTRUSTED signature`.
Add the stable package repository matching the Alpine branch on the node:
Add the repository for the node's Alpine branch:
```sh
printf '%s\n' \
@@ -35,8 +33,7 @@ printf '%s\n' \
apk update
```
If a forked or future registry is private, include a Gitea user and package token in the
repository URL:
Private registry URL format:
```text
https://<user>:<token>@code.factoring.digital/api/packages/public/alpine/v3.24/alpine-packages
@@ -59,8 +56,6 @@ seaweedfs SeaweedFS 4.31 release binary and OpenRC role splits
greptimedb GreptimeDB 1.0.2 built from source for x86_64
```
Package-specific details are in the linked package READMEs above.
Local build output is written under:
```text
@@ -100,17 +95,13 @@ gitea-workflow-build Run the Gitea build workflow locally through act as a pull
```
`apk:build` targets `x86_64` by default. Multi-arch builds target `x86_64` and
`aarch64`; override with `ALPINE_ARCHES` when needed:
`aarch64`:
```sh
ALPINE_ARCHES="x86_64 aarch64" mise run apk:build-all
```
Unqualified build and install-test tasks discover all packages. GreptimeDB is a
source build and can take close to an hour; it is limited to `x86_64` during
production evaluation. Target fast package work explicitly:
Build or test a subset of packages with `ALPINE_PACKAGE` or `ALPINE_PACKAGES`:
Limit package selection with `ALPINE_PACKAGE` or `ALPINE_PACKAGES`:
```sh
ALPINE_PACKAGE=seaweedfs mise run apk:build
@@ -121,29 +112,27 @@ ALPINE_PACKAGE=greptimedb mise run apk:build
ALPINE_PACKAGE=greptimedb SKIP_BUILD=1 mise run apk:test-install
```
Docker-backed build tasks keep Cargo registry, Rustup, and Cargo target caches in named Docker volumes. The default volume scope is derived from the Git remote owner/repository and is split by package and architecture. Override it when needed:
Override Docker cache scope:
```sh
ALPINE_APK_CACHE_SCOPE=public-alpine-packages ALPINE_PACKAGE=greptimedb mise run apk:build
ALPINE_APK_CACHE_PREFIX=alpine-apk-ci ALPINE_PACKAGE=greptimedb mise run apk:build
```
Use the test shell to inspect the package in Alpine with the current build
installed:
Open an Alpine test shell:
```sh
ALPINE_PACKAGE=seaweedfs mise run apk:shell
mise run apk:test-shell
```
Use the install test to validate the production instructions against the local
package repository in a fresh Alpine container:
Run the install test:
```sh
mise run apk:test-install
```
Use `SKIP_BUILD=1` to reuse existing local packages:
Reuse existing local packages:
```sh
SKIP_BUILD=1 mise run apk:test-install
@@ -152,45 +141,35 @@ SKIP_BUILD=1 mise run apk:test-shell
### Adding Packages
Each package lives under:
Package path:
```text
packaging/alpine/local/<pkgname>/
```
The only required file is `APKBUILD`. Package-specific helpers can be added as
hooks:
Optional package hooks:
```text
packaging/alpine/local/<pkgname>/scripts/test-install.sh
packaging/alpine/local/<pkgname>/scripts/update-generated-sources.sh
```
Repo-level tasks discover all `packaging/alpine/local/*/APKBUILD` files. Hook
tasks skip packages that do not provide the requested hook.
Start new packages from the blueprint:
Start from the blueprint:
```text
packaging/alpine/blueprint/
```
For compiled software, declare build tools in `makedepends` and use normal
Alpine `build()`, `check()`, and `package()` functions in the package's
`APKBUILD`.
### Generated Package Sources
Generated files should live next to the package's `APKBUILD` so
`abuild checksum` can track them as ordinary package sources. For SeaweedFS,
that includes:
Generated package sources live next to the package `APKBUILD`:
```text
packaging/alpine/local/seaweedfs/example-*.toml
packaging/alpine/local/seaweedfs/weed.bash-completion
```
Refresh generated sources through package-local hooks:
Refresh generated sources:
```sh
mise run apk:update-generated
@@ -198,14 +177,10 @@ ALPINE_PACKAGE=seaweedfs mise run apk:update-generated
mise run apk:checksum
```
Run `apk:checksum` after changing any file listed in `source=`.
### Gitea Workflow
The workflow at `.gitea/workflows/build.yml` builds against each stable Alpine
target in its matrix and publishes to the matching registry branch, currently
`v3.23` and `v3.24`, on push or tag. It skips publishing for pull request
events.
`.gitea/workflows/build.yml` builds and publishes `v3.23` and `v3.24`.
Pull requests build only.
Repository variables:
@@ -222,13 +197,13 @@ PACKAGE_USER=<gitea package publisher>
PACKAGE_TOKEN=<token with package write access>
```
Pre-check the workflow locally with `act`:
Check the workflow locally:
```sh
mise run gitea-workflow-build
```
Publish already-built local packages manually:
Publish local packages:
```sh
INSTANCE_URL=https://code.factoring.digital \
+15 -30
View File
@@ -1,8 +1,9 @@
# GreptimeDB Alpine Package
This package builds `greptime` from the upstream GreptimeDB source release and packages OpenRC service subpackages plus default `/etc/greptimedb` configuration.
Builds `greptime` from the upstream source release and packages OpenRC service
subpackages plus `/etc/greptimedb` defaults.
The APKBUILD builds the release directly:
Build command:
```sh
cargo build --profile nightly --locked --bin greptime --features servers/dashboard
@@ -10,9 +11,7 @@ cargo build --profile nightly --locked --bin greptime --features servers/dashboa
## Runtime Layout
The package installs the upstream `greptime` binary as `/usr/bin/greptime`.
OpenRC support is split into component subpackages that map to the documented
GreptimeDB commands:
Installs `/usr/bin/greptime` and component OpenRC packages:
- `greptimedb-docs`: upstream configuration examples and reference files from
`config/`
@@ -22,23 +21,19 @@ GreptimeDB commands:
- `greptimedb-flownode-openrc`: `greptime flownode start`
- `greptimedb-frontend-openrc`: `greptime frontend start`
Default TOML files are installed in `/etc/greptimedb`. The standalone config
listens on the documented local ports:
Default TOML files are installed in `/etc/greptimedb`. Standalone ports:
- `127.0.0.1:4000`: HTTP API and dashboard
- `127.0.0.1:4001`: gRPC
- `127.0.0.1:4002`: MySQL
- `127.0.0.1:4003`: PostgreSQL
GreptimeDB binds to localhost by default. Edit the matching TOML file before
exposing a service on another interface.
Install `greptimedb-docs` for the full upstream configuration reference and
example files under `/usr/share/doc/greptimedb/config`.
Configs bind to localhost by default. Upstream config examples are in
`/usr/share/doc/greptimedb/config`.
## OpenRC Usage
Install and start the standalone service:
Standalone:
```sh
apk add greptimedb greptimedb-docs greptimedb-standalone-openrc
@@ -46,7 +41,7 @@ rc-update add greptimedb.standalone default
rc-service greptimedb.standalone start
```
Install the distributed components when managing a small OpenRC deployment:
Distributed components:
```sh
apk add \
@@ -57,8 +52,7 @@ apk add \
greptimedb-frontend-openrc
```
The package starts each service with `-c /etc/greptimedb/<component>.toml`.
Package wrapper settings live in `/etc/conf.d/greptimedb.<component>`:
Wrapper settings in `/etc/conf.d/greptimedb.<component>`:
- `GREPTIMEDB_CONFIG`: config file path passed with `-c`
- `GREPTIMEDB_LOG_DIR`: component log directory passed with `--log-dir`
@@ -68,35 +62,27 @@ Package wrapper settings live in `/etc/conf.d/greptimedb.<component>`:
- `GREPTIMEDB_OPTS`: extra component arguments appended after package defaults
- `GREPTIMEDB_GLOBAL_OPTS`: arguments inserted before the component command
GreptimeDB's own config environment variables are separate from these OpenRC
wrapper variables. The upstream docs use component prefixes such as
`GREPTIMEDB_STANDALONE`, `GREPTIMEDB_DATANODE`, `GREPTIMEDB_FRONTEND`, and
`GREPTIMEDB_METASRV` with double underscores for nested config keys.
For production clusters, follow the upstream deployment guidance. GreptimeDB
recommends Kubernetes and the GreptimeDB Operator for production self-hosting.
## Package Commands
Refresh the source checksum after changing `pkgver`:
Refresh checksums:
```sh
ALPINE_PACKAGE=greptimedb mise run apk:checksum
```
Build only this package:
Build:
```sh
ALPINE_PACKAGE=greptimedb mise run apk:build
```
Install-test an existing local build without recompiling:
Install-test local build:
```sh
ALPINE_PACKAGE=greptimedb SKIP_BUILD=1 mise run apk:test-install
```
Install-test from a published Gitea Alpine repository:
Install-test published repository:
```sh
ALPINE_PACKAGE=greptimedb \
@@ -106,5 +92,4 @@ ALPINE_REPOSITORY_KEY_URL=https://code.factoring.digital/api/packages/public/alp
mise run apk:test-install
```
The full build can take close to an hour. Do not run it as part of lightweight
metadata or script checks.
Full builds take close to an hour.
+17 -19
View File
@@ -1,23 +1,24 @@
# SeaweedFS Alpine Package
This package repackages the official SeaweedFS 4.31 Linux release tarballs for `x86_64` and `aarch64`. It installs the `weed` binary, short active config defaults, generated examples, bash completion, and split OpenRC service packages.
Repackages official SeaweedFS 4.31 Linux release tarballs for `x86_64` and
`aarch64`.
## Package Commands
Refresh generated config examples and bash completion after changing the SeaweedFS version or generated source flow:
Refresh generated sources:
```sh
ALPINE_PACKAGE=seaweedfs mise run apk:update-generated
ALPINE_PACKAGE=seaweedfs mise run apk:checksum
```
Build only this package:
Build:
```sh
ALPINE_PACKAGE=seaweedfs mise run apk:build
```
Install-test an existing local build without rebuilding:
Install-test local build:
```sh
ALPINE_PACKAGE=seaweedfs SKIP_BUILD=1 mise run apk:test-install
@@ -25,9 +26,7 @@ ALPINE_PACKAGE=seaweedfs SKIP_BUILD=1 mise run apk:test-install
## Install Node Roles
Install the base package plus only the OpenRC role packages needed on that node.
For a single-node test or a compact small deployment:
Single-node install:
```sh
apk add seaweedfs \
@@ -36,7 +35,7 @@ apk add seaweedfs \
seaweedfs-filer-openrc
```
For separated production nodes, install only the role running there:
Role-specific installs:
```sh
apk add seaweedfs seaweedfs-master-openrc
@@ -57,7 +56,7 @@ seaweedfs-admin-openrc -> /etc/init.d/seaweedfs.admin
seaweedfs-worker-openrc -> /etc/init.d/seaweedfs.worker
```
The package name is `seaweedfs`, matching Alpine aports. If a node already has Alpine's old generic OpenRC package installed, remove it before installing a role-specific split:
Replace Alpine's old generic OpenRC package before installing a role split:
```sh
apk del seaweedfs-openrc
@@ -66,7 +65,7 @@ apk add seaweedfs seaweedfs-master-openrc
## Configure Services
Runtime files are installed in the usual Alpine locations:
Runtime paths:
```text
/usr/bin/weed
@@ -75,13 +74,14 @@ Runtime files are installed in the usual Alpine locations:
/etc/init.d/seaweedfs.*
```
Edit `/etc/conf.d/seaweedfs.<role>` for command-line flags and `/etc/seaweedfs/*.toml` for SeaweedFS config. The packaged defaults are short and production-neutral; full upstream example configs are in:
Edit `/etc/conf.d/seaweedfs.<role>` for flags and `/etc/seaweedfs/*.toml` for
SeaweedFS config. Upstream examples:
```text
/usr/share/doc/seaweedfs/examples/
```
Enable and start only the services needed on the node:
Enable services:
```sh
rc-update add seaweedfs.master default
@@ -94,7 +94,7 @@ rc-update add seaweedfs.filer default
rc-service seaweedfs.filer start
```
Check the installed binary and service state:
Check status:
```sh
weed version
@@ -103,30 +103,28 @@ rc-service seaweedfs.master status
## Optional Packages
Install docs and generated examples:
Docs and examples:
```sh
apk add seaweedfs-doc
```
Install bash completion:
Bash completion:
```sh
apk add bash-completion seaweedfs-bash-completion
```
`seaweedfs-bash-completion` is also selected automatically when `seaweedfs` and `bash-completion` are installed together.
## Upgrade Or Pin
Use normal Alpine package operations:
Upgrade:
```sh
apk upgrade seaweedfs
rc-service seaweedfs.master restart
```
Pin a specific package build when needed:
Pin:
```sh
apk add seaweedfs=4.31-r3