Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
30740b3
Migrate Jekyll _layouts to Hugo layouts/_default (#944)
MuhammadAashirAslam Aug 9, 2026
b7201cb
Initialize Hugo config directory and split module mounts (#945)
MuhammadAashirAslam Aug 9, 2026
d16a58e
Add community and testimonial partials (#947)
MuhammadAashirAslam Aug 9, 2026
8656a29
Add alert and callout partials (#949)
MuhammadAashirAslam Aug 9, 2026
dd52db7
Add core page layout partials (#950)
MuhammadAashirAslam Aug 9, 2026
038d5b7
Add sidebar layouts (#951)
MuhammadAashirAslam Aug 9, 2026
b7989ff
Add third party integrations and analytics partials (#952)
MuhammadAashirAslam Aug 9, 2026
265f983
Add Hugo shortcodes (#961)
MuhammadAashirAslam Aug 9, 2026
3a9103f
Add publication and tagging partials (#948)
MuhammadAashirAslam Aug 9, 2026
5115a82
Add specialized Hugo layouts (#963)
MuhammadAashirAslam Aug 9, 2026
3b245b8
Add content utilities and helpers partials (#953)
MuhammadAashirAslam Aug 9, 2026
9e02ba4
Replace Jekyll XML Outputs and Update Doxygen Sitemap Integration (#966)
MuhammadAashirAslam Aug 9, 2026
72b307e
Migrate content and static assets (#964)
MuhammadAashirAslam Aug 9, 2026
b45ad61
Update references to renamed edit button (#971)
MuhammadAashirAslam Aug 10, 2026
182c982
Rewrite CI workflows for Hugo (#967)
MuhammadAashirAslam Aug 13, 2026
7ffa5fc
Rename tutorials sidebar data file and update Hugo configuration (#977)
MuhammadAashirAslam Aug 23, 2026
14e3869
Migrating Hugo modules and Discourse data updates worflows (#969)
MuhammadAashirAslam Aug 23, 2026
945c85b
Update Hugo modules
precice-bot Aug 23, 2026
deaffe9
Port PDF generation to Hugo (#972)
MuhammadAashirAslam Aug 24, 2026
e726722
Add Hugo Algolia indexing (#968)
MuhammadAashirAslam Aug 24, 2026
63690e5
Fix contributors page and overview image (#978)
MuhammadAashirAslam Aug 24, 2026
8f17054
Update Hugo content documentation (#970)
MuhammadAashirAslam Aug 28, 2026
326a164
Remove remaining Jekyll-related files and port recent content changes…
MuhammadAashirAslam Aug 28, 2026
166e0ac
Update Hugo modules
precice-bot Aug 28, 2026
9d35e46
Remove automatic subpage listing from section overview layout
MuhammadAashirAslam Aug 30, 2026
fa1bcb1
Update system tests mount path to tests/README.md
MuhammadAashirAslam Aug 30, 2026
ccbdd50
Render publication content in card and link to literature guide
MuhammadAashirAslam Aug 30, 2026
33316bb
Merge remote-tracking branch 'origin/master' into hugo
MuhammadAashirAslam Aug 30, 2026
d4df87a
Resolving Merge Conflicts
MuhammadAashirAslam Aug 30, 2026
f12df1b
Merge branch master into hugo
MuhammadAashirAslam Sep 9, 2026
95a5610
Update Hugo to v0.166.0 and Go to v1.27.1 in workflows and documentation
MuhammadAashirAslam Sep 11, 2026
d356fd7
Merge branch master into hugo
MuhammadAashirAslam Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
119 changes: 98 additions & 21 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,121 @@
name: Build the website

on:
workflow_dispatch:
push:
pull_request:
merge_group:

permissions:
contents: read

concurrency:
group: build-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
GO_VERSION: "1.27.1"
HUGO_VERSION: "0.166.0"
NODE_VERSION: "24.18.0"

jobs:
pre-commit:
name: pre-commit checks
name: Pre-commit checks
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- uses: actions/checkout@v6
- name: Setup python
uses: actions/setup-python@v6
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: '3.x'
python-version: "3.14"

- name: Cache pre-commit environments
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}

- name: Install pre-commit
run: python -m pip install "pre-commit==4.6.1"

- name: Run pre-commit
uses: pre-commit/action@v3.0.1
run: pre-commit run --all-files --show-diff-on-failure --color=always

build:
name: Hugo build and validation
needs: pre-commit
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
submodules: true
fetch-depth: 0
submodules: false
lfs: false
path: website
- uses: ruby/setup-ruby@v1

- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
with:
bundler-cache: true
working-directory: website
- name: Build site
working-directory: website
env:
JEKYLL_ENV: production
run: bundle exec jekyll build
- name: Upload site
uses: actions/upload-artifact@v7
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: go.sum

- name: Set up Hugo
uses: peaceiris/actions-hugo@2752ce1d29631191ea3f27c23495fa06139a5b78 # v3
with:
hugo-version: ${{ env.HUGO_VERSION }}
extended: true

- name: Set up Node.js
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: tools/package-lock.json

- name: Install Node.js dependencies
run: npm ci
working-directory: tools

- name: Test Algolia indexing
run: npm run test:algolia
working-directory: tools

- name: Verify Hugo modules
run: hugo mod verify

- name: Build Hugo site
run: hugo --gc --minify --cleanDestinationDir --environment production

- name: Validate Algolia records
run: npm run algolia:index -- --dry-run
working-directory: tools

- name: Install XML validation tools
run: sudo apt-get update && sudo apt-get install --yes libxml2-utils

- name: Validate generated output
run: |
test "$(cat public/CNAME)" = "precice.org"
test -s public/feed.xml
test -s public/sitemap.xml
test -s public/sitemap_index.xml
test -s public/robots.txt
grep -Fx 'Sitemap: https://precice.org/sitemap_index.xml' public/robots.txt
xmllint --noout \
public/feed.xml \
public/sitemap.xml \
public/sitemap_index.xml

- name: Upload Hugo site
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: site
path: website/_site
name: hugo-site
path: public
if-no-files-found: error
retention-days: 7
189 changes: 132 additions & 57 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,110 +1,185 @@
name: Build and deploy the website

on:
workflow_dispatch:
workflow_call:
push:
branches:
- master

permissions:
contents: read

concurrency:
group: website-deploy
cancel-in-progress: false # wait
group: production-pages
cancel-in-progress: false

env:
BASE_URL: "https://precice.org/"
GO_VERSION: "1.27.1"
HUGO_VERSION: "0.166.0"
DOXYGEN_VERSION: "1.14.0"
DOXYGEN_SHA256: "e5d6ae24d0bf3f0cdc4d8f146726b89ca323922f19441af99b1872d503665ad6"

jobs:
pre-commit:
name: pre-commit checks
name: Pre-commit checks
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- uses: actions/checkout@v6
- name: Setup python
uses: actions/setup-python@v6
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: '3.x'
python-version: "3.14"

- name: Cache pre-commit environments
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}

- name: Install pre-commit
run: python -m pip install "pre-commit==4.6.1"

- name: Run pre-commit
uses: pre-commit/action@v3.0.1
run: pre-commit run --all-files --show-diff-on-failure --color=always

build-deploy:
build:
name: Build production site
needs: pre-commit
runs-on: ubuntu-latest
timeout-minutes: 45

steps:
- name: Checkout website
uses: actions/checkout@v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
submodules: true
lfs: false
path: website
fetch-depth: 0 # full history required to determine last edit
submodules: false
lfs: false

- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: website/go.sum

- name: Set up Hugo
uses: peaceiris/actions-hugo@2752ce1d29631191ea3f27c23495fa06139a5b78 # v3
with:
hugo-version: ${{ env.HUGO_VERSION }}
extended: true

- name: Fetch - precice develop
uses: actions/checkout@v6
- name: Checkout preCICE develop
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: precice/precice
ref: develop
path: develop

- name: Fetch - precice main
uses: actions/checkout@v6
- name: Checkout preCICE main
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: precice/precice
ref: main
path: main
fetch-depth: 0
fetch-tags: true

- name: Patch doxyfiles
run: website/doxygen/patch.sh
- name: Patch Doxygen configuration
run: ./website/doxygen/patch.sh
env:
DOXYGEN_BASE_URL: "https://precice.org/doxygen"

- name: Install dependencies
- name: Install Doxygen dependencies
run: |
sudo apt-get -yyq update
sudo apt-get -yyq install graphviz plantuml

# Install latest doxygen binary
mkdir doxygen
curl -sL https://github.com/doxygen/doxygen/releases/download/Release_1_14_0/doxygen-1.14.0.linux.bin.tar.gz | tar -xz --strip-components=1 -C doxygen
readlink -f doxygen/bin >> $GITHUB_PATH

- name: Check doxygen version
run: doxygen --version

- name: Setup ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
working-directory: website
sudo apt-get update
sudo apt-get install --yes graphviz libxml2-utils plantuml

doxygen_archive="${RUNNER_TEMP}/doxygen-${DOXYGEN_VERSION}.tar.gz"
doxygen_dir="${RUNNER_TEMP}/doxygen-${DOXYGEN_VERSION}"
curl --fail --location --silent --show-error \
--output "${doxygen_archive}" \
"https://github.com/doxygen/doxygen/releases/download/Release_${DOXYGEN_VERSION//./_}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz"
echo "${DOXYGEN_SHA256} ${doxygen_archive}" | sha256sum --check --strict
mkdir -p "${doxygen_dir}"
tar --extract --gzip --file "${doxygen_archive}" --strip-components=1 --directory "${doxygen_dir}"
echo "${doxygen_dir}/bin" >> "${GITHUB_PATH}"

- name: Log tool versions
run: |
go version
hugo version
doxygen --version

- name: Fetch full history for submodules
- name: Verify Hugo modules
working-directory: website
run: git submodule foreach --recursive "git fetch --unshallow --all 2>/dev/null || git fetch --all"
run: hugo mod verify

- name: Build website
- name: Build Hugo site
working-directory: website
env:
JEKYLL_ENV: production
run: bundle exec jekyll build
run: hugo --gc --minify --cleanDestinationDir --environment production --baseURL "${BASE_URL}"

- name: Build doxygen - develop
- name: Build Doxygen for develop
working-directory: develop
run: doxygen
env:
PLANTUML_JAR_PATH: /usr/share/plantuml/plantuml.jar
run: doxygen

- name: Build doxygen - main
- name: Build Doxygen for main
working-directory: main
run: doxygen
env:
PLANTUML_JAR_PATH: /usr/share/plantuml/plantuml.jar
run: doxygen

- name: Assemble website
- name: Assemble site
run: |
mv website/_site public
mv develop/docs/source-code-documentation/html public/doxygen/develop
mv main/docs/source-code-documentation/html public/doxygen/main
mkdir -p website/public/doxygen
mv develop/docs/source-code-documentation/html website/public/doxygen/develop
mv main/docs/source-code-documentation/html website/public/doxygen/main

- name: List website files
run: find public

- name: Deploy
uses: peaceiris/actions-gh-pages@v4
- name: Validate assembled site
run: |
test -s website/public/index.html
test "$(cat website/public/CNAME)" = "precice.org"
test -s website/public/feed.xml
test -s website/public/sitemap.xml
test -s website/public/sitemap_index.xml
test -s website/public/robots.txt
test -s website/public/doxygen/develop/index.html
test -s website/public/doxygen/main/index.html
test -s website/public/doxygen/main/sitemap.xml
grep -Fx 'Sitemap: https://precice.org/sitemap_index.xml' website/public/robots.txt
xmllint --noout \
website/public/feed.xml \
website/public/sitemap.xml \
website/public/sitemap_index.xml \
website/public/doxygen/main/sitemap.xml

- name: Upload Pages artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5
with:
github_token: ${{ secrets.JEKYLL_PAT }}
publish_dir: ./public
path: website/public

deploy:
name: Deploy production site
if: github.ref == 'refs/heads/master'
needs: build
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5
Loading