Successfully integrated link-archive repository into mbgsec.com using GitHub Actions and Jekyll collections, maintaining existing workflows while providing unified theming.
The Problem: Content scattered between repositories, inconsistent theming, complex deployment
The Solution: GitHub Actions + Jekyll Collections
graph TD
A[link-archive repo] -->|GitHub Action| B[Clone to .tmp/]
B --> C[Copy archive/*.md β _archive/]
B --> D[Copy weblog/*.md β _weblog/]
C --> E[Jekyll Build]
D --> E
E --> F[Deploy to mbgsec.com]
F --> G[/archive/ pages]
F --> H[/weblog/ pages]
F --> I[RSS feeds]
Key Decision: Removed git submodule approach - GitHub Actions clone directly, eliminating complexity.
archive
and weblog
with consistent permalinks/archive/
/weblog/
The integration followed a planned approach with three alternatives considered:
Alternative 1 (Rejected): Direct collection migration
Alternative 2 (Initially Chosen): Git submodule integration
Alternative 3 (Rejected): Microservice architecture
Final Solution: GitHub Actions + Direct Cloning
Problem: github-pages
gem enforces safe mode, blocks custom plugins
Solution: GitHub Actions work within GitHub Pages constraints
Result: Automated, reliable, maintainable
Original Thinking: Submodules provide version tracking and separation Reality Check: Files get copied to collections anyway Optimization: Direct cloning is simpler, achieves same result
Alignment: Matches link-archive terminology
Clarity: Better semantic meaning (web-log vs link-log)
UX: Single menu item for processed content
Problem: Archive markdown files contain literal ``)
Jekyll Issue: Liquid templating engine tries to parse these as template syntax and fails with βTag was not properly terminatedβ
Solution: Wrap content (not front matter) in ...
tags
Implementation: AWK script in GitHub Actions that preserves YAML front matter while escaping content
Result: Archive content displays exactly as written while preventing Liquid parsing errors
mbgsec/
βββ _archive/ # Copied from link-archive/archive/
βββ _weblog/ # Copied from link-archive/weblog/
βββ _linklog/ # Preserved existing files
βββ .github/workflows/ # Automation
βββ devlog/ # This documentation
Automated: GitHub Action handles daily updates
Manual: Workflow dispatch available for immediate updates
Monitoring: Build logs provide import visibility
Scaling: Architecture supports additional collections
Integration completed: July 21, 2025
Build status: β
Successful
Dave Farley approval: βββββ
Architecture: Simple, Reliable, Fast