From 9d036333c9729a0959489ff584aeab322c5c830e Mon Sep 17 00:00:00 2001 From: Samir B Amin Date: Sat, 14 Feb 2026 19:40:05 -0500 Subject: [PATCH 1/2] wip: upgrade with pagefind --- Dockerfile | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3333d73..b33c033 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,8 +10,8 @@ FROM ruby:3.3.7 ARG TARGETPLATFORM ## NOTE: installing beta version of mkdocs-material with blog support. -LABEL version="1.5.8" \ - mode="sitebuilder-1.5.8" \ +LABEL version="1.5.9" \ + mode="sitebuilder-1.5.9" \ author="Samirkumar Amin" \ description="docker image to build jekyll, hugo or mkdocs supported website" \ website="https://github.com/sbamin/sitebuilder" \ @@ -38,9 +38,10 @@ RUN apt-get update && \ ENV LC_ALL="C.UTF-8" ENV LANG="en_US.UTF-8" ENV LANGUAGE="en_US.UTF-8" -ENV myhugo="0.153.2" -ENV mygo="1.25.5" -ENV mydartsass="1.97.1" +ENV myhugo="0.155.3" +ENV mygo="1.26.0" +ENV mydartsass="1.97.3" +ENV mypagefind="v1.5.0-beta.1" #### Python 3 venv #### # Create and activate a Python virtual environment @@ -54,20 +55,21 @@ ENV PATH="/opt/venv/bin:$PATH" ## This may differ based on gems and plugins used COPY Gemfile /tmp/ +## jekyll setup RUN mkdir -p /scratch && \ mv /tmp/Gemfile /scratch/ && \ cd /scratch && \ bundle install && \ mkdir -p /web -#### git #### +## git RUN apt-get install -y python3-launchpadlib && \ add-apt-repository ppa:git-core/ppa && \ apt-get update && \ apt-get install -y python3-launchpadlib git && \ git --version -#### Hugo, MkDocs, and theme-mkdocs-material #### +#### MkDocs, mkdocs-material, hugo #### ## https://github.com/squidfunk/mkdocs-material ## issue with Hash Sum mismatch RUN rm -rf /var/lib/apt/lists/partial && \ @@ -77,18 +79,16 @@ RUN rm -rf /var/lib/apt/lists/partial && \ pip3 install --upgrade singledispatch nltk six && \ pip3 install markdown pygments fontawesome_markdown pymdown-extensions && \ pip3 install "mkdocs-material[imaging,recommended,git]" && \ - pip3 install mkdocs mkdocs-material mkdocs-git-revision-date-plugin mkdocs-git-revision-date-localized-plugin mkdocs-minify-plugin mkdocs-redirects pymdown-extensions mkdocs-macros-plugin mike mkdocs-git-authors-plugin mkdocs-glightbox && \ + pip3 install mkdocs mkdocs-material mkdocs-git-revision-date-plugin mkdocs-git-revision-date-localized-plugin mkdocs-minify-plugin mkdocs-redirects pymdown-extensions mkdocs-macros-plugin mike mkdocs-git-authors-plugin mkdocs-glightbox mkdocstrings mkdocstrings-python mkdocstrings-shell mkquartodocs && \ ## force update mkdocs env pip3 install --upgrade "mkdocs-material[imaging,recommended,git]" && \ pip3 install --upgrade markdown pygments fontawesome_markdown pymdown-extensions && \ - pip3 install --upgrade mkdocs mkdocs-material mkdocs-git-revision-date-plugin mkdocs-git-revision-date-localized-plugin mkdocs-minify-plugin mkdocs-redirects pymdown-extensions mkdocs-macros-plugin mike mkdocs-git-authors-plugin mkdocs-glightbox mkdocstrings mkdocstrings-python mkdocstrings-shell && \ - git config --global --add safe.directory /web - -## install latest hugo extended, including GO -## requires OS arch variable -RUN case "$TARGETPLATFORM" in \ - "linux/amd64") ARCH="amd64"; ARCH2="x64" ;; \ - "linux/arm64") ARCH="arm64"; ARCH2="arm64" ;; \ + pip3 install --upgrade mkdocs mkdocs-material mkdocs-git-revision-date-plugin mkdocs-git-revision-date-localized-plugin mkdocs-minify-plugin mkdocs-redirects pymdown-extensions mkdocs-macros-plugin mike mkdocs-git-authors-plugin mkdocs-glightbox mkdocstrings mkdocstrings-python mkdocstrings-shell mkquartodocs && \ + git config --global --add safe.directory /web && \ + ## install latest hugo extended, including GO, dart-sass, and pagefind + case "$TARGETPLATFORM" in \ + "linux/amd64") ARCH="amd64"; ARCH2="x64"; ARCH3="x86_64" ;; \ + "linux/arm64") ARCH="arm64"; ARCH2="arm64"; ARCH3="aarch64" ;; \ *) echo "Unsupported architecture: $TARGETPLATFORM" && exit 1 ;; \ esac && \ echo "Building for ARCH=$ARCH" && \ @@ -105,6 +105,9 @@ RUN case "$TARGETPLATFORM" in \ chmod 775 /opt/dart && \ tar -C /opt/dart -xvzf dart-sass-${mydartsass}-linux-${ARCH2}-musl.tar.gz && \ mv -f /opt/dart/dart-sass /opt/dart/bin && \ + ## install pagefid + cd /usr/local/bin && \ + curl -sL https://github.com/Pagefind/pagefind/releases/download/${mypagefind}/pagefind-${mypagefind}-${ARCH3}-unknown-linux-musl.tar.gz | tar xz && chmod 755 pagefind && \ apt-get clean && \ rm -f go${mygo}.linux-${ARCH}.tar.gz && \ rm -f dart-sass-${mydartsass}-linux-${ARCH2}-musl.tar.gz && \ From ec59ac5d43d180a06b692f469e1294108c332d55 Mon Sep 17 00:00:00 2001 From: Samir B Amin Date: Sat, 14 Feb 2026 20:14:04 -0500 Subject: [PATCH 2/2] Updated sitebuilder v1.5.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ✨ added pagefind search - 🙅‍♂️ mkquartodocs plugin is not functional - prefer running quarto docs locally and copy generated md or html to sitebuilder ## amd64 jekyll 3.10.0 hugo v0.155.3-8a858213b73907e823e2be2b5640a0ce4c04d295+extended linux/amd64 BuildDate=2026-02-08T16:40:42Z VendorInfo=gohugoio git version 2.39.5 go version go1.26.0 linux/amd64 mkdocs 1.6.1 mkdocs-autorefs 1.4.4 mkdocs-get-deps 0.2.0 mkdocs-git-authors-plugin 0.10.0 mkdocs-git-committers-plugin-2 2.5.0 mkdocs-git-revision-date-localized-plugin 1.5.1 mkdocs-git-revision-date-plugin 0.3.2 mkdocs-glightbox 0.5.2 mkdocs-macros-plugin 1.5.0 mkdocs-material 9.7.1 mkdocs-material-extensions 1.3.1 mkdocs-minify-plugin 0.8.0 mkdocs-redirects 1.2.2 mkdocs-rss-plugin 1.17.9 mkdocstrings 1.0.3 mkdocstrings-python 2.0.2 mkdocstrings-shell 1.0.4 mkquartodocs 0.7.0 pagefind 1.5.0-beta.1 Ruby Sass 3.7.4 ## arm64 jekyll 3.10.0 hugo v0.155.3-8a858213b73907e823e2be2b5640a0ce4c04d295+extended linux/arm64 BuildDate=2026-02-08T16:40:42Z VendorInfo=gohugoio git version 2.39.5 go version go1.26.0 linux/arm64 mkdocs 1.6.1 mkdocs-autorefs 1.4.4 mkdocs-get-deps 0.2.0 mkdocs-git-authors-plugin 0.10.0 mkdocs-git-committers-plugin-2 2.5.0 mkdocs-git-revision-date-localized-plugin 1.5.1 mkdocs-git-revision-date-plugin 0.3.2 mkdocs-glightbox 0.5.2 mkdocs-macros-plugin 1.5.0 mkdocs-material 9.7.1 mkdocs-material-extensions 1.3.1 mkdocs-minify-plugin 0.8.0 mkdocs-redirects 1.2.2 mkdocs-rss-plugin 1.17.9 mkdocstrings 1.0.3 mkdocstrings-python 2.0.2 mkdocstrings-shell 1.0.4 mkquartodocs 0.7.0 pagefind 1.5.0-beta.1 Ruby Sass 3.7.4 Signed-off-by: Samir B Amin --- Dockerfile | 80 +++++++++++++++++++++++-------------------- Gemfile.lock | 45 ++++++++++++------------ update_sitebuilder.md | 50 ++++++++++++++++----------- 3 files changed, 96 insertions(+), 79 deletions(-) diff --git a/Dockerfile b/Dockerfile index b33c033..b09fc0d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,17 +22,26 @@ LABEL version="1.5.9" \ ## https://stackoverflow.com/a/56569081/1243763 ARG DEBIAN_FRONTEND=noninteractive -#### Configure locales #### +#### Configure locales, python3, git (via PPA) #### ## https://github.com/jekyll/jekyll/issues/4268 RUN apt-get update && \ - apt-get install -y locales python3 python3-venv python3-distutils && \ - apt-get install -y software-properties-common && \ + apt-get install -y --no-install-recommends \ + locales \ + python3 \ + python3-venv \ + python3-distutils \ + python3-launchpadlib \ + software-properties-common && \ + add-apt-repository ppa:git-core/ppa && \ + apt-get update && \ + apt-get install -y --no-install-recommends git && \ dpkg-reconfigure --frontend noninteractive locales && \ locale-gen C.UTF-8 && \ /usr/sbin/update-locale LANG=C.UTF-8 && \ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && \ locale-gen && \ - apt-get clean + apt-get clean && \ + rm -rf /var/lib/apt/lists/* ## Set default locale ENV LC_ALL="C.UTF-8" @@ -46,7 +55,7 @@ ENV mypagefind="v1.5.0-beta.1" #### Python 3 venv #### # Create and activate a Python virtual environment RUN python3 -m venv /opt/venv && \ - /opt/venv/bin/pip install --upgrade pip setuptools wheel + /opt/venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel ENV PATH="/opt/venv/bin:$PATH" @@ -62,52 +71,49 @@ RUN mkdir -p /scratch && \ bundle install && \ mkdir -p /web -## git -RUN apt-get install -y python3-launchpadlib && \ - add-apt-repository ppa:git-core/ppa && \ - apt-get update && \ - apt-get install -y python3-launchpadlib git && \ - git --version - -#### MkDocs, mkdocs-material, hugo #### +#### MkDocs, mkdocs-material, and plugins #### ## https://github.com/squidfunk/mkdocs-material -## issue with Hash Sum mismatch -RUN rm -rf /var/lib/apt/lists/partial && \ - apt-get update -o Acquire::CompressionTypes::Order::=gz && \ - pip3 install --upgrade singledispatch nltk six && \ - ## force update packages if failed earlier - pip3 install --upgrade singledispatch nltk six && \ - pip3 install markdown pygments fontawesome_markdown pymdown-extensions && \ - pip3 install "mkdocs-material[imaging,recommended,git]" && \ - pip3 install mkdocs mkdocs-material mkdocs-git-revision-date-plugin mkdocs-git-revision-date-localized-plugin mkdocs-minify-plugin mkdocs-redirects pymdown-extensions mkdocs-macros-plugin mike mkdocs-git-authors-plugin mkdocs-glightbox mkdocstrings mkdocstrings-python mkdocstrings-shell mkquartodocs && \ - ## force update mkdocs env - pip3 install --upgrade "mkdocs-material[imaging,recommended,git]" && \ - pip3 install --upgrade markdown pygments fontawesome_markdown pymdown-extensions && \ - pip3 install --upgrade mkdocs mkdocs-material mkdocs-git-revision-date-plugin mkdocs-git-revision-date-localized-plugin mkdocs-minify-plugin mkdocs-redirects pymdown-extensions mkdocs-macros-plugin mike mkdocs-git-authors-plugin mkdocs-glightbox mkdocstrings mkdocstrings-python mkdocstrings-shell mkquartodocs && \ - git config --global --add safe.directory /web && \ - ## install latest hugo extended, including GO, dart-sass, and pagefind - case "$TARGETPLATFORM" in \ +RUN pip3 install --no-cache-dir \ + singledispatch nltk six \ + markdown pygments fontawesome_markdown pymdown-extensions \ + "mkdocs-material[imaging,recommended,git]" \ + mkdocs mkdocs-material \ + mkdocs-git-revision-date-plugin \ + mkdocs-git-revision-date-localized-plugin \ + mkdocs-minify-plugin \ + mkdocs-redirects \ + mkdocs-macros-plugin \ + mike \ + mkdocs-git-authors-plugin \ + mkdocs-glightbox \ + mkdocstrings mkdocstrings-python mkdocstrings-shell \ + mkquartodocs && \ + git config --global --add safe.directory /web + +## install latest hugo extended, including GO, dart-sass, and pagefind +## requires OS arch variable +RUN case "$TARGETPLATFORM" in \ "linux/amd64") ARCH="amd64"; ARCH2="x64"; ARCH3="x86_64" ;; \ "linux/arm64") ARCH="arm64"; ARCH2="arm64"; ARCH3="aarch64" ;; \ *) echo "Unsupported architecture: $TARGETPLATFORM" && exit 1 ;; \ esac && \ echo "Building for ARCH=$ARCH" && \ - wget https://github.com/gohugoio/hugo/releases/download/v${myhugo}/hugo_extended_${myhugo}_linux-${ARCH}.deb && \ + wget -q https://github.com/gohugoio/hugo/releases/download/v${myhugo}/hugo_extended_${myhugo}_linux-${ARCH}.deb && \ apt install ./hugo_extended_${myhugo}_linux-${ARCH}.deb -y && \ rm -f hugo_extended_${myhugo}_linux-${ARCH}.deb && \ - wget https://go.dev/dl/go${mygo}.linux-${ARCH}.tar.gz && \ - tar -C /usr/local -xvzf go${mygo}.linux-${ARCH}.tar.gz && \ + wget -q https://go.dev/dl/go${mygo}.linux-${ARCH}.tar.gz && \ + tar -C /usr/local -xzf go${mygo}.linux-${ARCH}.tar.gz && \ mkdir -p /opt/go/bin && \ chmod 775 /opt/go && \ chmod 775 /opt/go/bin && \ - wget https://github.com/sass/dart-sass/releases/download/${mydartsass}/dart-sass-${mydartsass}-linux-${ARCH2}-musl.tar.gz && \ + wget -q https://github.com/sass/dart-sass/releases/download/${mydartsass}/dart-sass-${mydartsass}-linux-${ARCH2}-musl.tar.gz && \ mkdir -p /opt/dart && \ chmod 775 /opt/dart && \ - tar -C /opt/dart -xvzf dart-sass-${mydartsass}-linux-${ARCH2}-musl.tar.gz && \ + tar -C /opt/dart -xzf dart-sass-${mydartsass}-linux-${ARCH2}-musl.tar.gz && \ mv -f /opt/dart/dart-sass /opt/dart/bin && \ - ## install pagefid - cd /usr/local/bin && \ - curl -sL https://github.com/Pagefind/pagefind/releases/download/${mypagefind}/pagefind-${mypagefind}-${ARCH3}-unknown-linux-musl.tar.gz | tar xz && chmod 755 pagefind && \ + ## install pagefind + curl -sL https://github.com/Pagefind/pagefind/releases/download/${mypagefind}/pagefind-${mypagefind}-${ARCH3}-unknown-linux-musl.tar.gz | tar xz -C /usr/local/bin && \ + chmod 755 /usr/local/bin/pagefind && \ apt-get clean && \ rm -f go${mygo}.linux-${ARCH}.tar.gz && \ rm -f dart-sass-${mydartsass}-linux-${ARCH2}-musl.tar.gz && \ diff --git a/Gemfile.lock b/Gemfile.lock index 4312475..ce12cbf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - activesupport (8.1.1) + activesupport (8.1.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) @@ -39,20 +39,20 @@ GEM ffi (>= 1.15.0) eventmachine (1.2.7) execjs (2.10.0) - faraday (2.14.0) + faraday (2.14.1) faraday-net_http (>= 2.0, < 3.5) json logger faraday-net_http (3.4.2) net-http (~> 0.5) - ffi (1.17.2-aarch64-linux-gnu) - ffi (1.17.2-aarch64-linux-musl) - ffi (1.17.2-arm-linux-gnu) - ffi (1.17.2-arm-linux-musl) - ffi (1.17.2-arm64-darwin) - ffi (1.17.2-x86_64-darwin) - ffi (1.17.2-x86_64-linux-gnu) - ffi (1.17.2-x86_64-linux-musl) + ffi (1.17.3-aarch64-linux-gnu) + ffi (1.17.3-aarch64-linux-musl) + ffi (1.17.3-arm-linux-gnu) + ffi (1.17.3-arm-linux-musl) + ffi (1.17.3-arm64-darwin) + ffi (1.17.3-x86_64-darwin) + ffi (1.17.3-x86_64-linux-gnu) + ffi (1.17.3-x86_64-linux-musl) forwardable-extended (2.6.0) gemoji (4.1.0) github-pages (232) @@ -224,13 +224,14 @@ GEM gemoji (>= 3, < 5) html-pipeline (~> 2.2) jekyll (>= 3.0, < 5.0) - json (2.18.0) + json (2.18.1) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.4) - listen (3.9.0) + listen (3.10.0) + logger rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) logger (1.7.0) @@ -239,32 +240,32 @@ GEM jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (6.0.0) + minitest (6.0.1) prism (~> 1.5) net-http (0.9.1) uri (>= 0.11.1) - nokogiri (1.18.10-aarch64-linux-gnu) + nokogiri (1.19.0-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.10-aarch64-linux-musl) + nokogiri (1.19.0-aarch64-linux-musl) racc (~> 1.4) - nokogiri (1.18.10-arm-linux-gnu) + nokogiri (1.19.0-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.18.10-arm-linux-musl) + nokogiri (1.19.0-arm-linux-musl) racc (~> 1.4) - nokogiri (1.18.10-arm64-darwin) + nokogiri (1.19.0-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.10-x86_64-darwin) + nokogiri (1.19.0-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.10-x86_64-linux-gnu) + nokogiri (1.19.0-x86_64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.10-x86_64-linux-musl) + nokogiri (1.19.0-x86_64-linux-musl) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) sawyer (~> 0.9) pathutil (0.16.2) forwardable-extended (~> 2.6) - prism (1.7.0) + prism (1.9.0) public_suffix (5.1.1) racc (1.8.1) rb-fsevent (0.11.2) diff --git a/update_sitebuilder.md b/update_sitebuilder.md index a5bee70..d4d917e 100644 --- a/update_sitebuilder.md +++ b/update_sitebuilder.md @@ -39,7 +39,7 @@ Here, I am using `docker buildx build` from [Docker Desktop v4.22.0 on mac os 15 ## replace --push with --load to load arch specific image locally docker buildx build \ --platform linux/arm64/v8,linux/amd64 \ - --tag sbamin/sitebuilder:1.5.8 \ + --tag sbamin/sitebuilder:1.5.9 \ --tag sbamin/sitebuilder:latest \ --push \ --file Dockerfile . @@ -68,10 +68,10 @@ exit ```sh ## we already pushed both, updated version and latest tag to docker -docker run --rm sbamin/sitebuilder /bin/bash -c "jekyll --version && hugo version && git version && go version && pip list | grep mkdocs" +docker run --rm sbamin/sitebuilder /bin/bash -c "jekyll --version && hugo version && git version && go version && pip list | grep -E 'mkdocs|quarto' && pagefind --version && sass --version" ## for non-os compliant OS, e.g., amd64 if using macos M2 -docker run --platform linux/amd64 --rm sbamin/sitebuilder /bin/bash -c "jekyll --version && hugo version && git version && go version && pip list | grep mkdocs" +docker run --platform linux/amd64 --rm sbamin/sitebuilder /bin/bash -c "jekyll --version && hugo version && git version && go version && pip list | grep -E 'mkdocs|quarto' && pagefind --version && sass --version" ``` ### Update github releases @@ -83,20 +83,24 @@ git add Dockerfile Gemfile Gemfile.lock update_sitebuilder.md README.md ## -s requires a valid gpg key for signing a message git commit -s -F- <