|
| 1 | +# agents.md — server |
| 2 | + |
| 3 | +## Repository Overview |
| 4 | + |
| 5 | +This repository builds the official **ownCloud Server** Docker image |
| 6 | +(`owncloud/server` on Docker Hub). It does not contain the ownCloud Server |
| 7 | +source code — it packages a release tarball on top of the |
| 8 | +[`owncloud/base`](https://github.com/owncloud-docker/base) image and adds an |
| 9 | +optional root-filesystem overlay. Images are multi-architecture and built via |
| 10 | +GitHub Actions. |
| 11 | + |
| 12 | +- **Classification:** Docker image build |
| 13 | +- **Activity Status:** Active |
| 14 | +- **License:** MIT |
| 15 | +- **Language:** Dockerfile, Shell |
| 16 | + |
| 17 | +## Architecture & Key Paths |
| 18 | + |
| 19 | +- `v22.04/` — Ubuntu 22.04 based image (ownCloud 10.x stable) |
| 20 | + - `v22.04/Dockerfile.multiarch` — image definition (`FROM owncloud/base:22.04`) |
| 21 | + - `v22.04/overlay/` — files copied into the image root (`ADD overlay /`); currently empty |
| 22 | + - `v22.04/<version>/.trivyignore` — accepted-CVE exclusions for the Trivy scan |
| 23 | +- `v24.04/` — Ubuntu 24.04 based image (ownCloud 11.0.0-prealpha) |
| 24 | + - `v24.04/Dockerfile.multiarch`, `v24.04/overlay/`, `v24.04/<version>/.trivyignore` — as above |
| 25 | +- `docs/` — design/spec notes |
| 26 | +- `images/` — README screenshots |
| 27 | +- `.github/workflows/main.yml` — **active** CI (build, smoke test, scan, publish) |
| 28 | +- `.github/workflows/lint-pr-title.yml` — Conventional-Commit PR-title enforcement |
| 29 | +- `.github/dependabot.yml` — weekly GitHub Actions dependency updates |
| 30 | +- `.drone.star` — **legacy** Drone CI config (inactive; superseded by GitHub Actions) |
| 31 | +- `.renovaterc.json` — Renovate preset for Docker digest updates |
| 32 | +- `.editorconfig` — formatting rules (2-space indent, LF, trailing newline) |
| 33 | +- `CHANGELOG.md` — flat, date-based changelog at repo root |
| 34 | +- `LICENSE` — MIT |
| 35 | + |
| 36 | +## Build & CI |
| 37 | + |
| 38 | +There is no local application build (no Node/pnpm/Make toolchain). The image is |
| 39 | +built by `.github/workflows/main.yml`, which calls reusable workflows from |
| 40 | +[`owncloud-docker/ubuntu`](https://github.com/owncloud-docker/ubuntu): |
| 41 | + |
| 42 | +- Matrix builds two releases: `10.16.3` (base `v22.04`) and `11.0.0-prealpha` |
| 43 | + (base `v24.04`), each via `<base>/Dockerfile.multiarch`. |
| 44 | +- The ownCloud version is injected with the `TARBALL_URL` build arg — there is no |
| 45 | + version pinned inside the Dockerfile. |
| 46 | +- Smoke test: `http://localhost:8080/status.php`. |
| 47 | +- Trivy vulnerability scan (per-version `.trivyignore`). |
| 48 | +- On `master`: push to Docker Hub and sync the README as the image description. |
| 49 | + |
| 50 | +To build locally: |
| 51 | + |
| 52 | +```bash |
| 53 | +docker build \ |
| 54 | + --build-arg TARBALL_URL=<owncloud-complete-tarball-url> \ |
| 55 | + -f v22.04/Dockerfile.multiarch v22.04 |
| 56 | +``` |
| 57 | + |
| 58 | +The image exposes port `8080`, declares volume `/mnt/data`, and inherits its |
| 59 | +`ENTRYPOINT` / `occ` dispatcher (`/usr/bin/owncloud`) from `owncloud/base`. |
| 60 | + |
| 61 | +## Development Conventions |
| 62 | + |
| 63 | +- Date-based `CHANGELOG.md` at repo root — **not** a `changelog/unreleased/` |
| 64 | + directory. Prepend a new `## YYYY-MM-DD` section for notable changes. |
| 65 | +- Conventional-Commit PR titles, enforced by `lint-pr-title.yml`. |
| 66 | +- `.editorconfig` governs formatting. |
| 67 | +- GitHub Actions are pinned to full commit SHAs. |
| 68 | + |
| 69 | +## OSPO Policy Constraints |
| 70 | + |
| 71 | +### GitHub Actions |
| 72 | +- **Only** use actions owned by `owncloud`, created by GitHub (`actions/*`), |
| 73 | + verified on the GitHub Marketplace, or verified by the ownCloud Maintainers. |
| 74 | +- Pin all actions to their full commit SHA (not tags): `uses: actions/checkout@<SHA> # vX.Y.Z`. |
| 75 | +- Never introduce actions from unverified third parties. |
| 76 | + |
| 77 | +### Dependency Management |
| 78 | +- Dependabot is configured for GitHub Actions updates; Renovate handles Docker |
| 79 | + base-image digest updates. |
| 80 | +- Review and merge dependency PRs as part of regular maintenance. |
| 81 | + |
| 82 | +### Git Workflow |
| 83 | +- **Rebase policy**: Always rebase; never create merge commits. |
| 84 | +- **Signed commits**: All commits **must** be PGP/GPG signed (`git commit -S`). |
| 85 | +- **DCO sign-off**: Every commit needs a `Signed-off-by` line (`git commit -s`). |
| 86 | +- **Conventional Commits & Squash Merge**: PR titles must follow |
| 87 | + [Conventional Commits](https://www.conventionalcommits.org/); the PR title |
| 88 | + becomes the squash-merge commit message and is enforced by CI. |
| 89 | + |
| 90 | +## Context for AI Agents |
| 91 | + |
| 92 | +- This is a small Docker-image packaging repo, not an application codebase. |
| 93 | +- The two `v*/` directories are near-identical; changes usually apply to both. |
| 94 | +- The `overlay/` directories are the image root filesystem — add files there to |
| 95 | + ship them in the image; the entrypoint and `occ` subcommand live in the base image. |
| 96 | +- The active build system is GitHub Actions (`main.yml`); ignore `.drone.star`. |
| 97 | +- The README is published verbatim as the Docker Hub image description — keep it |
| 98 | + accurate and self-contained. |
| 99 | +- License is **MIT** (permissive, already compatible with Apache-2.0); no |
| 100 | + copyleft dependency audit is required for relicensing. |
0 commit comments