Force docs build #207
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Hugo site to Pages | |
on: | |
push: | |
branches: | |
- main | |
- docs | |
pull_request: | |
branches: | |
- main | |
types: | |
- closed | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: "pages" | |
cancel-in-progress: false | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
HUGO_VERSION: 0.108.0 | |
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 Embedded | |
run: sudo snap install dart-sass-embedded | |
- name: Checkout docs branch | |
uses: actions/checkout@v4 | |
with: | |
ref: docs | |
submodules: recursive | |
- name: Fetch main branch | |
run: git fetch origin main:main | |
- name: Setup Pages | |
id: pages | |
uses: actions/configure-pages@v4 | |
- name: Setup Node.js 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
- name: Install Node.js dependencies | |
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" | |
- name: Build with Hugo | |
env: | |
HUGO_ENVIRONMENT: production | |
HUGO_ENV: production | |
run: | | |
hugo \ | |
--minify \ | |
--baseURL "${{ steps.pages.outputs.base_url }}/" | |
- name: Copy hTWOo Core style guide | |
run: git checkout main -- docs/htwoo-core/* && mv -f docs/htwoo-core public/htwoo-core/ | |
- name: Copy hTWOo React style guide | |
run: git checkout main -- docs/htwoo-react/* && mv -f docs/htwoo-react public/htwoo-react/ | |
- name: Show Deployment folder | |
run: ls -la public | |
- name: Verify artifact size and content | |
run: | | |
find ./public -type l -exec rm -f {} \; # Remove symlinks | |
find ./public -type f -exec du -ch {} + | grep total$ # Check total size | |
- name: Check for hard links | |
run: | | |
if find ./public -type f -links +1 | grep -q .; then | |
echo "Error: Hard links found in the public directory." | |
exit 1 | |
fi | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: site | |
path: ./public | |
deploy: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: site | |
path: ./public | |
- name: Cleanup symbolic links in public directory | |
run: find ./public -type l -exec rm -f {} \; | |
- name: Cleanup hard links in public directory | |
run: | | |
if find ./public -type f -links +1 | grep -q .; then | |
find ./public -type f -links +1 -exec rm -f {} \; | |
fi | |
- name: Verify no symbolic links in public directory | |
run: | | |
if find ./public -type l | grep -q .; then | |
echo "Error: Symbolic links found in the public directory." | |
exit 1 | |
fi | |
- name: Verify no hard links in public directory | |
run: | | |
if find ./public -type f -links +1 | grep -q .; then | |
echo "Error: Hard links found in the public directory." | |
exit 1 | |
fi | |
- name: List current folders | |
run: ls -la ./public | |
- name: Setup Pages | |
uses: actions/configure-pages@v5 | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
name: github-pages | |
path: './public' | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |