Repository Management and Releases¶
Overview¶
Choose a sensible repo boundary, tag a release with SemVer, and document what belongs in a GitHub Release.
Teams fail when everything is one mega-repo without ownership — or when fifty repos have no shared standards. Releases make versions discoverable for ops and consumers.
This is a core tutorial in Module 14 · Repository Management of the REBASH Academy Git for Cloud & DevOps Engineers series — written for Cloud, DevOps, Platform, and SRE engineers.
Prerequisites¶
Learning Objectives¶
By the end of this tutorial, you will be able to:
- Compare monorepo vs multirepo trade-offs
- Create annotated tags
- Follow SemVer for libraries/CLIs
- Draft release notes from
git log
Architecture¶
This topic’s control points and relationships are shown below.
Theory¶
What¶
Repository management covers how teams structure code (multirepo, monorepo, meta-repo) and how they cut releases — usually annotated Git tags plus hosting Release notes and artefacts. Ownership, access, and release cadence are product decisions expressed in Git layout.
Why¶
Wrong structure slows delivery: too many repos without automation, or a monorepo without tooling. Releases that are only “whatever is on main today” make rollback and customer communication hard. Annotated tags give immutable names for artefacts pipelines promote.
How it works¶
Multirepo suits clear service ownership and independent versioning. Monorepo helps atomic cross-cutting changes when you invest in affected-target CI. Meta-repos often appear in GitOps overlays that point at many sources. Cut a release with git tag -a v1.2.0 -m "…" and git push --tags (or push the single tag). A GitHub Release attaches changelog notes and binaries/checksums to that tag. Semantic Versioning (SemVer) is the common language for libraries and many platform artefacts.
| Pattern | When |
|---|---|
| Multirepo | Clear ownership, independent cadence |
| Monorepo | Shared libs, atomic cross-cuts (needs tooling) |
| Meta-repo | GitOps overlays across many sources |
Key concepts¶
- Annotated vs lightweight tags — prefer annotated for releases
- Changelog discipline — generate from PR labels or conventional commits
- Artefact immutability — rebuilds should reproduce the same tag contents
- Access reviews — remove stale collaborators
Publish a short release checklist: green CI on the tagged commit, changelog entry, artefact attachment, and announcement channel. Archive unused repositories rather than leaving stale deploy keys active. For libraries consumed by many services, SemVer and a clear deprecation policy reduce coordinated upgrade pain.
Common pitfalls¶
- Moving tags after artefacts shipped
- Releasing from a dirty or untagged commit in CI
- Monorepo without CODEOWNERS or path filters (CI forever)
- Orphan repos with no README, owners, or archive policy
Hands-on Lab¶
Create a workspace for this tutorial.
Focus: practise release branches, tags, and bundle archive
Step 1 – Release branch and tag¶
git init
git config user.name "REBASH Learner"
git config user.email "learner@rebash.local"
echo "app" > README.md
git add README.md && git commit -m "chore: init"
git switch -c release/1.2
echo "1.2.0" > VERSION
git add VERSION && git commit -m "release: 1.2.0"
git tag -a v1.2.0 -m "1.2.0"
git switch -
git merge release/1.2 -m "merge: release 1.2"
git tag -l 'v*'
git branch -a
Step 2 – Bundle for archive¶
Final step – Cleanup note¶
Validation¶
- Lab commands run under
~/rebash-git/module-14/ - You can explain each Theory section in your own words
- You used modern tooling where it applies to this topic
- You can describe one production failure mode for this topic
Code Walkthrough¶
Production practice for Repository Management and Releases always combines:
- Inspect before you change (status, plan, logs, dry-run)
- Prefer reversible, documented changes (Git, IaC, drop-ins, version pins)
- Capture evidence (command output, pipeline logs) for handovers
- Prefer current tools and APIs over legacy shortcuts
- Least privilege — escalate credentials only when required
Keep runbooks short enough to follow under pressure. Automate checks; keep humans for judgement.
Security Considerations¶
- Treat credentials and tokens for git as privileged — never commit them
- Prefer short-lived auth (OIDC, roles, SSO) over long-lived keys
- Validate blast radius before apply/deploy/delete operations
- Restrict who can approve production changes
- Collect audit logs; limit who can read sensitive traces
Common Mistakes¶
Moving tags after artefacts shipped
Validate assumptions against the Theory section and official docs before changing production.
Releasing from a dirty or untagged commit in CI
Lab shortcuts (open security groups, admin roles, skip approvals) must not ship unchanged.
Changing production without a rollback path
Always know how to revert (previous artefact, prior release, state rollback, DNS failback).
Best Practices¶
- Encode Repository Management and Releases changes as code and review them in pull requests
- Pin versions (images, modules, actions, provider plugins)
- Separate environments with clear promotion gates
- Alert on symptoms with runbooks attached
- Destroy lab resources; tag everything with owner and expiry where possible
Troubleshooting¶
| Symptom | Likely cause | Fix |
|---|---|---|
| Auth / permission denied | Wrong identity, policy, or scope | Check caller identity, roles, and least-privilege policies |
| Timeout / no route | Network, DNS, security group, or endpoint | Trace path, DNS, and allow-lists before retrying |
| Drift / unexpected plan | Manual change or wrong state/workspace | Reconcile desired vs actual; avoid click-ops on managed resources |
| Pipeline/job red | Flaky step, cache, or missing secret | Read failing step logs; bisect recent workflow/config changes |
| Cost spike | Idle load balancer, NAT, oversized compute | Inventory billable resources; stop/delete labs promptly |
Summary¶
Repository Management and Releases is essential for Cloud and DevOps engineers working with git. Practise the lab until the inspection and change path is muscle memory, then continue the track.
Interview Questions¶
- Release branch versus tagging on main?
- How do you yank a bad release safely?
- What belongs in a release checklist?
- How do bundles/archives help disaster recovery?
- Who should have permission to create release tags?
Sample answer — question 2
Verify tag points at the intended SHA (git show), artifacts match that SHA, and release notes are complete.
Sample answer — question 4
Protect tags, restrict releasers, and store checksums.