Repo Group Owners โ
Operational manual for owners of a tutorial repository in the sap-tutorials GitHub organization.
Persona summary โ
- Role: Editorial and review authority for one or more tutorial repos under
sap-tutorials. - Tools and access:
- GitHub admin on the repos you own
- Optional:
Tutorial.AuthorBTP role-collection scope for the QA author-preview channel โ request from a Center Admin - Local clone of
tutorials-imsfor reviewing renders before merge
Canonical owner registry โ
sap-tutorials/tutorial-checker/data/repository.owner.json is the canonical list of repository group owners. It is a CircleCI-era artifact that survives in the new system because it is the only place the owner-name โ SAP-email mapping is held; the Center Admin cross-references it with the Accounts records in the admin UI.
If you change role, update this file (Task: Designate or change a repository group owner below).
Task: Wire your repo for auto-publish โ
- Interval: Once per repo
- Status: Active
- Purpose and Objective: When a tutorial PR merges to
main, trigger a rebuild of the published site so the change goes live within minutes. - Prerequisites: GitHub admin on the source repo; a
DISPATCH_TOKENrepo secret obtained from a Center Admin.
- Copy
docs/tutorial-repo-dispatch.ymlfromtutorials-imsinto your repo at.github/workflows/tutorial-repo-dispatch.yml. - In the source repo's Settings โ Secrets and variables โ Actions, add a secret named
DISPATCH_TOKENwith the value supplied by the Center Admin. - Commit the workflow file on
main. - Verify: push a small change (e.g., a typo fix) and watch the
tutorials-imsrepo's Actions tab for a triggered run within ~10 seconds. - If the run does not appear, check the source repo's Actions log for the dispatch step. The most common failure is a stale or missing
DISPATCH_TOKEN.
Related: Center Admin: Force-rebuild content, build.md
Task: Review and merge pull requests โ
- Interval: Daily
- Status: Active
- Purpose and Objective: Catch frontmatter, structure, and metadata issues before they reach the build pipeline.
- Prerequisites: GitHub admin on the source repo; optional local
tutorials-imsclone.
Review checklist (verify each PR before merge):
- [ ] Frontmatter is valid YAML (no tabs, quoted tags with colons).
- [ ]
parser: v2is set. - [ ]
primary_tag,tags,time(integer minutes), and an H1 title are present. - [ ] A
<!-- description -->line follows the H1. - [ ] Every step is an
### H3. No H1/H2 inside step bodies. - [ ] All images referenced from Markdown exist in the slug-named folder alongside the .md file.
- [ ] Image paths are relative, not absolute
https://github.com/...URLs. - [ ] Code fences carry a language tag.
- [ ] If
OPTIONblocks are used, everyBEGINhas a matchingEND. - [ ] The slug (filename without
.md) does not collide with any existing tutorial across the org. If unsure, search thesap-tutorialsorg for the slug.
For larger or higher-risk changes, render locally:
cd tutorials-ims
npm run fetch-tutorials
npm run devOpen http://localhost:1313/tutorials/<slug> and walk through the rendered tutorial.
Escalate to a Center Admin if:
- Slug collision with another repo's tutorial.
- A new tag is needed that is not yet in the platform taxonomy.
- The author asks for a preview deploy beyond local Hugo or the QA channel.
Related: writing-tutorials.md ยง 6 Pre-submit checklist, Center Admin: Import a new tag
Task: Triage repo issues โ
- Interval: Bi-weekly
- Status: Active
- Purpose and Objective: Keep the repo's open-issue queue moving; route platform issues to
tutorials-ims. - Prerequisites: GitHub triage permission on the source repo.
- Sweep all open issues with no recent activity. Apply labels:
bug,enhancement,question,tutorial-needs-fix,platform. - Tutorial content issues (a step is wrong, a screenshot is outdated, etc.) โ assign to the author or a relevant reviewer.
- Platform issues (rendering bug, build failure, infrastructure question) โ re-file as a new issue in
sap-tutorials/tutorials-imsand close the source-repo issue with a link. - Stale questions older than 30 days with no author response โ close with a polite "please reopen if still relevant" message.
Related: tutorials-ims Issues
Task: Review tutorial planning outlines โ
- Interval: As requested by authors
- Status: Active
- Purpose and Objective: Catch structural issues before authoring effort is spent.
- Prerequisites: Familiarity with the tutorial navigator's group and mission structure.
When an author proposes a new tutorial or set of tutorials:
- Logical chunking. Each tutorial should be 10โ30 minutes. If the proposed scope is bigger, suggest splitting into a Group; if smaller, suggest folding into an existing tutorial as a step.
- Time estimates. Reality-check the
timevalue against the proposed step count. ~3โ5 minutes per substantive step is typical. - Group vs Mission. A Group is a topical collection (e.g., "ABAP cloud development basics"). A Mission is a sequenced learning path with completion certificates (e.g., "Build your first SAP BTP app"). If the author wants completion tracking with a fixed order, recommend Mission.
- Tag check. Verify the proposed
primary_tagandtagsare in the existing taxonomy. If new tags are needed, route the author to a Center Admin. - Duplication check. Search the navigator for similar existing tutorials. If significant overlap, suggest extending the existing tutorial instead.
- Provide written feedback. Approve or request revisions before authoring begins.
Related: Center Admin: Add / revise / delete a Mission, Center Admin: Add / revise / delete a Group
Task: Retire a tutorial โ
- Interval: As needed
- Status: Active
- Purpose and Objective: Remove a tutorial that is no longer correct or no longer relevant.
- Prerequisites: GitHub write access to the source repo.
- Open a PR in the source repo that deletes:
- The tutorial's
.mdfile undertutorials/. - The slug-named image folder alongside it.
- Any
rules.vrfile with the same slug in the matching-Contributionrepo (separate PR).
- The tutorial's
- Mention "retires
<slug>" in the PR description and link any successor tutorial. - Merge after review.
- The publish pipeline marks the slug
RETIREDin the next manifest. Hugo no longer builds the page. - If the slug had production traffic (check with the Analytics Admin if in doubt), notify a Center Admin so a redirect can be set up โ otherwise readers hit a 404.
Related: Center Admin: Retire a tutorial (admin side), historic/decommissioned-tasks.md
Task: Migrate a tutorial to another repository โ
- Interval: As needed
- Status: Active
- Purpose and Objective: Move a tutorial when topical scope shifts (e.g., moves from "abap-core" to "abap-environment").
- Prerequisites: GitHub write access to both repos.
- Coordinate with the destination repo's owner. Agree on the slug (it should not change โ slug uniqueness is org-wide and link-stable).
- In the destination repo, open a PR that adds the
.mdfile and image folder. - In the source repo, open a separate PR that deletes them.
- Merge the destination PR first so there is no window where the slug renders nothing.
- The publish pipeline picks up both changes; manifest version increments once.
Related: Retire a tutorial
Task: Designate or change a repository group owner โ
- Interval: When work assignments change
- Status: Active
- Purpose and Objective: Keep the canonical owner registry current.
- Prerequisites: GitHub write access to
sap-tutorials/tutorial-checker.
- Open a PR against
sap-tutorials/tutorial-checkerthat updatesdata/repository.owner.json. The top-level keys are repo group names (e.g.,"Tutorials"); the value is{ "name": "<github-handle>", "email": "<sap-email>" }. - After merge, notify a Center Admin so they can update the
Accountsrecords in the admin UI. - The new owner needs GitHub admin on the affected repos โ the existing owner or a Center Admin grants this.
Related: Center Admin: Maintain the repo group owner list
Task: Office hours and author support intake โ
- Interval: As needed
- Status: Active
- Purpose and Objective: First-line support for authors of repos you own.
- Prerequisites: None.
Handle locally:
- "How do I structure a step?" / "Why doesn't my image render?" โ point at writing-tutorials.md.
- "My PR was rejected by the linter" โ review the validation error in the PR check.
- "Can I add a quiz?" โ direct to the
*-Contributionrepo forrules.vr.
Forward to a Center Admin:
- Tag taxonomy questions or new-tag requests.
- BTP scope or access questions.
- Anything involving the published catalog (groups, missions, redirects).