GitHub Actions
Introduction
Basics of CI CD
Continuous Integration and Continuous Deployment (CI/CD) streamline modern software delivery by automating builds, tests, and deployments. With a robust CI/CD pipeline, teams catch issues early, maintain consistent environments, and accelerate time to market.
Git Workflow for Feature Development
All source code is versioned in a Git repository, often hosted on platforms like GitHub or GitLab. Teams typically follow this branching strategy:
- main (or master): Production-ready code
- feature/*: Isolated branches for new work
When implementing a new feature:
- Create a feature branch off
main
. - Commit code and open a Pull Request (PR).
- Run automated checks via CI.
- Peer-review and approve the PR.
- Merge back into
main
and trigger deployment.
Note
Keeping main
always deployable reduces integration headaches and rollbacks.
Without CI/CD, manual testing and deployments introduce risks:
- Delayed feedback and bug discovery
- Configuration drift between environments
- Heavy reliance on manual QA
Continuous Integration
Continuous Integration (CI) automates the moment code is pushed:
Developer opens a PR against
main
.A CI pipeline runs:
Stage Purpose Example Tool Unit Tests Verify individual components Jest, JUnit Dependency Scanning Identify outdated or vulnerable libs Dependabot, Snyk Build & Artifact Creation Compile code and produce deployables Docker, Maven Code Quality & Security Static analysis and vulnerability check SonarQube, CodeQL Any failure halts the merge and notifies the author.
On success, the PR is merged and triggers a final CI run on the updated
main
branch.
Imagine developers Alice and Bob each working on separate feature branches. Their individual CI runs validate changes in isolation. After merging both PRs, a collective CI run on main
ensures compatibility across all contributions.
Continuous Delivery vs Continuous Deployment
After CI, the next stage is CD—either Continuous Delivery or Continuous Deployment:
Continuous Delivery
- Deployments to staging happen automatically.
- Production releases require manual approval.
Continuous Deployment
- Every successful build on
main
is pushed straight to production without human intervention.
- Every successful build on
A typical CD pipeline:
- Deploy to staging → run integration/regression tests
- (Optional) Manual approval for production
- Deploy to production
Warning
Automated production deployments can speed delivery but require robust rollback and monitoring strategies.
Further Reading
Watch Video
Watch video content