Migrate git-scm.com to a static site, generated via Hugo, served via GitHub Pages #318
Workflow file for this run
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: CI | |
on: [pull_request] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: configure Hugo and Pagefind version | |
run: | | |
set -x && | |
echo "HUGO_VERSION=$(sed -n 's/^ *hugo_version: *//p' <hugo.yml)" >>$GITHUB_ENV | |
echo "PAGEFIND_VERSION=$(sed -n 's/^ *pagefind_version: *//p' <hugo.yml)" >>$GITHUB_ENV | |
- name: install Hugo ${{ env.HUGO_VERSION }} | |
run: | | |
set -x && | |
curl -Lo /tmp/hugo.deb https://github.com/gohugoio/hugo/releases/download/v$HUGO_VERSION/hugo_extended_${HUGO_VERSION}_linux-amd64.deb && | |
sudo dpkg -i /tmp/hugo.deb | |
- name: run Hugo to build the pages | |
run: hugo | |
- name: ensure that there are no absolute URLs | |
run: | | |
set -x | |
if git grep --untracked --no-exclude-standard "\\(href\|src\) *= *[\"']/" \ | |
-- public/ ':^public/js/jquery*' >/tmp/abs-urls.txt | |
then | |
cat /tmp/abs-urls.txt | |
exit 1 | |
fi | |
- name: run Pagefind ${{ env.PAGEFIND_VERSION }} to build the search index | |
run: npx -y pagefind@${{ env.PAGEFIND_VERSION }} --site public | |
- name: build tar archive | |
run: cd public && tar czvf ../pages.tar.gz * | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pages | |
path: pages.tar.gz | |
- name: verify search results | |
run: | | |
set -x | |
res=0 | |
for term in commit config log rev-parse | |
do | |
node ./script/run-pagefind.js "$term" | tee search.results >&2 | |
grep "^1. /docs/git-$term\\.html" search.results || { | |
echo "::error::Search for $term failed to show the manual page first" >&2 | |
res=1 | |
} | |
done | |
exit $res | |
- name: check for broken links | |
id: lychee | |
uses: lycheeverse/lychee-action@d4128702eae98bbc5ecf74df0165a8156c80920a # until an official version is out that includes https://github.com/lycheeverse/lychee/pull/1422 | |
with: | |
lycheeVersion: nightly # until an official version includes https://github.com/lycheeverse/lychee/pull/1422 | |
args: >- | |
--offline | |
--fallback-extensions html | |
--exclude file:///path/to/repo.git/ | |
--exclude file:///caminho/para/o/reposit%C3%B3rio.git/ | |
--exclude file:///ruta/a/repositorio.git/ | |
--exclude file:///sl%C3%B3%C3%B0/til/hirsla.git/ | |
--exclude file:///Pfad/zum/Repo.git/ | |
--exclude file:///chemin/du/d%C3%A9p%C3%B4t.git/ | |
--exclude file:///srv/git/project.git | |
public/ | |
output: lychee.md | |
jobSummary: true | |
- name: Install @playwright/test | |
run: npm install @playwright/test | |
- name: Run Playwright tests | |
env: | |
PLAYWRIGHT_TEST_URL: http://localhost:5000/ | |
run: npx playwright test --project=chrome |