Jacob Frankel & Sanjeev Kamath | 04/01/2026
This repo is designed to introduce new engineers to modern software delivery practices through a hands-on CI/CD workshop using GitHub Actions.
Workshop participants will run linting and tests in CI, inspect failing pipelines, and then deploy a simple web app to GitHub Pages through CD.
This repo includes a small JavaScript calculator app in public/, unit tests in tests/, and a GitHub Actions workflow in .github/workflows/cicd.yml.
The workflow is split into two jobs: a CI job that runs lint and tests, and a CD job that deploys the public/ folder to GitHub Pages after CI passes on pushes to main.
- Node.js version 22
- npm (comes with Node.js)
- A GitHub repository with Actions enabled
- A terminal or command line shell
- Clone this repository and install dependencies:
npm install
- Run the local quality checks:
npm run lintnpm test
- Configure GitHub Pages deployment source:
- Go to your repo on GitHub
- Open
Settings->Pages - Under Build and deployment, set Source to GitHub Actions
- Configure branch protection rules for
main:- Open
Settings->Rules->Rulesets->New ruleset - Name it something like
Protect main - Set Target branches to
main - Enable Require a pull request before merging (prevents direct pushes to
main) - Enable Require status checks to pass before merging
- In required checks, select the CI workflow checks for this repo
- Open
- Open
public/index.htmlin your browser to view the app locally - Review
.github/workflows/cicd.ymland walk through the CI and CD jobs - Push to a branch other than
main - Open a pull request to
main, wait for checks to pass, then merge to trigger CI and GitHub Pages deployment
Now you have a complete CI/CD pipeline demonstration. This is only a starting point, so we encourage you to extend the workflow with your own checks and deployment targets.