|
All checks were successful
ci/woodpecker/push/ci/4 Pipeline was successful
ci/woodpecker/push/ci/3 Pipeline was successful
ci/woodpecker/push/forest-ci-image/2 Pipeline was successful
ci/woodpecker/push/forest-ci-image/1 Pipeline was successful
ci/woodpecker/push/forest-ci-manifest Pipeline was successful
ci/woodpecker/push/ci/2 Pipeline was successful
ci/woodpecker/push/ci/1 Pipeline was successful
ci/woodpecker/push/manifest/2 Pipeline was successful
ci/woodpecker/push/manifest/1 Pipeline was successful
ci/woodpecker/push/deploy Pipeline was successful
- deployment/projects/{forest,forage}/forest.cue: move env-specific host
and advertised URLs into per-env config blocks (dev keeps
*.dev.forage.sh, prod uses *.forage.sh)
- .woodpecker/deploy.yaml: deploy via `forest release prepare` once per
project (emits manifests for all envs) then `forest release annotate`
— no per-env `release create`; server-side triggers pick up the
annotation and fire the per-environment releases
- apps/forest/crates/forest/src/cli/release/create.rs: add --skip-commit
to stop create after prepare+annotate, leaving the release for
server-side triggers
- apps/{forest,forage}/Dockerfile: probe the sccache memcached endpoint
and build without RUSTC_WRAPPER when it is unreachable, instead of
failing the build
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: kjuulh <contact@kjuulh.io>
|
||
|---|---|---|
| .woodpecker | ||
| apps | ||
| deployment | ||
| scripts | ||
| .gitignore | ||
| .ignore | ||
| .release-please-manifest.json | ||
| cliff.toml | ||
| mise.toml | ||
| README.md | ||
Forest - developer platform
Codify your development workflows; CI, deployments, component sharing as CUE manifests, then share them across your team.
rawpotion fork. This is a personal mirror of understory-io/forest hosted on src.rawpotion.io with Woodpecker CI and rawpotion-specific release artifacts. Container images publish to
git.kjuulh.io/kjuulh/<app>.
Install
cueCuelang (yaml and golang had a baby)
To install forest run the below command, it will install forest as a cli, and set your current profile to run against the production instance of forest.
Public releases on src.rawpotion.io, plain curl, no auth tooling required.
curl -fsSL https://src.rawpotion.io/rawpotion/forest/raw/branch/kjuulh/gitea-fork/scripts/install.sh | bash
To pin to a specific version, pass it to both the download (so the script
itself comes from that release) and to the install script (so it grabs
the matching tarball). bash -s -- forwards positional args when the
script comes in via stdin:
Next you need to add it to .zshrc to get full cli support
curl -fsSL https://src.rawpotion.io/rawpotion/forest/releases/download/v0.1.13/install.sh \
| bash -s -- v0.1.13
The fork ships linux-x86_64 and linux-aarch64 binaries. macOS users can
build from source (cargo build --release -p forest from apps/forest) or
install from the upstream understory-io release.
Logging in
Either create an account or sign in, both can be done entirely in the terminal if wanted
forest auth login
Keeping forest up to date
forest self update # upgrade to latest
A one-line nag also prints at the end of every command when a newer release
exists (cached 24h; suppress with FOREST_NO_UPDATE_CHECK=1 or CI=true).
What's here
apps/forest/— theforestCLI and supporting librariesapps/forage/— the managed web UI
Release flow (fork)
Releases are tag-driven. release-please is gone; the fork uses
git-cliff for changelog/release-notes generation
(see cliff.toml) and a single Woodpecker pipeline.
# 1. Bump apps/forest/crates/forest/Cargo.toml $.package.version
# 2. Commit, tag, push
git commit -am "chore(release): v0.2.0"
git tag v0.2.0
git push origin main --tags
The .woodpecker/release-prepare.yaml + release-build.yaml workflows
trigger on v* tags. release-prepare generates release notes from
conventional commits and creates the release on src.rawpotion.io via the
gitea API. release-build then runs a matrix on native amd64 and arm64
runners (no QEMU) and attaches the per-arch tarballs.