Complete guide for compiling, testing, and deploying the J3ZZ portfolio website.
Required:
Check installed versions:
ruby --version
bundler --version
git --version
node --version
npm --version
git clone https://github.com/yourusername/website.git
cd website
bundle install
This installs:
Troubleshooting:
# If you get permission errors, configure Bundler to install locally:
bundle config set --local path 'vendor/bundle'
bundle install
npm install
This installs:
Output:
added 342 packages in 7s
# Check Jekyll
bundle exec jekyll --version
# Check html-proofer (via Rake)
bundle exec rake -T
# Check Lighthouse CI
npm run lighthouse --version
bundle exec jekyll serve
What this does:
Output:
Server address: http://127.0.0.1:4000/
Server running... press ctrl-c to stop.
Open in browser: http://localhost:4000
Make changes to:
_portfolio/*.md)*.markdown, *.html)assets/css/*.scss, _sass/*.scss)_layouts/*.html)_includes/*.html)The server auto-rebuilds when you save files. Refresh your browser to see changes.
Exception: Changes to _config.yml require restarting the server:
# Stop server: Ctrl+C
# Restart:
bundle exec jekyll serve
bundle exec jekyll build
Builds the site with production settings:
_site/ directoryUse this before deploying or testing.
Fast iteration:
# Live reload with drafts
bundle exec jekyll serve --drafts --livereload
Build only (no server):
bundle exec jekyll build
Clean and rebuild:
bundle exec rake clean
bundle exec jekyll build
Check build speed:
bundle exec jekyll build --profile
The site has two levels of testing:
bundle exec rake test
What it does:
Takes: ~5-10 seconds
Example output:
Building Jekyll site...
Testing with html-proofer...
Running 3 checks (Images, Links, Scripts) in ["./_site"] on *.html files...
Checking 60 internal links
Ran on 44 files!
✓ All tests passed!
bundle exec rake test_external
What it does:
Takes: ~30-60 seconds (first run)
Use when:
npm run lighthouse
What it does:
Takes: ~60-120 seconds
Requires: Chrome or Chromium browser installed
Output: Detailed HTML reports in .lighthouseci/ directory
Pages tested:
Scores:
Performance: 89/100 ✓
Accessibility: 87/100 ✓
SEO: 92/100 ✓
Best Practices: 95/100 ✓
npm run test:all
Runs both html-proofer and Lighthouse CI sequentially.
Takes: ~2-3 minutes
Use before:
# List all available tasks
bundle exec rake -T
# Build only
bundle exec rake build
# Clean build directory
bundle exec rake clean
# Default task (runs test)
bundle exec rake
The site deploys automatically via GitHub Actions when you push to the main branch.
# 1. Make changes locally
# 2. Test locally
bundle exec rake test
# 3. Commit changes
git add .
git commit -m "Description of changes"
# 4. Push to GitHub
git push origin main
What happens next:
.github/workflows/jekyll.yml)Status indicators:
After a GitHub Actions run:
lighthouse-deployment-resultsIf you need to deploy manually (not recommended):
# 1. Build the site
bundle exec jekyll build
# 2. The _site/ directory contains the static site
# 3. Upload _site/ contents to your web server
Note: GitHub Pages deployment is automatic and preferred.
Before deploying important changes:
bundle exec rake testnpm run lighthousegit diff# Solution: Install dependencies
bundle install
# Solution: Configure Bundler to install locally
bundle config set --local path 'vendor/bundle'
bundle install
# Solution: Update Bundler
gem install bundler
bundle update --bundler
“internally linking to /works/foo/, which does not exist”
Cause: Broken internal link
Solution:
_portfolio/“image has no src or srcset attribute”
Cause: Image tag missing src
Solution:
<!-- Bad -->
<img alt="description">
<!-- Good -->
<img src="/assets/images/photo.jpg" alt="description">
“External link failed”
Cause: External URL is down or changed
Solution:
Rakefile if temporary“Performance score below threshold”
Common causes:
Solutions:
“Accessibility errors”
Common causes:
Solutions:
“SEO issues”
Common causes:
Solutions:
# Solution 1: Kill the process using port 4000
lsof -ti:4000 | xargs kill -9
# Solution 2: Use a different port
bundle exec jekyll serve --port 4001
# Lighthouse requires Chrome/Chromium
# In WSL, this may not work locally
# Tests will run automatically in GitHub Actions (which has Chrome)
# To install Chrome on Linux:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
Possible causes:
Solutions:
Speed up builds:
# Exclude drafts and future posts
bundle exec jekyll build --no-future
# Use incremental builds (experimental)
bundle exec jekyll build --incremental
Speed up tests:
# Skip external link checking
bundle exec rake test
# Only test specific files (modify Rakefile)
# Development
bundle exec jekyll serve # Start dev server
bundle exec jekyll build # Build production site
# Testing
bundle exec rake test # Quick test (internal only)
bundle exec rake test_external # Full test (includes external)
npm run lighthouse # Performance/accessibility test
npm run test:all # All tests
# Utilities
bundle exec rake clean # Clean build directory
bundle exec rake -T # List all Rake tasks
git status # Check git status
git diff # See changes
# Deployment
git add . # Stage changes
git commit -m "message" # Commit changes
git push origin main # Deploy to GitHub Pages
website/
├── _config.yml # Site configuration
├── _portfolio/ # Portfolio works
├── _events/ # Events
├── _layouts/ # Page layouts
├── _includes/ # Reusable components
├── _sass/ # SASS partials
├── assets/ # Images, CSS, JS
├── docs/ # Documentation
├── .github/workflows/ # CI/CD workflows
├── Gemfile # Ruby dependencies
├── package.json # Node.js dependencies
├── Rakefile # Test tasks
└── lighthouserc.json # Lighthouse config
For questions or issues:
docs/ folder