| .forgejo/workflows | ||
| .github/workflows | ||
| docs | ||
| examples | ||
| schemas | ||
| scripts | ||
| services | ||
| tls/certificate-authority | ||
| .gitattributes | ||
| .gitignore | ||
| .markdownlint.json | ||
| LICENSE.md | ||
| Makefile | ||
| README.md | ||
| todo.md | ||
Open Cloud Mesh Containers
This repository hosts scripts and resources to build and publish container images for OCM services using DockyPody, a Nushell-based build system.
Quick Start
-
Generate TLS certificates:
make tls all -
Build a service:
nu scripts/dockypody.nu build --service <service-name>
For complete setup instructions, see Getting Started Guide.
Key Features
- Multi-platform builds - Build platform variants (e.g., debian, alpine) with shared configuration
- Version management - Build multiple versions from manifests with automatic tagging
- Dependency resolution - Automatic dependency building with correct build order
- Cache optimization - Deterministic cache busting for efficient rebuilds
- TLS management - Selective certificate copying for secure, minimal images
- Local development - Use local folder sources for iterative development without committing changes
See Build System for complete feature documentation.
Local Development
For local development, you can use local filesystem directories as sources instead of Git repositories:
{
"sources": {
"reva": {
"path": "../reva" // Local development directory
}
}
}
Benefits:
- Test changes without committing to Git
- Iterate quickly on local modifications
- Build with uncommitted code
Restrictions:
- Development only - Local sources are automatically rejected in CI/production builds
- Paths must be within the repository root (path traversal prevention)
For complete details, see Service Configuration - Local Folder Sources.
Documentation
For New Users
- Getting Started - Quick start tutorial
- Service Configuration - Understanding service configs
For Developers
- Nushell Development Guide - Essential before editing scripts
- Build System - Build system architecture
For Service Authors
- Service Setup Guide - Creating new services
- Multi-Version Builds - Version management
- Multi-Platform Builds - Platform variants
Reference Documentation
- CLI Reference - Complete CLI documentation
- Config Schema - Service configuration schema
- Version Manifest Schema - Version manifest schema
- Platform Manifest Schema - Platform manifest schema
See Documentation Index for complete documentation listing.
Service Configuration
Services are defined in services/{service-name}.nuon:
{
"name": "revad-base",
"context": "services/revad-base",
"dockerfile": "services/revad-base/Dockerfile",
"sources": {
"revad": {
"url": "https://github.com/cs3org/reva",
"ref": "v3.3.3"
}
}
}
See Service Configuration for complete documentation.
Workflows
CI/CD workflows are available for GitHub Actions and Forgejo Actions:
- GitHub:
.github/workflows/build-containers.yml - Forgejo:
.forgejo/workflows/build-containers.yml
See CI/CD Workflows for workflow documentation (pending).
Conventions
- Release builds: native runner architecture (linux/amd64 on GitHub-hosted runners)
- Dev/Stage builds: linux/amd64 only, triggered by commit messages containing
(dev-build)or(stage-build) - Registries: GHCR (
ghcr.io) and Forgejo (domain from git origin)