-
Notifications
You must be signed in to change notification settings - Fork 37
Add Jekyll site structure and GitHub Pages deployment workflow #5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
d4de291
dca42f3
f351bba
24b9558
95f5fef
d0285a2
3cc2db1
93e2fb8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| name: Build and Deploy GitHub Pages | ||
|
|
||
| on: | ||
| pull_request: | ||
| push: | ||
| branches: | ||
| - main | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
| pages: write | ||
| id-token: write | ||
|
|
||
| concurrency: | ||
| group: pages | ||
| cancel-in-progress: false | ||
|
Comment on lines
+15
to
+17
|
||
|
|
||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Pages | ||
| uses: actions/configure-pages@v5 | ||
|
|
||
| - name: Build with Jekyll | ||
| uses: actions/jekyll-build-pages@v1 | ||
| with: | ||
| source: ./ | ||
| destination: ./_site | ||
|
|
||
| - name: Upload artifact | ||
| uses: actions/upload-pages-artifact@v3 | ||
| with: | ||
| path: ./_site | ||
|
|
||
| deploy: | ||
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | ||
| environment: | ||
| name: github-pages | ||
| url: ${{ steps.deployment.outputs.page_url }} | ||
| needs: build | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Deploy to GitHub Pages | ||
| id: deployment | ||
| uses: actions/deploy-pages@v4 | ||
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,28 @@ | ||
| theme: jekyll-theme-architect | ||
| title: System Engineer Cheat Sheets | ||
| description: Practical cheat sheets, platform engineering projects, and blog updates. | ||
| theme: jekyll-theme-architect | ||
|
|
||
| collections: | ||
| docs: | ||
| output: true | ||
| permalink: /cheat-sheets/:name/ | ||
| projects: | ||
| output: true | ||
| permalink: /projects/:name/ | ||
|
|
||
| defaults: | ||
| - scope: | ||
| path: "" | ||
| type: docs | ||
| values: | ||
| layout: default | ||
| - scope: | ||
| path: "" | ||
| type: projects | ||
| values: | ||
| layout: default | ||
| - scope: | ||
| path: "" | ||
| type: posts | ||
| values: | ||
| layout: default |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| - title: Home | ||
| url: / | ||
| - title: Cheat Sheets | ||
| url: /cheat-sheets/ | ||
| - title: Projects | ||
| url: /projects/ | ||
| - title: Blog | ||
| url: /blog/ | ||
| - title: About | ||
| url: /about/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| --- | ||
| layout: default | ||
| title: Getting Started with the Docs Collection | ||
| permalink: /cheat-sheets/getting-started/ | ||
| tags: | ||
| - docs | ||
| - migration | ||
| categories: | ||
| - cheat-sheets | ||
| --- | ||
|
|
||
| # Getting Started with `_docs/` | ||
|
|
||
| Use this collection for evergreen content that should remain stable over time. | ||
|
|
||
| ## Migration guidance | ||
|
|
||
| 1. Keep the original topic file in place initially. | ||
| 2. Create or update a canonical page in `_docs/`. | ||
| 3. Add links between old and new pages until migration is complete. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| <!DOCTYPE html> | ||
| <html lang="{{ site.lang | default: 'en-US' }}"> | ||
| <head> | ||
| <meta charset="UTF-8"> | ||
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
| {% seo %} | ||
| <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}"> | ||
| <style> | ||
| .top-nav { margin: 1rem 0 2rem; } | ||
| .top-nav ul { display: flex; flex-wrap: wrap; gap: 0.8rem; list-style: none; padding: 0; margin: 0; } | ||
| .top-nav a { font-weight: 700; text-decoration: none; } | ||
| </style> | ||
| </head> | ||
| <body> | ||
| <header> | ||
| <p><a href="{{ '/' | relative_url }}">{{ site.title }}</a></p> | ||
| <p>{{ site.description }}</p> | ||
| <nav class="top-nav" aria-label="Top navigation"> | ||
| <ul> | ||
| {% for item in site.data.navigation %} | ||
| <li><a href="{{ item.url | relative_url }}">{{ item.title }}</a></li> | ||
| {% endfor %} | ||
| </ul> | ||
| </nav> | ||
| </header> | ||
|
|
||
| <main id="content" role="main"> | ||
| <h1>{{ page.title | default: site.title }}</h1> | ||
| {{ content }} | ||
|
Comment on lines
+16
to
+30
|
||
| </main> | ||
| </body> | ||
| </html> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| --- | ||
| layout: default | ||
| title: Site Structure Update | ||
| date: 2026-04-19 00:00:00 +0000 | ||
| tags: | ||
| - blog | ||
| - migration | ||
| categories: | ||
| - updates | ||
| --- | ||
|
|
||
| This post marks the transition to a Jekyll structure with dedicated docs, projects, and blog content paths. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| --- | ||
| layout: default | ||
| title: Platform Engineering Case Study Template | ||
| permalink: /projects/platform-engineering-case-study/ | ||
| tags: | ||
| - projects | ||
| - platform-engineering | ||
| categories: | ||
| - case-study | ||
| --- | ||
|
|
||
| # Platform Engineering Case Study Template | ||
|
|
||
| - **Problem:** | ||
| - **Constraints:** | ||
| - **Approach:** | ||
| - **Outcome:** | ||
| - **Follow-up work:** |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| --- | ||
| layout: default | ||
| title: About | ||
| permalink: /about/ | ||
| tags: [about, metadata] | ||
| categories: [site] | ||
| --- | ||
|
|
||
| This site documents practical system engineering operations, from evergreen cheat sheets to platform project case studies and time-based blog notes. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| --- | ||
| layout: default | ||
| title: Blog | ||
| permalink: /blog/ | ||
| tags: [blog, posts] | ||
| categories: [navigation] | ||
| --- | ||
|
|
||
| {% for post in site.posts %} | ||
|
|
||
| - [{{ post.title }}]({{ post.url | relative_url }}) — {{ post.date | date: "%B %-d, %Y" }} | ||
|
|
||
| {% endfor %} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| --- | ||
| layout: default | ||
| title: Cheat Sheets | ||
| permalink: /cheat-sheets/ | ||
| tags: [docs, cheat-sheets] | ||
| categories: [navigation] | ||
| --- | ||
|
|
||
| These pages come from the `_docs/` collection and are intended to be evergreen references. | ||
|
|
||
| {% assign sorted_docs = site.docs | sort: 'title' %} | ||
| {% for doc in sorted_docs %} | ||
|
|
||
| - [{{ doc.title }}]({{ doc.url | relative_url }}) | ||
|
|
||
| {% endfor %} | ||
|
|
||
| ## Legacy topic folders | ||
|
|
||
| The original topic directories are preserved during transition: | ||
|
|
||
| - `Automation/`, `Backup/`, `Docker/`, `Firewall/`, `High Availability/`, `Load Balancing/`, `NTP/`, `SSH/`, `Tunning kernel/`, `Utils/`, `Web Services/` | ||
|
|
||
| As documents are modernized, corresponding pages will be moved or aliased into `_docs/`. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| --- | ||
| layout: default | ||
| title: Home | ||
| permalink: / | ||
| tags: [home, navigation] | ||
| categories: [site] | ||
| --- | ||
|
|
||
| Use the two primary paths below to get started quickly: | ||
|
|
||
| - [Cheat Sheets]({{ '/cheat-sheets/' | relative_url }}) — Evergreen, task-oriented operational references stored in the docs collection. | ||
| - [Blog]({{ '/blog/' | relative_url }}) — Time-based updates, release notes, and short operational writeups. | ||
|
|
||
| ## Transitional note | ||
|
|
||
| Legacy topic folders remain available during migration. New and refreshed material will be published in `_docs/` and linked from this site structure. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| --- | ||
| layout: default | ||
| title: Projects | ||
| permalink: /projects/ | ||
| tags: [projects, case-studies] | ||
| categories: [navigation] | ||
| --- | ||
|
|
||
| {% assign sorted_projects = site.projects | sort: 'title' %} | ||
| {% for project in sorted_projects %} | ||
|
|
||
| - [{{ project.title }}]({{ project.url | relative_url }}) | ||
|
|
||
| {% endfor %} |

There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Workflow-level permissions grant
pages: writeandid-token: writeto the build job (including onpull_request), even though only the deploy job needs them. To follow least-privilege, move these permissions to thedeployjob (and keepcontents: readforbuild), or set job-levelpermissionsso PR builds don't get write-level tokens unnecessarily.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot apply changes based on this feedback