for andrewjamescarr.github.io
This repository contains the full source code and build pipeline for https://andrewjamescarr.github.io, a personal website built using Jekyll, styled using a GitHub Pages remote theme, and deployed using GitHub Actions on every GitHub Release.
- #overview
- #features
- #technology-stack
- #repository-structure
- #local-development
- #deployment-workflow
- #how-releases-trigger-deployments
- #version-page
- #requirements
- #troubleshooting
This repository hosts the source code for my personal website:
π https://andrewjamescarr.github.io
The site is built using Jekyll, a static site generator widely used with GitHub Pages.
All content is written in Markdown and HTML, and Jekyll transforms these into a static website.
The site is deployed using GitHub Actions, with deployments triggered only when a GitHub Release is published.
Uses layouts, includes, Markdown rendering, and Liquid templates.
The site uses a GitHub-hosted theme:
remote_theme: pages-themes/modernist@v0.2.0
A fully automated CI/CD pipeline builds the site and deploys it to GitHub Pages.
Only creating a Release on GitHub triggers a live deployment.
The previous version.md page has been removed.
| Component | Technology |
|---|---|
| Static site generator | Jekyll 4.x |
| Theme | pages-themes/modernist (remote theme) |
| CI/CD | GitHub Actions |
| Hosting | GitHub Pages |
| Language | Markdown, HTML, Liquid |
| Dependency management | Bundler (Gemfile) |
.
βββ _config.yml # Main Jekyll configuration
βββ _layouts/ # HTML layout templates
βββ _includes/ # Reusable HTML fragments
βββ assets/ # CSS / images
βββ index.md # Homepage (Markdown)
βββ version.md # Version page (removed)
βββ Gemfile # Jekyll dependencies
βββ CNAME # (Optional) custom domain
βββ .github/
βββ workflows/
βββ pages.yml # GitHub Actions deployment pipeline
Choose either Docker Compose (recommended), Docker CLI, or native Ruby.
Start the dev server with LiveReload:
docker compose upThen open π http://localhost:4000
Build a production site (one-off):
docker compose run --rm jekyll jekyll buildStop the server with Ctrl+C.
docker run --rm -v "$PWD":/srv/jekyll -w /srv/jekyll -e BUNDLE_PATH=vendor/bundle -p 4000:4000 jekyll/jekyll:4 bundle exec jekyll serve --livereload --host 0.0.0.0Then open π http://localhost:4000 (LiveReload on port 35729).
-
Install Ruby 3.1+ (rbenv or system Ruby)
-
Install Bundler
gem install bundler- Install dependencies
bundle install- Run the Jekyll development server
bundle exec jekyll serve- Open π http://localhost:4000
Any changes made to Markdown, layouts, or assets will autoβreload.
The site uses an Actions workflow:
.github/workflows/pages.yml
This workflow:
-
Checks out the repository
-
Installs Ruby + Bundler
-
Installs Jekyll + GitHub Pages plugins
-
Builds the site using:
bundle exec jekyll build -d _site -
Uploads the built site as an artifact
-
Deploys the artifact to GitHub Pages environments
-
Updates the live website
This ensures a clean, reproducible build every time.
The workflow is triggered by:
on:
release:
types: [published]This means:
β Pushing commits does not deploy the website
β Publishing a release does deploy the website
- Allows controlled, versioned deployments
- Supports semantic versioning (e.g.,
4.0.6) - Enables rollback to previous releases
- Keeps the live site stable
The version.md page and its permalink have been removed. If you want an automated release-version display added back later, we can reintroduce it.
Run lightweight HTML and internal link checks locally (Docker Compose):
./scripts/validate.shThis will:
- Build the site
- Run html-proofer against the generated
_siteoutput
Notes:
- External links are skipped to avoid flaky network failures
- Internal hashes and HTML structure are validated
- First run installs gems into vendor/bundle (can take a minute)
- Ruby 3.1+
- Bundler
- GitHub Pages gems (installed via Gemfile)
- Jekyll 4.x
- Internet access (to load the remote theme)
- Permission to create Releases in this repository
- GitHub Actions must be enabled
- GitHub Pages environment configured with:
- Source: GitHub Actions
- No restrictive branch protections blocking deployments
***
# π Contributions
This is a personal project, but suggestions or improvements are always welcome through Issues or Pull Requests.
***