Skip to content

Instantly share code, notes, and snippets.

@DougAnderson444
Last active February 5, 2024 23:20
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DougAnderson444/e2f4ee87bdbe71a2eb0984a5958bde66 to your computer and use it in GitHub Desktop.
Save DougAnderson444/e2f4ee87bdbe71a2eb0984a5958bde66 to your computer and use it in GitHub Desktop.
Github Action to build & deploy Leptos Website
name: Build Rust & Deploy Leptos Page
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run workspace tests
run: cargo test --workspace --verbose
- name: Setup Pages
uses: actions/configure-pages@v3
# Build with trunk-rs
- name: Set up Rust
uses: dtolnay/rust-toolchain@nightly
with:
targets: wasm32-unknown-unknown
toolchain: nightly-x86_64-unknown-linux-gnu
components: rust-src
- name: Install Trunk
uses: mbround18/trunk-rs@v0.0.1
- name: Build and Deploy Leptos Directory
run: cd crates/ && cd leptos-site/ && trunk build --release
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./crates/delano-leptos-site/dist
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
@DougAnderson444
Copy link
Author

More options available here: leptos-rs/leptos#1152 (comment)

jobs:
  Deploy-Production:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: git-checkout
        uses: actions/checkout@v3

      - uses: dtolnay/rust-toolchain@nightly
      - uses: Swatinem/rust-cache@v2
      - uses: jetli/trunk-action@v0.4.0
      - name: Trunk Build
        run: |
          rustup target add wasm32-unknown-unknown
          trunk build

      - name: Install Vercel CLI
        run: npm install --global vercel@latest
      - name: Pull Vercel Environment Information
        run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
      - name: Deploy Project Artifacts to Vercel
        working-directory: ./dist
        run: vercel deploy --prod --token=${{ secrets.VERCEL_TOKEN }}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment