No description
Find a file
2025-11-04 09:36:59 +00:00
.vscode add: better build system versioning files and configs 2025-11-03 22:20:42 +00:00
docs add: docs 2025-11-04 08:41:26 +00:00
schemas add: build system schemas and examples 2025-11-04 08:04:57 +00:00
services add: richard to filesystem 2025-11-04 09:36:59 +00:00
.gitignore add: .gitignore 2025-11-04 09:35:37 +00:00
LICENSE.md add: reva and cernbox dockerfile(s) 2025-10-31 19:37:37 +00:00
README.md add: todo 2025-11-04 08:44:20 +00:00
todo.md add: todo 2025-11-04 08:44:20 +00:00

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/CI
  • lib/version.nu Derive service version based on strategy (component/repository)
  • lib/tags.nu Compute image tags based on version strategy and build context
  • lib/manifest.nu Load and merge version manifests
  • lib/matrix.nu Generate CI build matrices
  • lib/validate.nu Validate service configs and manifests
  • lib/buildx.nu Setup buildx and perform builds
  • lib/dependencies.nu Resolve internal service dependencies
  • lib/registry/registry-info.nu Parse git origin to derive registry paths
  • lib/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)