Skip to content

Commit ff28aad

Browse files
authored
Github actions, astro deployment to pages
1 parent fc30013 commit ff28aad

1 file changed

Lines changed: 95 additions & 0 deletions

File tree

.github/workflows/astro.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: Deploy Astro site to Pages
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: "pages"
15+
cancel-in-progress: false
16+
17+
env:
18+
BUILD_PATH: "."
19+
20+
jobs:
21+
build:
22+
name: Build
23+
runs-on: ubuntu-latest
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@v4
27+
28+
- name: Detect package manager
29+
id: detect-package-manager
30+
run: |
31+
if [ -f "${{ github.workspace }}/pnpm-lock.yaml" ]; then
32+
echo "manager=pnpm" >> $GITHUB_OUTPUT
33+
echo "command=install --frozen-lockfile" >> $GITHUB_OUTPUT
34+
echo "runner=pnpm" >> $GITHUB_OUTPUT
35+
echo "lockfile=pnpm-lock.yaml" >> $GITHUB_OUTPUT
36+
exit 0
37+
elif [ -f "${{ github.workspace }}/yarn.lock" ]; then
38+
echo "manager=yarn" >> $GITHUB_OUTPUT
39+
echo "command=install" >> $GITHUB_OUTPUT
40+
echo "runner=yarn" >> $GITHUB_OUTPUT
41+
echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT
42+
exit 0
43+
elif [ -f "${{ github.workspace }}/package-lock.json" ]; then
44+
echo "manager=npm" >> $GITHUB_OUTPUT
45+
echo "command=ci" >> $GITHUB_OUTPUT
46+
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
47+
echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT
48+
exit 0
49+
else
50+
echo "Unable to determine package manager"
51+
exit 1
52+
fi
53+
54+
- name: Setup Node
55+
uses: actions/setup-node@v4
56+
with:
57+
node-version: "20"
58+
cache: ${{ steps.detect-package-manager.outputs.manager }}
59+
cache-dependency-path: ${{ env.BUILD_PATH }}/${{ steps.detect-package-manager.outputs.lockfile }}
60+
61+
- name: Install pnpm (if needed)
62+
if: ${{ steps.detect-package-manager.outputs.manager == 'pnpm' }}
63+
run: npm install -g pnpm
64+
65+
- name: Setup Pages
66+
id: pages
67+
uses: actions/configure-pages@v5
68+
69+
- name: Install dependencies
70+
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
71+
working-directory: ${{ env.BUILD_PATH }}
72+
73+
- name: Build with Astro
74+
run: |
75+
${{ steps.detect-package-manager.outputs.runner }} astro build \
76+
--site "${{ steps.pages.outputs.origin }}" \
77+
--base "${{ steps.pages.outputs.base_path }}"
78+
working-directory: ${{ env.BUILD_PATH }}
79+
80+
- name: Upload artifact
81+
uses: actions/upload-pages-artifact@v3
82+
with:
83+
path: ${{ env.BUILD_PATH }}/dist
84+
85+
deploy:
86+
environment:
87+
name: github-pages
88+
url: ${{ steps.deployment.outputs.page_url }}
89+
needs: build
90+
runs-on: ubuntu-latest
91+
name: Deploy
92+
steps:
93+
- name: Deploy to GitHub Pages
94+
id: deployment
95+
uses: actions/deploy-pages@v4

0 commit comments

Comments
 (0)