No description
| .vscode | ||
| docs | ||
| schemas | ||
| services | ||
| .gitignore | ||
| LICENSE.md | ||
| README.md | ||
| todo.md | ||
Open Cloud Mesh Containers
This repository hosts scripts and resources to build and publish container images for OCM services using separate workflows for GitHub Actions and Forgejo Actions.
Workflows
- GitHub:
.github/workflows/build-containers.yml - Forgejo:
.forgejo/workflows/build-containers.yml
Scripts (Nushell)
Build Command
nu scripts/build.nu --service <service-name> [options]
Multi-Version Builds
# Build all versions from manifest
nu scripts/build.nu --service reva-base --all-versions
# Build specific versions
nu scripts/build.nu --service reva-base --versions v1.29.0,v1.28.0
# Generate CI matrix
nu scripts/build.nu --service reva-base --matrix-json
See docs/version-manifests.md for details on version manifests.
Library Modules (scripts/lib/)
lib/meta.nu– Derive build type, tags, platforms from git/CIlib/version.nu– Derive service version based on strategy (component/repository)lib/tags.nu– Compute image tags based on version strategy and build contextlib/manifest.nu– Load and merge version manifestslib/matrix.nu– Generate CI build matriceslib/validate.nu– Validate service configs and manifestslib/buildx.nu– Setup buildx and perform buildslib/dependencies.nu– Resolve internal service dependencieslib/registry/registry-info.nu– Parse git origin to derive registry pathslib/registry/registry.nu– Login to GHCR and Forgejo registries
Service Configuration
Services are defined in services/{service-name}.nuon. New simplified format:
{
"name": "reva-base",
"context": "services/reva-base",
"dockerfile": "services/reva-base/Dockerfile",
"sources": {
"reva": {
"url": "https://github.com/cs3org/reva",
"ref": "v3.3.2",
"build_arg": "REVA_BRANCH"
}
},
"external_images": {
"build": {
"image": "golang:1.25-trixie",
"build_arg": "BASE_BUILD_IMAGE"
}
},
"dependencies": {
"reva-base": {
"version": "v3.3.2",
"build_arg": "REVA_BASE_IMAGE"
}
}
}
For multi-version builds, you can create services/{service-name}/versions.nuon. Check docs/version-manifests.md for examples.
Conventions
- Release builds: multi-arch (linux/amd64, linux/arm64)
- Dev/Stage builds: linux/amd64 only, triggered by commit messages containing
(dev-build)or(stage-build)(or[dev-build],[stage-build]) - Registries: GHCR (
ghcr.io) and Forgejo (domain from git origin)