Skip to content

Commit

Permalink
feat(deploy): Add workflow to deploy Astro website to GitHub Pages
Browse files Browse the repository at this point in the history
This commit adds a new workflow file `deploy-astro-website.yml` that triggers the deployment of the Astro website to GitHub Pages whenever changes are pushed to the `main` branch. The workflow includes steps for checking out the repository, setting up MoltenObsidian, generating Vault manifest and SSG assets, and installing, building, and uploading the site using Astro.

Additionally, this commit updates the `astro.config.mjs` file with a new `site` property set to `'https://nodsoft.github.io/moltenobsidian/'` and a `base` property set to `'/moltenobsidian/'`. It also modifies the `BaseHead.astro` component by importing the Astro configuration from `astro.config.mjs`, extracting title and description from Astro props, and setting the base href dynamically based on the value of `{base}`.
  • Loading branch information
SakuraIsayeki committed Nov 16, 2023
1 parent dfc830b commit 4b94df6
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 2 deletions.
56 changes: 56 additions & 0 deletions .github/workflows/deploy-astro-website.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Deploy Astro website to GitHub Pages

on:
# Trigger the workflow every time you push to the `main` branch
# Using a different branch name? Replace `main` with your branch’s name
push:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab on GitHub.
workflow_dispatch:

# Allow this job to clone the repo and create a page deployment
permissions:
contents: read
pages: write
id-token: write

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Setup MoltenObsidian
uses: nodsoft/moltenobsidian-setup@main

- name: Generate Vault manifest
run: moltenobsidian manifest generate "nodsoft_moltenobsidian_web/vault"

- name: Generate SSG assets
run: |
moltenobsidian ssg generate
--from-folder "nodsoft_moltenobsidian_web/vault"
--output-path "nodsoft_moltenobsidian_web/src/assets/vault"
--ignored-files ".gitignore"
- name: Install, build, and upload
uses: withastro/action@v1
# with:
# path: . # The root location of your Astro project inside the repository. (optional)
# node-version: 18 # The specific version of Node that should be used to build your site. Defaults to 18. (optional)
# package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional)

deploy:
needs: build
runs-on: ubuntu-latest

environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
4 changes: 3 additions & 1 deletion nodsoft_moltenobsidian_web/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { defineConfig } from 'astro/config';

// https://astro.build/config
export default defineConfig({
export default defineConfig({
site: 'https://nodsoft.github.io/moltenobsidian/',
base: '/moltenobsidian/',
output: "static"
});
5 changes: 4 additions & 1 deletion nodsoft_moltenobsidian_web/src/components/BaseHead.astro
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
---
import AstroConfig from "../../astro.config.mjs";
interface Props {
title: string;
description: string;
Expand All @@ -8,6 +10,7 @@ interface Props {
// const canonicalURL = new URL(Astro.url.pathname, Astro.site);
const { title, description} = Astro.props;
const { base } = AstroConfig
---

<!-- Global Metadata -->
Expand All @@ -27,7 +30,7 @@ const { title, description} = Astro.props;

<!-- Primary Meta Tags -->
<title>{title}</title>
<base href="/" />
<base href={base ?? "/"} />
<meta name="title" content={title} />
<meta name="description" content={description} />

Expand Down

0 comments on commit 4b94df6

Please sign in to comment.