Skip to content

Commit babc683

Browse files
authored
fix deployment (#37)
1 parent 9bae7bb commit babc683

File tree

1 file changed

+44
-73
lines changed

1 file changed

+44
-73
lines changed

.github/workflows/ci.yml

Lines changed: 44 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build and Netlify Deploy
1+
name: Build and Deploy to GitHub Pages
22

33
on:
44
pull_request:
@@ -25,25 +25,26 @@ jobs:
2525
build-and-deploy:
2626
runs-on: ubuntu-latest
2727
permissions:
28-
contents: read
28+
contents: write
2929
pull-requests: write
30+
pages: write
31+
id-token: write
3032

3133
steps:
3234
- name: Checkout current branch
3335
uses: actions/checkout@v4
3436
with:
35-
ref: ${{ github.head_ref }}
37+
ref: ${{ github.head_ref || github.ref }}
3638
token: ${{ env.GH_TOKEN }}
3739
submodules: 'true'
3840

3941
- name: Display branch information
4042
run: |
41-
echo "Running on branch: ${{ github.head_ref }}"
43+
echo "Running on branch: ${{ github.head_ref || github.ref_name }}"
4244
echo "Target branch: ${{ github.base_ref }}"
4345
echo "PR number: ${{ github.event.number }}"
4446
echo "Commit SHA: ${{ github.sha }}"
4547
46-
4748
- uses: actions/setup-node@v4
4849
with:
4950
node-version: 18.x
@@ -62,64 +63,50 @@ jobs:
6263
with:
6364
path: './lectures/_build/html'
6465

66+
# Deploy to GitHub Pages on main branch push
67+
- name: Deploy to GitHub Pages
68+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
69+
uses: peaceiris/actions-gh-pages@v3
70+
with:
71+
github_token: ${{ secrets.GITHUB_TOKEN }}
72+
publish_dir: ./lectures/_build/html
73+
publish_branch: gh-pages
74+
force_orphan: true
75+
76+
# Netlify preview for PRs (optional - keep if you want PR previews)
6577
- name: Install Netlify CLI
78+
if: github.event_name == 'pull_request'
6679
run: |
6780
npm install -g netlify-cli
6881
mkdir -p ~/.config/netlify
6982
7083
- name: Deploy Preview to Netlify
84+
if: github.event_name == 'pull_request'
7185
id: netlify-deploy
7286
run: |
73-
if [ "${{ github.event_name }}" = "pull_request" ]; then
74-
# Deploy to Netlify and capture the response
75-
deploy_message="Preview Deploy from GitHub Actions PR #${{ github.event.pull_request.number }} (commit: ${{ github.event.pull_request.head.sha }})"
76-
77-
netlify_output=$(netlify deploy \
78-
--dir lectures/_build/html/ \
79-
--site ${{ secrets.NETLIFY_SITE_ID }} \
80-
--auth ${{ secrets.NETLIFY_AUTH_TOKEN }} \
81-
--context pr-preview \
82-
--alias pr-${{ github.event.pull_request.number }} \
83-
--message "${deploy_message}" \
84-
--json)
85-
86-
echo "Netlify deployment output:"
87-
echo "$netlify_output"
88-
89-
# Extract the actual deploy URL from the JSON response
90-
deploy_url=$(echo "$netlify_output" | jq -r '.deploy_url')
91-
92-
echo "deploy_url=$deploy_url" >> $GITHUB_OUTPUT
93-
echo "✅ Deployment completed!"
94-
echo "🌐 Deploy URL: $deploy_url"
95-
96-
# Display manual preview page if specified
97-
if [ ! -z "${{ github.event.inputs.preview_page }}" ]; then
98-
echo ""
99-
echo "🎯 Manual preview page: ${deploy_url}/${{ github.event.inputs.preview_page }}"
100-
fi
101-
else
102-
# Handle push to branch
103-
deploy_message="Deploy from GitHub Actions (commit: ${{ github.sha }})"
104-
105-
netlify_output=$(netlify deploy \
106-
--dir lectures/_build/html/ \
107-
--site ${{ secrets.NETLIFY_SITE_ID }} \
108-
--auth ${{ secrets.NETLIFY_AUTH_TOKEN }} \
109-
--context dev \
110-
--alias ${{ github.ref_name }} \
111-
--message "${deploy_message}" \
112-
--json)
113-
114-
echo "Netlify deployment output:"
115-
echo "$netlify_output"
116-
117-
# Extract the actual deploy URL from the JSON response
118-
deploy_url=$(echo "$netlify_output" | jq -r '.deploy_url')
119-
120-
echo "deploy_url=$deploy_url" >> $GITHUB_OUTPUT
121-
echo "✅ Deployment completed!"
122-
echo "🌐 Deploy URL: $deploy_url"
87+
deploy_message="Preview Deploy from GitHub Actions PR #${{ github.event.pull_request.number }} (commit: ${{ github.event.pull_request.head.sha }})"
88+
89+
netlify_output=$(netlify deploy \
90+
--dir lectures/_build/html/ \
91+
--site ${{ secrets.NETLIFY_SITE_ID }} \
92+
--auth ${{ secrets.NETLIFY_AUTH_TOKEN }} \
93+
--context pr-preview \
94+
--alias pr-${{ github.event.pull_request.number }} \
95+
--message "${deploy_message}" \
96+
--json)
97+
98+
echo "Netlify deployment output:"
99+
echo "$netlify_output"
100+
101+
deploy_url=$(echo "$netlify_output" | jq -r '.deploy_url')
102+
103+
echo "deploy_url=$deploy_url" >> $GITHUB_OUTPUT
104+
echo "✅ Deployment completed!"
105+
echo "🌐 Deploy URL: $deploy_url"
106+
107+
if [ ! -z "${{ github.event.inputs.preview_page }}" ]; then
108+
echo ""
109+
echo "🎯 Manual preview page: ${deploy_url}/${{ github.event.inputs.preview_page }}"
123110
fi
124111
env:
125112
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
@@ -136,55 +123,39 @@ jobs:
136123
const commitSha = `${{ github.event.pull_request.head.sha }}`;
137124
const shortSha = commitSha.substring(0, 7);
138125
139-
console.log(`Deploy URL: ${deployUrl}`);
140-
console.log(`Manual preview page: ${manualPage}`);
141-
console.log(`PR Number: ${prNumber}`);
142-
console.log(`Commit SHA: ${shortSha}`);
143-
144-
// Get all comments on this PR to check for duplicates
145126
const comments = await github.rest.issues.listComments({
146127
issue_number: prNumber,
147128
owner: context.repo.owner,
148129
repo: context.repo.repo,
149130
});
150131
151-
console.log(`Found ${comments.data.length} comments on PR`);
152-
153-
// Look for existing comment with this exact commit SHA and deploy URL
154132
const duplicateComment = comments.data.find(comment => {
155133
const hasMarker = comment.body.includes('**📖 Netlify Preview Ready!**');
156134
const hasCommitSha = comment.body.includes(`([${shortSha}]`);
157135
const hasDeployUrl = comment.body.includes(deployUrl);
158-
159136
return hasMarker && hasCommitSha && hasDeployUrl;
160137
});
161138
162139
if (duplicateComment) {
163-
console.log(`Duplicate comment found (${duplicateComment.id}), skipping...`);
140+
console.log(`Duplicate comment found, skipping...`);
164141
return;
165142
}
166143
167-
console.log(`No duplicate found, creating new comment for commit ${shortSha}`);
168-
169144
const commitUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/commit/${commitSha}`;
170145
171146
let comment = `**📖 Netlify Preview Ready!**\n\n`;
172147
comment += `**Preview URL:** ${deployUrl} ([${shortSha}](${commitUrl}))\n\n`;
173148
174-
// Add manual preview page if specified
175149
if (manualPage) {
176150
comment += `🎯 **Manual Preview:** [${manualPage}](${deployUrl}/${manualPage})\n\n`;
177151
}
178152
179153
comment += `✨ Browse the preview at the URL above.\n`;
180154
181-
// Post the comment
182155
await github.rest.issues.createComment({
183156
issue_number: prNumber,
184157
owner: context.repo.owner,
185158
repo: context.repo.repo,
186159
body: comment
187160
});
188-
189-
console.log('Comment posted successfully');
190-
timeout-minutes: 10
161+
timeout-minutes: 10

0 commit comments

Comments
 (0)