Migrate docs monorepo to owncloud org & retire legacy multi-repo setup (Phases 2–5)
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 32/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- github, github-actions, shell
- Domain
- devops, documentation, release
Research direction
Start with the Phase 2–5 checklist and read site.yml, ci.yml, sync-upstream.yml, and sync/manifest.yml. Confirm the open items with maintainers before changing repository, Pages, or sync settings. Done means the org-hosted monorepo is published and verified, the sync transition is complete, and legacy repositories are deprecated and archived.
Written by the indexing model from the issue text.
Description
Context
The ownCloud documentation is migrating from a 9-repo setup (1 orchestrator owncloud/docs, 7 owncloud/docs-* content repos, 1 owncloud/docs-ui) to this single Antora monorepo, where each product version is a folder (content/<product>/<version>/) instead of a git branch.
This issue tracks the migration into the owncloud org and retirement of the legacy multi-repo setup (Phases 2–5). Phase 0–1 (sync-manifest drift reconciliation) are handled separately in a code PR.
Decisions locked
- Target repo: fresh
owncloud/docs— rename/retire the old orchestrator first, then create a cleanowncloud/docsfor the monorepo. - Drift handling: reconcile manifest mappings, keep the sync bridge running during a transition (do not freeze yet).
- Hosting: GitHub Pages under the
owncloudorg. - Retirement: archive legacy repos read-only (reversible, history preserved), sequenced after the transition.
Phase 2 — Create fresh owncloud/docs and move the monorepo
- Rename old orchestrator
owncloud/docs→owncloud/docs-legacy(frees the canonical name, keeps history). - Create fresh empty
owncloud/docsin the org. - Push this monorepo's full history to
main. - Configure repo settings: branch protection on
main(no direct pushes), Dependabot config incl.github-actionsecosystem (add if missing),upstream-syncPR label. - Update
site.ymlsite.urlfromhttps://deepdiver1975.github.io/owncloud-docs-monorepoto the org Pages URL — drives canonical links (Pagefind dedup) + asset resolution, must match publish location. - Review
ci.yml+sync-upstream.ymlunder the org; pin third-party actions to full commit SHAs (mikefarah/yq,peter-evans/create-pull-requestcurrently unpinned); confirm org Actions permissions for scheduled sync + Pages deploy.
Phase 3 — Enable GitHub Pages under the org
- Enable Pages (GitHub Actions source).
- Custom domain: add
CNAME+ DNS + TLS; orgithub.io: confirmsite.urlmatches. - Trigger build; verify landing page, per-product version dropdowns, Pagefind search, static redirect facility, legacy
go.phpredirects. - Verify
/server/latest/publish behavior is intended (current stable publishes only underlatest).
Phase 4 — Transition period (sync bridge stays live)
- Keep
sync-upstream.ymlmirroring upstreamdocs-*→ folders; authoring continues upstream. - Monitor first automated sync PRs to confirm reconciled mappings produce correct diffs (esp. repointed ocis/desktop/ios/android folders).
- Define exit criterion with maintainers: when authoring moves into the monorepo (PRs against
content/directly) and the sync bridge is retired.
Phase 5 — Freeze sync & retire legacy repos (read-only)
- Disable/remove
sync-upstream.yml; marksync/manifest.yml+sync/historical (dedicated PR). - For each legacy repo (7 content + orchestrator +
docs-ui): add deprecation notice →owncloud/docs, then archive read-only.owncloud/docs,owncloud/docs-main,owncloud/docs-server,owncloud/docs-ocis,owncloud/docs-webui,owncloud/docs-client-desktop,owncloud/docs-client-ios-app,owncloud/docs-client-android,owncloud/docs-ui
- Update external inbound links/references pointing at legacy repos.
Open items to confirm with maintainers
- Exact new dev-version folder numbers for ocis
master, desktopmaster, iosmaster, androidmaster. - Whether ocis
8.1(prerelease branch) ormaster(=next) is the authoritative dev line. - Final production URL/domain for
site.url(orggithub.iopath vs. customdoc.owncloud.com). - Old-orchestrator rename target name.
- Phase 4→5 exit criterion (when authoring moves in-repo).
Prerequisite (done separately)
Phase 0–1: reconcile sync/manifest.yml version drift — 4 folders (ocis/8.0, desktop/7.1, ios/12.7, android/4.8) are currently fed from upstream master (=next) instead of their now-cut release branches; ocis 8.1 and the new dev lines are unmapped.
🤖 Generated with Claude Code
- Dominant language
- Shell
- Stars
- 0
- Forks
- 2
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 37
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from owncloud/docs.owncloud.com
-
ocis
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
ocis
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
ocis
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
ocis
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
-
ocis
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
All issues in owncloud/docs.owncloud.com
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
danielmiessler/LifeOS#2218 ·
-
docs(agents): strengthen the no-backslash-escaped-backticks rule with an issue-creation example Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
technical-debt
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
ll7/robot_sf_ll7#9560 ·
-
package-update
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
oSoWoSo/vOid_Community_repOsitory#148 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100