Common issues and solutions for SRCCON site development and deployment.
Note: This guide is for event organizers building their SRCCON sites. Template maintainers should see the README.md - Troubleshooting section for template-specific issues.
Site won't build?
- Read the error message carefully - it usually tells you the filename and line number
- Check YAML syntax in the mentioned file
- Look for unclosed Liquid tags in templates
- Run
bundle exec rake clean && bundle exec rake buildfor a fresh build
Site builds but looks wrong?
- Hard refresh your browser (Ctrl+Shift+R or Cmd+Shift+R)
- Check browser console (F12) for 404 errors
- Verify file paths and case sensitivity
- Check
_config.ymlbaseurl and url settings
Made changes but not seeing them?
- Some changes need server restart:
_config.yml,_data/*.yml, new files - Check that Jekyll is done building (watch terminal output)
- Hard refresh browser
- Clear Jekyll cache:
bundle exec rake clean
Most common issues can be resolved using built-in Rake tasks. See tasks/README.md for complete documentation.
bundle exec rake validate_yaml- Validate YAML syntax and duplicate keysbundle exec rake build- Build the Jekyll sitebundle exec rake serve- Build and serve the site locally at https://localhost:4000
- 3a. Add
--traceto the rake command for detailed error output - 3b. Server auto-rebuilds on file changes (except
_config.ymland_data/*.yml)
bundle exec rake clean- Clear Jekyll cache and built filesbundle exec rake check- Validate configuration has been updated from template defaultsbundle exec rake test- Run core local validation checksbundle exec rake review:external_links- Run external/public link auditbundle exec rake review:compare_deployed_sites- Compare deployed staging vs production contentbundle exec rake format- Auto-fix code formattingbundle exec rake lint- Check code formattingbundle exec rake outdated- Check for outdated gems
| Error | Solution |
|---|---|
| "Could not find gem..." | bundle install or delete Gemfile.lock and retry |
| "Liquid syntax error" | Check for unclosed tags/mismatched delimiters; see error filename |
| "Could not locate included file" | Verify file exists in _includes/ with exact case |
| "YAML Exception: mapping values not allowed" | Use spaces (not tabs), quote strings with colons |
| "Port 4000 already in use" | lsof -ti:4000 | xargs kill -9 or use --port 4001 |
| "Permission denied" | Never use sudo with bundle/gem; use rbenv/rvm on macOS |
- SITE_README.md - Development guide & setup checklist
- tasks/README.md - Complete Rake task reference
- AWS_authentication.md - OIDC and AWS setup
- Jekyll Docs - Template language reference
- Ensure you're in the repository root with
_config.ymlpresent - Run with trace for details:
bundle exec rake build --trace - Install dependencies first:
bundle installandnpm install
Run bundle exec rake check to identify issues, then:
- Update placeholder values in
_config.yml - Coordinate subdomain with OpenNews team (e.g.,
2026.srccon.org) - Follow the Setup Checklist
- Check versions:
cat .ruby-versionvsruby --version - Install correct version:
- rbenv:
rbenv install $(cat .ruby-version) && rbenv local $(cat .ruby-version) - rvm:
rvm install $(cat .ruby-version) && rvm use $(cat .ruby-version)
- rbenv:
- Run
bundle installafter updating Ruby version - Run
bundle exec rake outdatedto check for outdated dependencies - Delete
Gemfile.lockand re-runbundle installif errors persist - Never use
sudo- install gems in user directory or use rbenv/rvm
- Check:
node --version(need 14+) - Install: macOS
brew install node, Linuxapt install nodejs npm - Run
npm installfor Prettier dependencies
- Windows: Use WSL for better compatibility
- Case sensitivity: Use exact case for file paths (matters on Linux/production)
- Permissions: Never use
sudowith Ruby/Bundler on macOS/Linux
- Run
bundle exec rake cleanto clear caches - Run
bundle installto update dependencies - Check port 4000:
lsof -i :4000(kill withlsof -ti:4000 | xargs kill -9) - Try with verbose output:
jekyll serve --verbose
- Run
bundle exec rake clean(clears.jekyll-cacheand_site) - Hard refresh browser: Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac)
- Use incognito/private window for testing
- Check for unclosed tags:
{% if %}needs{% endif %} - Check mismatched delimiters:
{{needs}},{%needs%} - Build locally to see specific error:
bundle exec rake build - Run
bundle exec rake formatto fix formatting issues
- Verify file exists in
_includes/or_layouts/with exact case - Include with extension:
{% include navigation.html %} - Check build output for specific filename:
bundle exec rake build
- Use
defaultfilter:{{ page.title | default: "No Title" }} - Debug with:
{{ page | jsonify }} - Check variable scope:
site.*(config) vspage.*(front matter)
- Validate at yamllint.com
- Use spaces (not tabs) for indentation
- Quote strings with colons:
title: "Session: Building Tools" - Build locally to see parsing errors:
bundle exec rake build
- Must start/end with
---(three dashes) at top of file - Must be valid YAML (test at yamllint.com)
- Strings with colons need quotes:
title: "Event: SRCCON"
Before promoting staging to production, you can compare the deployed sites:
- Run
bundle exec rake review:compare_deployed_sitesto crawl both staging and production - Reviews all pages for content differences
- Highlights significant changes (>10% size difference)
- Helps catch unintended content changes before they go live
- CloudFront cache takes 5-10 minutes to propagate
- Check GitHub Actions logs to confirm invalidation triggered
- Staging bypasses CloudFront (updates appear immediately)
- Verify
_config.ymlhas correct S3 bucket config - Check repository has access to
AWS_ROLE_ARNsecret - Review GitHub Actions logs for specific errors
- See AWS_authentication.md for OIDC setup
- Protected branches require PRs - create feature branch:
git checkout -b feature-name - Check branch protection rules: Settings → Branches
- Check status:
git status - Resolve conflicts in marked files, then:
git add <file> && git commit - Or abort:
git merge --abort
- Check workflow file is in
.github/workflows/and valid YAML - Verify branch names match workflow triggers
- Check Actions tab and ensure Actions enabled (Settings → Actions)
- Verify file exists with exact case:
Logo.png≠logo.png - Check paths are from site root:
/media/img/logo.png - Load page locally and check browser console (F12) for 404 errors
- Visually inspect pages for broken images (broken icon or alt text)
- Optional: Check external links with
bundle exec rake review:external_links(requires network access, slower)
- Check browser console (F12) for 404 errors
- Hard refresh: Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac)
- Verify files exist in
media/css/ormedia/js/ - Inspect page source (Ctrl+U) to verify correct paths in
<link>and<script>tags
- Build locally:
bundle exec rake build- must succeed without errors - Start dev server:
bundle exec rake serve- visit https://localhost:4000 - Visual inspection: Check that pages render correctly, images load, styles apply
- Browser console: Open DevTools (F12) - check for 404s or JavaScript errors
- Mobile view: Toggle device toolbar in DevTools to check responsive layout
- Navigation: Click through main navigation links to verify no broken pages
- Optional: Run
bundle exec rake review:external_linksto validate external URLs (not required, but helpful for catching broken partner/sponsor links)
- Run
bundle exec rake formatto auto-fix all formatting issues - Run
bundle exec rake lintto check formatting without changes - For format-on-save, ensure VSCode extensions installed and
npm installcompleted
- Files/folders starting with
.(hidden) are ignored - Files/folders starting with
_are special (except_config.yml,_data/,_includes/,_layouts/,_site/) - Add files to
exclude:list in_config.ymlif needed (e.g.,node_modules/,vendor/)
Restart required:
_config.ymlchanges_data/*.ymlchanges- New files/folders
- Gemfile changes (also run
bundle install)
No restart needed:
- Content file changes (
.md,.html) - Template changes (
_includes/,_layouts/) - Asset changes (CSS, JS, images)
- Paths in content should be absolute from site root:
/media/img/logo.pngnotmedia/img/logo.png - Check
baseurlin_config.yml- should be empty for root domain - Use
{{ site.baseurl }}in templates for path prefix if needed - Links to pages:
/conduct/notconduct.html
- Run with
--traceflag:bundle exec rake build --trace - Check Jekyll verbose output:
bundle exec jekyll build --verbose - Look for filename and line number in error output
- Errors often appear several lines up from where the command stopped
- Check for infinite loops in Liquid templates
- Look for circular includes (
{% include %}calling itself) - Verify no missing
{% endif %}or{% endfor %}tags - Restart with verbose:
bundle exec jekyll serve --verbose