Skip to content

Add Jekyll site structure and GitHub Pages deployment workflow#5

Closed
nduytg wants to merge 8 commits into
masterfrom
codex/set-up-jekyll-site-structure
Closed

Add Jekyll site structure and GitHub Pages deployment workflow#5
nduytg wants to merge 8 commits into
masterfrom
codex/set-up-jekyll-site-structure

Conversation

@nduytg
Copy link
Copy Markdown
Owner

@nduytg nduytg commented Apr 19, 2026

Motivation

  • Migrate the repository to a Jekyll-friendly structure and publish it via GitHub Pages to provide a simple site for cheat sheets, projects, and blog posts.
  • Standardize content organization with collections and a default layout so evergreen docs and posts can be managed consistently.
  • Replace the previous custom domain configuration to use the repository's default GitHub Pages domain pattern.

Description

  • Added a GitHub Actions workflow /.github/workflows/pages-deploy.yml to build the site with Jekyll and deploy to GitHub Pages on pushes to main and to run the build on pull requests.
  • Introduced Jekyll configuration in _config.yml with docs and projects collections and default layouts for collections and posts.
  • Added site scaffolding and content: _layouts/default.html, _data/navigation.yml, _docs/getting-started.md, _posts/2026-04-19-site-structure-update.md, _projects/platform-engineering-case-study.md, and top-level pages index.md, cheat-sheets.md, projects.md, blog.md, and about.md.
  • Updated README.md to document the new content model, CI/CD workflows, and the decision to use the default GitHub Pages domain; removed the repository CNAME to disable the custom domain.

Testing

  • No automated tests were executed as part of this rollout.
  • The repository includes a Markdown lint workflow which will run on pushes and pull requests, and the new Build and Deploy GitHub Pages workflow will execute builds on PRs and deploy on pushes to main when triggered by GitHub Actions.

Codex Task

@nduytg nduytg marked this pull request as ready for review April 19, 2026 06:30
@nduytg nduytg requested a review from Copilot April 19, 2026 06:30
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the repository into a Jekyll-compatible structure and adds a GitHub Actions workflow to build and deploy the site to GitHub Pages, along with initial site scaffolding (layout, navigation, collections, and starter content).

Changes:

  • Added Jekyll configuration for docs and projects collections plus default layout behavior.
  • Introduced site scaffolding (default layout, navigation data) and top-level index pages for docs/projects/blog/about.
  • Added a GitHub Actions workflow to build on PRs and deploy to GitHub Pages on pushes to main, and removed the CNAME to use the default Pages domain.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
.github/workflows/pages-deploy.yml Builds Jekyll and deploys to GitHub Pages on main pushes (also runs on PRs).
_config.yml Defines site metadata, collections (docs, projects), permalinks, and default layout settings.
_layouts/default.html Adds the default HTML layout and top navigation.
_data/navigation.yml Defines the top navigation items used by the default layout.
_docs/getting-started.md Adds a starter doc page in the docs collection.
_projects/platform-engineering-case-study.md Adds a starter project/case-study template in the projects collection.
_posts/2026-04-19-site-structure-update.md Adds an initial blog post announcing the structure update.
index.md Adds the new homepage with links into the new content paths.
cheat-sheets.md Adds a landing page that lists docs collection entries.
projects.md Adds a landing page that lists projects collection entries.
blog.md Adds a landing page that lists blog posts.
about.md Adds an About page for the site.
README.md Documents the new Jekyll content model, workflows, and Pages domain approach.
CNAME Removed to stop using a custom domain.
.pymarkdown.json Updates Markdown lint config to support Jekyll front matter.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md Outdated
Comment on lines +10 to +14
permissions:
contents: read
pages: write
id-token: write

Copy link

Copilot AI Apr 19, 2026

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: write and id-token: write to the build job (including on pull_request), even though only the deploy job needs them. To follow least-privilege, move these permissions to the deploy job (and keep contents: read for build), or set job-level permissions so PR builds don't get write-level tokens unnecessarily.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Owner Author

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

Comment thread _layouts/default.html
Comment on lines +18 to +31
<header>
<h1><a href="{{ '/' | relative_url }}">{{ site.title }}</a></h1>
<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">
{{ content }}
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default layout renders an <h1> that always shows site.title, but it never renders page.title. Several new pages (e.g., about.md, blog.md) don't include an H1 in their Markdown, so the visible primary heading will be the same on every page, which hurts navigation/accessibility. Consider rendering page.title as the main heading (or providing a per-page heading slot) so each page has a unique top-level heading.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Owner Author

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implemented in 93e2fb8: the layout now renders <h1>{{ page.title | default: site.title }}</h1> inside <main>, and the site title in the header is no longer the page H1.

Screenshot:
Updated default layout heading behavior

Comment on lines +15 to +17
concurrency:
group: pages
cancel-in-progress: false
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

concurrency.group: pages applies to the whole workflow (including PR builds), so multiple pull requests will be forced to run sequentially and can queue behind each other and behind main deployments. If you only need serialization for deployments, consider moving concurrency to the deploy job or keying the group by ref for PR builds.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Owner Author

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

Comment thread _layouts/default.html Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
nduytg and others added 2 commits April 19, 2026 16:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@nduytg nduytg closed this Apr 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants