From 0943a225e11236d8eec45b19aae0782677f12aa7 Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 10:40:04 -0400 Subject: [PATCH 01/14] add workflow to generate and commit HTML --- .github/workflows/html.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/html.yml diff --git a/.github/workflows/html.yml b/.github/workflows/html.yml new file mode 100644 index 00000000000..38c75a8643d --- /dev/null +++ b/.github/workflows/html.yml @@ -0,0 +1,37 @@ +name: Generate HTML + +on: + push: + branches: + - asf-site + pull_request: + branches: + - asf-site + +jobs: + build: + name: generate HTML and commit to asf-site + if: "!contains(github.event.head_commit.message, '[html]')" + runs-on: ubuntu-24.04 + steps: + - name: Checkout Spark Website repository + uses: actions/checkout@v7 + - name: Set up Ruby and Bundler + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.4' + bundler-cache: true + - name: Run documentation build + run: bundle exec jekyll build + - name: Commit and push generated HTML + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add site/ + if git diff --cached --quiet; then + echo "No changes to commit." + else + COMMIT_TITLE=$(git log -1 --pretty=%s) + git commit -m "[html] $COMMIT_TITLE" + git push + fi From 19e05f41869f8991e69c9d42ecce1a156ce3b08e Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 10:53:30 -0400 Subject: [PATCH 02/14] ignore `site/` --- .github/workflows/html.yml | 5 ++++- .gitignore | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/html.yml b/.github/workflows/html.yml index 38c75a8643d..ac0f8f4ef3c 100644 --- a/.github/workflows/html.yml +++ b/.github/workflows/html.yml @@ -4,6 +4,8 @@ on: push: branches: - asf-site + + # TODO: Remove after testing. pull_request: branches: - asf-site @@ -27,7 +29,8 @@ jobs: run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git add site/ + # `-f` because we told git to otherwise ignore `site/` + git add -f site/ if git diff --cached --quiet; then echo "No changes to commit." else diff --git a/.gitignore b/.gitignore index d0d5f1c2673..90ef9e92051 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ target/ .jekyll-cache/ .jekyll-metadata .local_ruby_bundle -site/python +site/ From 8bebf646fc216481c4965d3911a96aad8c20890f Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 12:55:07 -0400 Subject: [PATCH 03/14] allow pushes on my branch for testing --- .github/workflows/html.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/html.yml b/.github/workflows/html.yml index ac0f8f4ef3c..f740d971252 100644 --- a/.github/workflows/html.yml +++ b/.github/workflows/html.yml @@ -4,17 +4,16 @@ on: push: branches: - asf-site - - # TODO: Remove after testing. - pull_request: - branches: - - asf-site + # TODO: Remove after testing. + - automated-html jobs: build: name: generate HTML and commit to asf-site if: "!contains(github.event.head_commit.message, '[html]')" runs-on: ubuntu-24.04 + permissions: + contents: write steps: - name: Checkout Spark Website repository uses: actions/checkout@v7 From eb4acbfa4d28248fb10a07b621cc8a8d3b0ebbf3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 1 Jul 2026 16:58:13 +0000 Subject: [PATCH 04/14] [html] allow pushes on my branch for testing --- site/sitemap.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/site/sitemap.xml b/site/sitemap.xml index 3ef7e411a11..49c3e309790 100644 --- a/site/sitemap.xml +++ b/site/sitemap.xml @@ -1213,7 +1213,7 @@ weekly - https://spark.apache.org/spark-connect/ + https://spark.apache.org/sql/ weekly @@ -1221,19 +1221,19 @@ weekly - https://spark.apache.org/graphx/ + https://spark.apache.org/streaming/ weekly - https://spark.apache.org/mllib/ + https://spark.apache.org/graphx/ weekly - https://spark.apache.org/streaming/ + https://spark.apache.org/spark-connect/ weekly - https://spark.apache.org/news/ + https://spark.apache.org/mllib/ weekly @@ -1241,7 +1241,7 @@ weekly - https://spark.apache.org/sql/ + https://spark.apache.org/news/ weekly From 4053a0582853b78b8acc07e346acc1d632d44fcf Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 13:34:37 -0400 Subject: [PATCH 05/14] make sitemap generation more deterministic --- sitemap.xml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sitemap.xml b/sitemap.xml index 257359ef91c..e4e541638e5 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -151,9 +151,18 @@ sitemap: false weekly {% endfor %} -{% for page in site.pages %}{% if page.sitemap != false %} +{% comment %} +Explicitly sort `site.pages` so that the order is consistent and we don't get spurious git diffs. +`site.posts` doesn't have this issue because it's already sorted. +See: https://jekyllrb.com/docs/variables/#site-variables +{% endcomment %} +{% assign sorted_pages = site.pages | sort: "url" %} +{% for page in sorted_pages %} +{% if page.sitemap != false %} + {{ site.url }}{{ page.url }} weekly -{% endif %} + +{% endif %} {% endfor %} From edaf0e308c0651fd27310866e5db3e1ee5db19a5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 1 Jul 2026 17:37:56 +0000 Subject: [PATCH 06/14] [html] make sitemap generation more deterministic --- site/sitemap.xml | 128 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 109 insertions(+), 19 deletions(-) diff --git a/site/sitemap.xml b/site/sitemap.xml index 49c3e309790..62d50e5fa73 100644 --- a/site/sitemap.xml +++ b/site/sitemap.xml @@ -1164,122 +1164,212 @@ weekly + + + + + + https://spark.apache.org/ + weekly + + + + https://spark.apache.org/404.html weekly + + + https://spark.apache.org/committers.html weekly + + + https://spark.apache.org/community.html weekly + + + https://spark.apache.org/contributing.html weekly + + + https://spark.apache.org/developer-tools.html weekly + + + https://spark.apache.org/documentation.html weekly + + + https://spark.apache.org/downloads.html weekly + + + https://spark.apache.org/error-message-guidelines.html weekly + + + https://spark.apache.org/examples.html weekly + + + https://spark.apache.org/faq.html weekly + + + - https://spark.apache.org/history.html - weekly - - - https://spark.apache.org/improvement-proposals.html + https://spark.apache.org/graphx/ weekly + + + - https://spark.apache.org/sql/ + https://spark.apache.org/history.html weekly + + + - https://spark.apache.org/pandas-on-spark/ + https://spark.apache.org/improvement-proposals.html weekly + + + - https://spark.apache.org/streaming/ + https://spark.apache.org/mailing-lists.html weekly + + + - https://spark.apache.org/graphx/ + https://spark.apache.org/mllib/ weekly + + + - https://spark.apache.org/spark-connect/ + https://spark.apache.org/news/ weekly + + + - https://spark.apache.org/mllib/ + https://spark.apache.org/pandas-on-spark/ weekly + + + - https://spark.apache.org/screencasts/ + https://spark.apache.org/powered-by.html weekly + + + - https://spark.apache.org/news/ + https://spark.apache.org/release-process.html weekly + + + - https://spark.apache.org/ + https://spark.apache.org/research.html weekly + + + - https://spark.apache.org/mailing-lists.html + https://spark.apache.org/screencasts/ weekly + + + - https://spark.apache.org/powered-by.html + https://spark.apache.org/security.html weekly + + + + + - https://spark.apache.org/release-process.html + https://spark.apache.org/spark-connect/ weekly + + + - https://spark.apache.org/research.html + https://spark.apache.org/sql/ weekly + + + - https://spark.apache.org/security.html + https://spark.apache.org/streaming/ weekly + + https://spark.apache.org/third-party-projects.html weekly + + + https://spark.apache.org/trademarks.html weekly + + + https://spark.apache.org/versioning-policy.html weekly + From ed18d51412a5e4d80385de69ff18407ad744a5e0 Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 13:48:01 -0400 Subject: [PATCH 07/14] eliminate extraneous whitespace --- sitemap.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sitemap.xml b/sitemap.xml index e4e541638e5..71fb8b093dc 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -151,18 +151,18 @@ sitemap: false weekly {% endfor %} -{% comment %} +{%- comment -%} Explicitly sort `site.pages` so that the order is consistent and we don't get spurious git diffs. `site.posts` doesn't have this issue because it's already sorted. See: https://jekyllrb.com/docs/variables/#site-variables -{% endcomment %} -{% assign sorted_pages = site.pages | sort: "url" %} -{% for page in sorted_pages %} -{% if page.sitemap != false %} +{%- endcomment -%} +{%- assign sorted_pages = site.pages | sort: "url" -%} +{%- for page in sorted_pages -%} +{%- if page.sitemap != false -%} {{ site.url }}{{ page.url }} weekly {% endif %} -{% endfor %} +{%- endfor -%} From 3579f8448116401f576df1d8ab18eb1c2a3cb972 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 1 Jul 2026 17:50:11 +0000 Subject: [PATCH 08/14] [html] eliminate extraneous whitespace --- site/sitemap.xml | 93 ------------------------------------------------ 1 file changed, 93 deletions(-) diff --git a/site/sitemap.xml b/site/sitemap.xml index 62d50e5fa73..19f2ddf2f1d 100644 --- a/site/sitemap.xml +++ b/site/sitemap.xml @@ -1163,213 +1163,120 @@ https://spark.apache.org/releases/spark-release-0-3.html weekly - - - - - https://spark.apache.org/ weekly - - - https://spark.apache.org/404.html weekly - - - https://spark.apache.org/committers.html weekly - - - https://spark.apache.org/community.html weekly - - - https://spark.apache.org/contributing.html weekly - - - https://spark.apache.org/developer-tools.html weekly - - - https://spark.apache.org/documentation.html weekly - - - https://spark.apache.org/downloads.html weekly - - - https://spark.apache.org/error-message-guidelines.html weekly - - - https://spark.apache.org/examples.html weekly - - - https://spark.apache.org/faq.html weekly - - - https://spark.apache.org/graphx/ weekly - - - https://spark.apache.org/history.html weekly - - - https://spark.apache.org/improvement-proposals.html weekly - - - https://spark.apache.org/mailing-lists.html weekly - - - https://spark.apache.org/mllib/ weekly - - - https://spark.apache.org/news/ weekly - - - https://spark.apache.org/pandas-on-spark/ weekly - - - https://spark.apache.org/powered-by.html weekly - - - https://spark.apache.org/release-process.html weekly - - - https://spark.apache.org/research.html weekly - - - https://spark.apache.org/screencasts/ weekly - - - https://spark.apache.org/security.html weekly - - - - - https://spark.apache.org/spark-connect/ weekly - - - https://spark.apache.org/sql/ weekly - - - https://spark.apache.org/streaming/ weekly - - - https://spark.apache.org/third-party-projects.html weekly - - - https://spark.apache.org/trademarks.html weekly - - - https://spark.apache.org/versioning-policy.html weekly - - From fd110d9c7b9148750889148f29243d52e7b5cd03 Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 14:03:42 -0400 Subject: [PATCH 09/14] remove content/ symlink --- _config.yml | 2 +- content | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 120000 content diff --git a/_config.yml b/_config.yml index 98f05068c08..5e5be4c0c88 100644 --- a/_config.yml +++ b/_config.yml @@ -4,6 +4,6 @@ kramdown: entity_output: symbol permalink: none destination: site -exclude: ['README.md', 'content', 'LICENSE', 'merge_pr.py', 'Gemfile', 'Gemfile.lock'] +exclude: ['README.md', 'LICENSE', 'merge_pr.py', 'Gemfile', 'Gemfile.lock'] keep_files: ['docs', 'static', 'llms.txt'] url: https://spark.apache.org diff --git a/content b/content deleted file mode 120000 index d97e1006371..00000000000 --- a/content +++ /dev/null @@ -1 +0,0 @@ -site \ No newline at end of file From 8f290c86fbdc6097244f5da3811fbb381dcda143 Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 14:22:00 -0400 Subject: [PATCH 10/14] update docs on building site --- .github/CONTRIBUTING.md | 4 +++- .github/PULL_REQUEST_TEMPLATE.md | 1 - README.md | 28 ++++++++++------------------ 3 files changed, 13 insertions(+), 20 deletions(-) delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 7b5dc0b3487..2309159edc2 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1 +1,3 @@ -Make sure that you generate site HTML with `jekyll build`, and include the changes to the HTML in your pull request also. See README.md for more information. +Build and test your changes locally according to the instructions in [README](../README.md). + +Once you've done that, submit a pull request with your changes. You only need to commit your changes to the source. A GitHub Actions workflow will [generate the corresponding HTML and push it for you](./workflows/html.yml). diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 9e1ffb348a5..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/README.md b/README.md index bef477a201f..7b776039361 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,12 @@ -## Generating the website HTML +# Apache Spark Main Website + +This repository captures the main Apache Spark website located at https://spark.apache.org. The programming docs are [in the main Spark repo][1], not here. + +[1]: https://github.com/apache/spark/tree/master/docs + +To contribute changes, see [CONTRIBUTING](.github/CONTRIBUTING.md). + +## Generating the website HTML locally In this directory you will find text files formatted using Markdown, with an `.md` suffix. @@ -28,22 +36,6 @@ of Spark from the Spark source repository and then copied to the website under t directory. See the instructions for building those in the readme in the Spark project's `/docs` directory. -## Rouge and Pygments - -We also use [Rouge](https://github.com/rouge-ruby/rouge) for syntax highlighting in documentation Markdown pages. -Its HTML output is compatible with CSS files designed for [Pygments](https://pygments.org/). - -To mark a block of code in your Markdown to be syntax highlighted by `jekyll` during the -compile phase, use the following syntax: - - {% highlight scala %} - // Your Scala code goes here, you can replace Scala with many other - // supported languages too. - {% endhighlight %} - -You probably don't need to install that unless you want to regenerate the Pygments CSS file. -It requires Python, and can be installed by running `sudo easy_install Pygments`. - ## Merge PR -To merge pull request, use the `merge_pr.py` script which also squashes the commits. +To merge a pull request, use the `merge_pr.py` script. This script also squashes the commits. From b4f7a69430a7b27f146932b444552e27bed39360 Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 14:42:00 -0400 Subject: [PATCH 11/14] split pr vs asf-site workflows --- .github/CONTRIBUTING.md | 2 +- .github/workflows/doc_gen.yml | 76 ------------------- .github/workflows/html-build.yml | 21 +++++ .github/workflows/{html.yml => html-push.yml} | 6 +- 4 files changed, 25 insertions(+), 80 deletions(-) delete mode 100644 .github/workflows/doc_gen.yml create mode 100644 .github/workflows/html-build.yml rename .github/workflows/{html.yml => html-push.yml} (92%) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 2309159edc2..331024f2451 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,3 +1,3 @@ Build and test your changes locally according to the instructions in [README](../README.md). -Once you've done that, submit a pull request with your changes. You only need to commit your changes to the source. A GitHub Actions workflow will [generate the corresponding HTML and push it for you](./workflows/html.yml). +Once you've done that, submit a pull request with your changes. You only need to commit your changes to the source. A GitHub Actions workflow will [generate the corresponding HTML and push it for you](./workflows/html-push.yml). diff --git a/.github/workflows/doc_gen.yml b/.github/workflows/doc_gen.yml deleted file mode 100644 index 01478f92735..00000000000 --- a/.github/workflows/doc_gen.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Check document generation - -on: - push: - branches: - - asf-site - pull_request: - branches: - - asf-site - -jobs: - lint: - name: check whether all documentation was generated with the right Jekyll version - runs-on: ubuntu-24.04 - steps: - - name: Free up disk space - shell: 'script -q -e -c "bash {0}"' - run: | - echo "==================================" - echo "Free up disk space on CI system" - echo "==================================" - - echo "Listing top 100 largest packages (from large to small)" - printf "Installed-Size\tPackage\n" - dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n -r | head -n 100 - df -h - - echo "Removing large packages" - rm -rf /__t/CodeQL - rm -rf /__t/go - rm -rf /__t/node - - apt-get remove --purge -y '^aspnet.*' || true - apt-get remove --purge -y '^dotnet-.*' || true - apt-get remove --purge -y '^llvm-.*' || true - apt-get remove --purge -y 'php.*' || true - apt-get remove --purge -y '^mongodb-.*' || true - apt-get remove --purge -y 'gfortran-11' || true - apt-get remove --purge -y 'humanity-icon-theme' || true - apt-get remove --purge -y 'nodejs-doc' || true - apt-get remove --purge -y snapd google-chrome-stable microsoft-edge-stable firefox || true - apt-get remove --purge -y azure-cli google-cloud-sdk mono-devel powershell libgl1-mesa-dri || true - apt-get autoremove --purge -y - apt-get clean - - df -h - - name: Checkout Spark Website repository - uses: actions/checkout@v2 - - name: Install dependencies for documentation generation - run: | - sudo apt-get update -y - sudo apt-get install -y ruby ruby-dev - sudo gem install bundler --version 2.4.19 - bundle install - - name: Run documentation build - run: | - export LC_ALL=C.UTF-8 - export LANG=C.UTF-8 - OLD_IFS=$IFS - IFS= - GEN_ERRORS=$(bundle exec jekyll build 3>&2 2>&1 1>&3) - if [ $(echo $GEN_ERRORS| grep -v -e '^$'| grep -c -v "rubygems_integration") -ne 0 ]; then - echo "Error during document generation:" - echo $GEN_ERRORS - exit 1 - fi - IFS=$OLD_IFS - CHANGED_FILE=( $(git ls-files --modified --other --exclude-standard --directory | grep -v sitemap.xml | grep -v llms.txt) ) - if [ ${#CHANGED_FILE[@]} -ne 0 ]; then - echo "Not all documentation was generated and/or not the right Jekyll version was used! Modified / untracked files (excluding sitemap.xml):" - echo ${CHANGED_FILE[*]} - echo "Git diff (excluding sitemap.xml):" - git diff -- . ':(exclude)site/sitemap.xml' - exit 1 - fi - shell: /bin/bash {0} diff --git a/.github/workflows/html-build.yml b/.github/workflows/html-build.yml new file mode 100644 index 00000000000..a0ad1746c2c --- /dev/null +++ b/.github/workflows/html-build.yml @@ -0,0 +1,21 @@ +name: Build HTML + +on: + pull_request: + branches: + - asf-site + +jobs: + build: + name: build HTML + runs-on: ubuntu-24.04 + steps: + - name: Checkout Spark Website repository + uses: actions/checkout@v7 + - name: Set up Ruby and Bundler + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.4' + bundler-cache: true + - name: Run documentation build + run: bundle exec jekyll build diff --git a/.github/workflows/html.yml b/.github/workflows/html-push.yml similarity index 92% rename from .github/workflows/html.yml rename to .github/workflows/html-push.yml index f740d971252..8b2ae1658ff 100644 --- a/.github/workflows/html.yml +++ b/.github/workflows/html-push.yml @@ -1,4 +1,4 @@ -name: Generate HTML +name: Generate and Push HTML on: push: @@ -8,8 +8,8 @@ on: - automated-html jobs: - build: - name: generate HTML and commit to asf-site + commit: + name: build and commit HTML to asf-site if: "!contains(github.event.head_commit.message, '[html]')" runs-on: ubuntu-24.04 permissions: From 9000cfd438648ed211c3fc1b710de25ca17e7249 Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Wed, 1 Jul 2026 14:58:35 -0400 Subject: [PATCH 12/14] clarify purpose of workflow condition --- .github/workflows/html-push.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/html-push.yml b/.github/workflows/html-push.yml index 8b2ae1658ff..7c15a1ab7be 100644 --- a/.github/workflows/html-push.yml +++ b/.github/workflows/html-push.yml @@ -1,4 +1,4 @@ -name: Generate and Push HTML +name: Build and Push HTML on: push: @@ -9,7 +9,9 @@ on: jobs: commit: - name: build and commit HTML to asf-site + name: Build and commit HTML to `asf-site` + # This condition is important. We don't want to trigger this job if the last + # commit was created _by_ this job! if: "!contains(github.event.head_commit.message, '[html]')" runs-on: ubuntu-24.04 permissions: From c8a37b3a25c200a4a92ddc6ef2d8a98971570a79 Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Thu, 2 Jul 2026 12:59:09 -0400 Subject: [PATCH 13/14] capitalization --- .github/workflows/html-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/html-build.yml b/.github/workflows/html-build.yml index a0ad1746c2c..87cd791bc75 100644 --- a/.github/workflows/html-build.yml +++ b/.github/workflows/html-build.yml @@ -7,7 +7,7 @@ on: jobs: build: - name: build HTML + name: Build HTML runs-on: ubuntu-24.04 steps: - name: Checkout Spark Website repository From 6eab236e822a55edc2bf3f834bf359cb6c2bca0c Mon Sep 17 00:00:00 2001 From: Nicholas Chammas Date: Thu, 2 Jul 2026 23:42:55 -0400 Subject: [PATCH 14/14] add concurrency group --- .github/workflows/html-push.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/html-push.yml b/.github/workflows/html-push.yml index 7c15a1ab7be..3cf5662cab7 100644 --- a/.github/workflows/html-push.yml +++ b/.github/workflows/html-push.yml @@ -13,6 +13,11 @@ jobs: # This condition is important. We don't want to trigger this job if the last # commit was created _by_ this job! if: "!contains(github.event.head_commit.message, '[html]')" + # Not technically necessary, but helps avoid spurious failures if multiple + # commits are pushed in rapid succession. + concurrency: + group: html-push-${{ github.ref }} + cancel-in-progress: true runs-on: ubuntu-24.04 permissions: contents: write