feat: switch docs deploy from GH Pages to GHCR container

This commit is contained in:
2026-03-11 12:09:45 -07:00
parent fcc89afdd5
commit bfff44b7cd
4 changed files with 69 additions and 34 deletions
+5
View File
@@ -0,0 +1,5 @@
node_modules
.next
.docs
out
.git
+30 -34
View File
@@ -1,4 +1,4 @@
name: Deploy to GitHub Pages
name: Deploy Docs
on:
push:
@@ -7,51 +7,47 @@ on:
permissions:
contents: read
pages: write
id-token: write
packages: write
concurrency:
group: pages
cancel-in-progress: false
group: deploy-docs
cancel-in-progress: true
env:
REGISTRY: ghcr.io
IMAGE_NAME: luxfi/docs
jobs:
build:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
- name: Log in to GHCR
uses: docker/login-action@v3
with:
node-version: 22
cache: 'pnpm'
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm build
- name: Add .nojekyll
run: touch out/.nojekyll
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
path: out
context: .
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
platforms: linux/amd64
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
needs: build-and-push
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- name: Deploy to cluster
uses: appleboy/ssh-action@v1
continue-on-error: true
with:
host: ${{ secrets.K8S_HOST }}
username: ${{ secrets.K8S_USER }}
key: ${{ secrets.K8S_SSH_KEY }}
script: |
kubectl rollout restart deployment/lux-docs -n lux-explorer
+12
View File
@@ -0,0 +1,12 @@
FROM node:22-alpine AS build
WORKDIR /app
RUN corepack enable pnpm
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
FROM nginx:alpine
COPY --from=build /app/out /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 3000
+22
View File
@@ -0,0 +1,22 @@
server {
listen 3000;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri.html $uri/ /404.html;
}
location /_next/static/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location /health {
return 200 'ok';
add_header Content-Type text/plain;
}
error_page 404 /404.html;
}