Help hosting Hugo with GitHub pages

I am attempting to make a Hugo site, and publish it with GitHub pages, using a user page. I am using this theme, Typo. Theres nothing wrong with the configuration, the local server works just how I want it to. I’ve inserted the following into my .github/workflows/hugo.yml:

# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches:
      - main

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

# Default to bash
defaults:
  run:
    shell: bash

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    env:
      HUGO_VERSION: 0.134.3
    steps:
      - name: Install Hugo CLI
        run: |
          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
          && sudo dpkg -i ${{ runner.temp }}/hugo.deb          
      - name: Install Dart Sass
        run: sudo snap install dart-sass
      - name: Checkout
        uses: actions/checkout@v4
        with:
          submodules: recursive
          fetch-depth: 0
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Install Node.js dependencies
        run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
      - name: Build with Hugo
        env:
          HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
          HUGO_ENVIRONMENT: production
          TZ: America/Los_Angeles
        run: |
          hugo \
            --gc \
            --minify \
            --baseURL "${{ steps.pages.outputs.base_url }}/"          
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./public

  # 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@v4

but when I actually try to build the thing with GitHub actions, I got the following error:

Run actions/checkout@v4
Syncing repository: Skrillx13/skrillx13.github.io
Getting Git version info
Temporarily overriding HOME='/home/runner/work/_temp/873cf471-c6d9-4110-84ca-a820692c1f1f' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
/usr/bin/git config --global --add safe.directory /home/runner/work/skrillx13.github.io/skrillx13.github.io
Deleting the contents of '/home/runner/work/skrillx13.github.io/skrillx13.github.io'
Initializing the repository
Disabling automatic garbage collection
Setting up auth
Fetching the repository
Determining the checkout info
/usr/bin/git sparse-checkout disable
/usr/bin/git config --local --unset-all extensions.worktreeConfig
Checking out the ref
Setting up auth for fetching submodules
Fetching submodules
  /usr/bin/git submodule sync --recursive
  /usr/bin/git -c protocol.version=2 submodule update --init --force --depth=1 --recursive
  Error: fatal: No url found for submodule path 'themes/typo' in .gitmodules
  Error: The process '/usr/bin/git' failed with exit code 128

GitHub repo is here

quick check I found:

  • you have two actions active that are triggered when you push

    guess you need to remove the pages-build-and-deployment one

  • there’s is no .gitmodules but in your repository references that as a submodule (.git) referenced .

    Did you forget to commit your .gitmodules? if so commit and push it

    if not you will need to repair the submodule (don’t have the commands at hand, but guess you will find that easily by searching for the error message)

Hints:

  • you committed your public folder

    if you build in CI you do not have to do that (unless you have a special use case)

  • maybe use wget -nv -0 ...

    will shorten your log (download chunk messages)

the .git referenced was actually my .gitignore file. I am a bit confused on what the .gitmodules file is for though

.gitignore is for ignoring files with git add

.gitmodules stores the urls of your submodules. It is created when you use git submodule add.

This has to be committed and not touched manually unless you know what youre doing.

Here’s a link thag may help recreating the file: git - How do I re-create a deleted .gitmodule file? - Stack Overflow

If noghing more is broken that may help