name: deploy-docs on: push: branches: - main jobs: build-and-deploy: runs-on: ubuntu-latest container: image: hugomods/hugo:latest # We mount both the existing Hugo site structure and the deployment target options: --user root -v /srv/caddy/sites:/deploy -v /srv/dev/hugo/wiki:/hugo-site steps: - name: Checkout Docs Source uses: actions/checkout@v4 - name: Sync Markdown and Assets to Hugo Site run: | # Clean the existing content and static in the mounted Hugo site rm -rf /hugo-site/content/* # The static symlink in hugo-site won't work inside the container context # because the path '/srv/docs/public/static' doesn't exist inside the container. # We must replace the symlink with a real folder for the build. rm -f /hugo-site/static mkdir -p /hugo-site/static # Copy the new content from this repo into the Hugo content folder cp -r . /hugo-site/content/ # Copy static files if they exist in this repo if [ -d "./static" ]; then cp -r ./static/* /hugo-site/static/ fi # Remove Git-related metadata from the content folder rm -rf /hugo-site/content/.git /hugo-site/content/.gitea rm -rf /hugo-site/content/static - name: Build and Deploy Hugo run: | cd /hugo-site hugo --minify --destination /deploy/wiki