Skip to content

Commit e117295

Browse files
docs: Add GitHub Pages deployment to dynamo.github.io for release branches (#1542)
Signed-off-by: Meenakshi Sharma <163925564+nvda-mesharma@users.noreply.github.com>
1 parent 6db54ff commit e117295

File tree

1 file changed

+80
-12
lines changed

1 file changed

+80
-12
lines changed

.github/workflows/generate-docs.yml

Lines changed: 80 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,19 @@ jobs:
6363
needs: build-docs
6464
runs-on: ubuntu-latest
6565

66-
if: startsWith(github.ref, 'refs/heads/release')
66+
# Deploy on PRs targeting release branches
67+
if: github.event_name == 'pull_request' && startsWith(github.base_ref, 'release')
68+
69+
# Prevent multiple deployments from running simultaneously
70+
concurrency:
71+
group: deploy-docs-${{ github.base_ref }}
72+
cancel-in-progress: false
73+
74+
env:
75+
DOCS_BASE_URL: "https://crispy-winner-3jnj38w.pages.github.io"
76+
DOCS_REPOSITORY: "ai-dynamo/dynamo-docs"
77+
DOCS_BRANCH: "main"
78+
DOCS_ARTIFACT_NAME: "dynamo-docs"
6779

6880
steps:
6981
- name: Checkout source repo
@@ -72,22 +84,78 @@ jobs:
7284
- name: Download documentation artifact
7385
uses: actions/download-artifact@v4
7486
with:
75-
name: dynamo-docs-${{ github.run_id }}
76-
path: dynamo-docs
87+
name: ${{ env.DOCS_ARTIFACT_NAME }}-${{ github.run_id }}
88+
path: ${{ env.DOCS_ARTIFACT_NAME }}
7789

78-
- name: Clean potentially stale metadata files
90+
- name: Clean potentially stale metadata files (but preserve index)
7991
run: |
80-
rm -f ./dynamo-docs/CNAME
81-
rm -f ./dynamo-docs/_config.yml
82-
rm -f ./dynamo-docs/index.html || true
92+
rm -f ./${{ env.DOCS_ARTIFACT_NAME }}/CNAME
93+
rm -f ./${{ env.DOCS_ARTIFACT_NAME }}/_config.yml
94+
# Don't remove index.html - it's needed for navigation
95+
96+
- name: Determine deployment directory
97+
id: deploy_dir
98+
run: |
99+
# For PRs, use consistent directory (latest commit overwrites previous)
100+
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-8)
101+
echo "dir_name=${{ github.base_ref }}/pr-${{ github.event.number }}" >> $GITHUB_OUTPUT
102+
echo "commit_ref=${{ github.sha }}" >> $GITHUB_OUTPUT
103+
echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT
83104
84105
- name: Deploy to internal GitHub Pages
85106
uses: peaceiris/actions-gh-pages@v3
86107
with:
87108
personal_token: ${{ secrets.DOCS_TOKEN }}
88-
external_repository: ai-dynamo/dynamo-docs
89-
publish_branch: main
90-
publish_dir: ./dynamo-docs
91-
destination_dir: ${{ github.ref_name }}
92-
commit_message: 'Deploy documentation from ${{ github.repository }}@${{ github.sha }} (branch: ${{ github.ref_name }})'
109+
external_repository: ${{ env.DOCS_REPOSITORY }}
110+
publish_branch: ${{ env.DOCS_BRANCH }}
111+
publish_dir: ./${{ env.DOCS_ARTIFACT_NAME }}
112+
destination_dir: ${{ steps.deploy_dir.outputs.dir_name }}
113+
commit_message: 'Deploy documentation from ${{ github.repository }}@${{ steps.deploy_dir.outputs.commit_ref }} (branch: ${{ steps.deploy_dir.outputs.dir_name }})'
93114
keep_files: true
115+
116+
- name: Comment on PR with docs link
117+
if: github.event_name == 'pull_request'
118+
uses: actions/github-script@v7
119+
with:
120+
script: |
121+
const docsUrl = `${{ env.DOCS_BASE_URL }}/${{ steps.deploy_dir.outputs.dir_name }}/`;
122+
const comment = `## 📚 Documentation Preview
123+
124+
**📖 View Latest Documentation:** [${docsUrl}](${docsUrl})
125+
> **Latest Deployment:**
126+
> - **Commit:** [\`${{ steps.deploy_dir.outputs.short_sha }}\`](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) *(latest push)*
127+
> - **Target:** \`${{ github.base_ref }}\`
128+
> - **Updated:** ${new Date().toLocaleString('en-US', { timeZone: 'UTC', timeStyle: 'short', dateStyle: 'short' })} UTC
129+
>
130+
> **Note:** This link always shows the documentation for the latest commit. It may take a few minutes for GitHub Pages to update after each push.
131+
---
132+
133+
*Auto-updated by the documentation deployment workflow*`;
134+
135+
// Find and update existing comment, or create new one
136+
const { data: comments } = await github.rest.issues.listComments({
137+
owner: context.repo.owner,
138+
repo: context.repo.repo,
139+
issue_number: context.issue.number,
140+
});
141+
142+
const botComment = comments.find(comment =>
143+
comment.user.type === 'Bot' &&
144+
comment.body.includes('📚 Documentation Preview')
145+
);
146+
147+
if (botComment) {
148+
await github.rest.issues.updateComment({
149+
owner: context.repo.owner,
150+
repo: context.repo.repo,
151+
comment_id: botComment.id,
152+
body: comment
153+
});
154+
} else {
155+
await github.rest.issues.createComment({
156+
owner: context.repo.owner,
157+
repo: context.repo.repo,
158+
issue_number: context.issue.number,
159+
body: comment
160+
});
161+
}

0 commit comments

Comments
 (0)