Deployment Guide - status.health® Blog
Deployment Guide - status.health® Blog
Pre-Deployment Checklist
1. Configure Newsletter Provider
Edit _config.yml
and update these fields:
newsletter_provider: convertkit # or mailchimp, generic
newsletter_form_id: YOUR_FORM_ID # Replace with actual form ID
newsletter_endpoint: https://app.convertkit.com/forms/YOUR_FORM_ID/subscriptions # Update endpoint
2. Configure Analytics (Optional)
Add your tracking IDs to _config.yml
:
google_analytics: GA_TRACKING_ID
gtm_id: GTM_ID
3. Verify Domain Configuration
The CNAME
file is already set to blog.status.health
. If using a different domain:
echo "your-domain.com" > CNAME
Local Testing
Prerequisites
- Ruby 2.5 or higher
- Bundler gem
Installation Steps
# Install bundler if not already installed
gem install bundler
# Install dependencies
bundle install
# Or install to vendor/bundle to avoid permission issues
bundle config set --local path 'vendor/bundle'
bundle install
Run Locally
# Serve with live reload
bundle exec jekyll serve --livereload
# Or just serve
bundle exec jekyll serve
Visit: http://localhost:4000
Build for Production
bundle exec jekyll build
The built site will be in the _site
directory.
GitHub Pages Deployment
Method 1: Direct GitHub Pages (Recommended)
- Prepare Repository
# Initialize git if not already done git init # Add all files git add . # Commit git commit -m "Initial status.health® blog setup" # Add remote (replace with your repository URL) git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git # Push to main branch git push -u origin main
- Enable GitHub Pages
- Go to your repository on GitHub
- Navigate to Settings → Pages
- Under “Source”, select “Deploy from a branch”
- Choose “main” branch and “/ (root)” folder
- Click “Save”
- Configure Custom Domain
- In the same Pages settings, under “Custom domain”
- Enter
blog.status.health
- Click “Save”
- GitHub will create a commit adding the CNAME file if needed
- DNS Configuration
Configure these DNS records for
blog.status.health
:Type: CNAME Name: blog Value: YOUR_USERNAME.github.io
Or if using apex domain:
Type: A Name: @ Value: 185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153
Method 2: GitHub Actions (Advanced)
Create .github/workflows/jekyll.yml
:
name: Deploy Jekyll site to Pages
on:
push:
branches: ["main"]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1'
bundler-cache: true
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with Jekyll
run: bundle exec jekyll build --baseurl "$"
env:
JEKYLL_ENV: production
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
deploy:
environment:
name: github-pages
url: $
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Verification Steps
1. Check Build Status
- Go to your repository’s Actions tab
- Look for green checkmarks on deployments
2. Visit Your Site
- GitHub Pages URL:
https://YOUR_USERNAME.github.io/YOUR_REPOSITORY/
- Custom domain:
https://blog.status.health
3. Test Features
- Homepage loads correctly
- Navigation works
- Blog posts display
- Categories function
- Newsletter signup works
- Dark mode toggles
- Mobile responsive design
- RSS feed at
/feed.xml
- Sitemap at
/sitemap.xml
Troubleshooting
Build Failures
- Check the Actions tab for error messages
- Ensure all plugins are GitHub Pages compatible
- Verify YAML syntax in
_config.yml
404 Errors
- Wait 10-20 minutes for initial deployment
- Check repository Settings → Pages is enabled
- Verify branch and folder settings
- Clear browser cache
Custom Domain Issues
- Verify DNS propagation (can take up to 48 hours)
- Check CNAME file exists and contains correct domain
- Enable “Enforce HTTPS” in Pages settings
Newsletter Not Working
- Update
_config.yml
with correct provider settings - Verify API keys/form IDs are correct
- Check browser console for JavaScript errors
Post-Deployment
1. Enable HTTPS
In Settings → Pages, check “Enforce HTTPS”
2. Monitor Analytics
If configured, check Google Analytics for traffic
3. Test Newsletter
Submit a test email to verify integration
4. Create Content
Start publishing blog posts according to the content calendar
Maintenance
Updating Content
# Create new post
touch _posts/$(date +%Y-%m-%d)-post-title.md
# Edit, then commit
git add .
git commit -m "Add new blog post"
git push
Updating Theme/Code
- Make changes locally
- Test with
bundle exec jekyll serve
- Commit and push
- GitHub Pages will automatically rebuild
Security Notes
- Never commit API keys or secrets
- Use GitHub Secrets for sensitive data
- Keep dependencies updated with
bundle update
- Review security alerts in GitHub
For support, create an issue in the repository or contact the status.health® team.