Skip to content

ci(pages): scoped auto-deploy of landing → gh-pages#42

Merged
sgwannabe merged 1 commit into
mainfrom
ci/deploy-landing-gh-pages
May 30, 2026
Merged

ci(pages): scoped auto-deploy of landing → gh-pages#42
sgwannabe merged 1 commit into
mainfrom
ci/deploy-landing-gh-pages

Conversation

@sgwannabe

@sgwannabe sgwannabe commented May 30, 2026

Copy link
Copy Markdown
Contributor

What

Adds .github/workflows/deploy-landing.yml so the landing publishes itself: whenever main gets a push that touches index.html or assets/**, the workflow overlays only those paths onto the gh-pages branch and pushes.

Why scoped (not a full mirror)

gh-pages is hand-assembled, not a copy of main. It carries content that does not exist on main:

  • forge/ (P01–P26 mockups), forms/, qdrant-features/
  • CNAME = memex.quest, .nojekyll

A naive "copy all of main → gh-pages" deploy would delete those + the custom domain. So the job uses:

git switch gh-pages
git checkout origin/main -- index.html assets   # additive / update-only

git checkout <ref> -- <path> writes only the paths present in main's tree and never deletes gh-pages-only files — purely additive. Everything curated survives every deploy.

Verified (throwaway-worktree dry-run, nothing pushed)

Running the overlay against current gh-pages staged only:

…while forge/, forms/, qdrant-features/, docs/, CNAME (memex.quest), .nojekyll all stayed present and untouched.

So merging this both (a) wires up future auto-deploys and (b) on first run, corrects the stale favicons/screenshots already live.

Safety notes

  • permissions: contents: write (push to gh-pages), nothing else.
  • concurrency group with cancel-in-progress: false → deploys queue, never interrupt mid-push.
  • workflow_dispatch included for manual re-runs.

🤖 Generated with Claude Code

Summary by CodeRabbit

릴리스 노트

  • Chores
    • 랜딩 페이지 배포 자동화 추가
    • 랜딩 페이지 파일 변경 시 자동 배포 실행
    • 수동 배포 옵션 지원
    • 중복 배포 방지 메커니즘 적용

Review Change Stack

Adds .github/workflows/deploy-landing.yml: on push to main touching
index.html or assets/**, overlay ONLY those paths onto the curated
gh-pages branch and push.

gh-pages is hand-assembled (forge/, forms/, qdrant-features/, docs/,
CNAME=memex.quest, .nojekyll) and is NOT a mirror of main, so the job
uses `git checkout origin/main -- index.html assets`, which is
additive/update-only and never deletes gh-pages-only files. Verified
via a throwaway-worktree dry-run: only index.html + assets/ change;
all curated content and CNAME survive untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown

Walkthrough

main 브랜치의 index.html과 assets 디렉토리 변경을 감지하여 gh-pages 브랜치에만 해당 파일을 선택적으로 동기화하는 GitHub Actions 워크플로를 추가한다. 배포 과정에서 변경이 없으면 조건부로 종료하고, 변경이 있으면 커밋을 생성하여 gh-pages에 푸시하며, 동시성 제어로 중복 배포를 방지한다.

Changes

Landing 배포 워크플로

Layer / File(s) Summary
Landing 배포 워크플로 정의
.github/workflows/deploy-landing.yml
main의 index.html 및 assets/** 변경 감지 시 gh-pages에 해당 경로만 오버레이 동기화하며, git diff 기반 조건부 커밋/푸시와 동시 실행 직렬화(concurrency)를 포함한 배포 워크플로 전체를 정의한다.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10분

Poem

🐰 깃 가지 뻗어 페이지 펼칠 때,
랜딩 정적 파일만 쏙 골라 담고,
중복 실행은 줄일 때까지 기다려,
gh-pages 가지에 안전하게 심는다네!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 풀 리퀘스트 제목이 주요 변경사항을 명확하게 요약하고 있습니다. 'ci(pages): scoped auto-deploy of landing → gh-pages'는 새로운 CI 워크플로우 추가와 그 목적(landing 페이지를 gh-pages로 자동 배포)을 정확히 설명합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/deploy-landing-gh-pages

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 96f2c591c4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

# ref's tree and never deletes files that exist solely on gh-pages.
# That makes this purely additive: forge/, forms/, qdrant-features/,
# docs/, CNAME and .nojekyll are left exactly as curated.
git checkout origin/main -- index.html assets

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove deleted assets when syncing landing

On a push that deletes or renames a file under assets/, this checkout runs in Git's default overlay mode (git checkout -h lists --[no-]overlay as default), so files that are absent from origin/main remain in the gh-pages worktree and git add index.html assets will not stage their deletion. The workflow will either publish only additions/updates or even report nothing to deploy for a deletion-only change, leaving removed landing assets still live on GitHub Pages; the sync needs a non-overlay checkout or an explicit removal of the landing assets/ tree before restoring it from main while still preserving unrelated curated directories.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/deploy-landing.yml:
- Line 33: The workflow currently uses the mutable tag "uses:
actions/checkout@v4"; replace that with the specific commit SHA of the
actions/checkout v4 release (e.g., "uses: actions/checkout@<commit-sha>") to pin
the action to an immutable reference and improve supply-chain security—locate
the correct SHA from the actions/checkout releases page and update the line
containing "uses: actions/checkout@v4" accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5a0b89c1-b7de-4857-83f2-89c46e12b3a6

📥 Commits

Reviewing files that changed from the base of the PR and between d06375f and 96f2c59.

📒 Files selected for processing (1)
  • .github/workflows/deploy-landing.yml

runs-on: ubuntu-latest
steps:
- name: Checkout (all branches, full history)
uses: actions/checkout@v4

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

액션을 SHA로 고정하여 보안 태세를 개선하세요.

현재 actions/checkout@v4는 변경 가능한 태그를 사용합니다. 공급망 공격을 방지하려면 특정 커밋 SHA로 고정하는 것이 권장됩니다.

🔒 SHA 고정 제안
-      - name: Checkout (all branches, full history)
-        uses: actions/checkout@v4
+      - name: Checkout (all branches, full history)  
+        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
         with:
           fetch-depth: 0

참고: 최신 v4 릴리스의 SHA를 확인하려면 actions/checkout 릴리스를 참조하세요.

🧰 Tools
🪛 zizmor (1.25.2)

[error] 33-33: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/deploy-landing.yml at line 33, The workflow currently uses
the mutable tag "uses: actions/checkout@v4"; replace that with the specific
commit SHA of the actions/checkout v4 release (e.g., "uses:
actions/checkout@<commit-sha>") to pin the action to an immutable reference and
improve supply-chain security—locate the correct SHA from the actions/checkout
releases page and update the line containing "uses: actions/checkout@v4"
accordingly.

@sgwannabe sgwannabe merged commit 8a8190c into main May 30, 2026
5 checks passed
@sgwannabe sgwannabe deleted the ci/deploy-landing-gh-pages branch May 30, 2026 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant