GitHub workflows and delivery
GitHub is where most of our work lives — code, review, CI and releases in one place. The review workflow matters more than the hosting: it is where quality is actually enforced.
GitHub in practice
GitHub is where most of our work lives, and the part that matters is not the hosting — it is the review workflow. Pull requests make review the default path to the main branch rather than an optional courtesy, and branch protection turns team agreements about quality into rules the platform enforces.
Actions removed the separate CI vendor for most projects. Build, test and deploy workflows live beside the code, triggered by the events that should trigger them, and versioned along with the code they build. For a client project, that combination means the whole delivery process is inspectable in one place — which is exactly what you want when a project changes hands.
What we build with GitHub
Protected branches, required reviews and a merge policy the team can follow without arguing about it weekly.
Build, test and deploy workflows alongside the code, triggered by the events that should trigger them.
Tagged releases, changelogs and the documentation that makes a repository transferable to another team.
Is GitHub right for you?
Ask usA good fit when
- Almost any project — it is the default for a reason
- Open-source work and public repositories
- Teams that want CI, review and releases in one place
- Client projects where the client should own the repository
Probably not when
- Organisations requiring code to stay on their own infrastructure
- Environments where GitHub is blocked or unavailable
- Teams deeply invested in the Atlassian toolchain
What we run alongside GitHub
The rest of the setup, and why each piece is there. We keep this list short on purpose — every dependency is something someone has to maintain.
- Branch protection
- Required reviews and status checks, so quality rules are enforced rather than remembered.
- GitHub Actions
- CI and deployment beside the code, with runners for every platform.
- Dependabot
- Dependency and security updates raised as pull requests automatically.
- CODEOWNERS
- Review routed to the people who know the area.
- Environments and secrets
- Production credentials scoped to protected environments with approval gates.
Why GitHub
Let’s talkCode review is the core workflow
Pull requests make review the default path to main rather than an optional courtesy.
CI is built in
Actions removes the separate CI vendor for most projects, with runners available for every platform.
Everyone already knows it
Onboarding a developer or handing a project to a client team needs no tooling explanation.
What we get called in to fix
Get a second opinionNo branch protection
Direct pushes to main, so review is optional and CI can be bypassed.
Secrets committed to history
Credentials in old commits, still valid and still retrievable.
Actions with excessive permissions
Workflows granted write access they do not need, which is a supply-chain risk.
Enormous repositories
Binaries and media committed over years, making every clone slow.
GitHub or the alternative
The comparisons we are actually asked to make, answered the way we would answer them on a call.
GitLab for self-hosting and one integrated platform. GitHub for ecosystem, familiarity and Actions.
Actions for most projects. Dedicated CI when pipelines get heavy or need capabilities Actions lacks.
Monorepo when code is shared and released together. Separate repositories when teams and lifecycles are genuinely independent.
Got an idea? Let’s make it real.
Tell us the short version
This could be the first step towards a new and successful collaboration. A one-line idea and a finished spec are both fine — tell us the problem, the deadline you’re working to and what’s in your way.
Keep looking
Frequently asked questions
Yours whenever possible. The client owning the repository from day one is the cleanest arrangement for everybody.
Yes, as the default CI for GitHub-hosted projects unless there is a reason to use something else.
Encrypted repository or environment secrets, never in the codebase, with production credentials scoped to protected environments.
Yours, whenever possible. You own the code and the history from day one, which is the cleanest arrangement for both sides.
Encrypted repository or environment secrets, never in the codebase, with production scoped to protected environments requiring approval.