This is an automated email from the ASF dual-hosted git repository.
meonkeys pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/fineract-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 524a8d2 improve CI site generation job name and docs
524a8d2 is described below
commit 524a8d27e978546c665079461421d1d6732d77ac
Author: Adam Monsen <[email protected]>
AuthorDate: Tue Jul 14 12:22:52 2026 -0700
improve CI site generation job name and docs
I considered simplifying the logic under "# Prevent loops from bot
commits and restrict to upstream repo." I asked Claude (model=Sonnet 5,
effort=High) what it thought about that. Claude said:
GitHub's GITHUB_TOKEN already has built-in loop protection — pushes
made with the default GITHUB_TOKEN (which is what this workflow
uses, since there's no custom token: on the checkout step) don't
trigger new on: push runs at all. So technically both the actor !=
'github-actions[bot]' check and the [skip-generate] message check
are redundant with platform behavior today. That's not a bug, just
double insurance — it protects you if someone later swaps in a PAT
(which does retrigger workflows) without noticing they've silently
removed the loop protection. I'd call this defensible
belt-and-suspenders rather than "doesn't make sense."
If you want, I can simplify the condition (e.g. drop the actor check
and rely solely on the commit-message tag, or vice versa) — but let
me know which behavior you actually want before I touch it, since
either one is a legitimate design choice depending on how much you
trust the GITHUB_TOKEN guarantee to hold going forward.
PAT means Personal Access Token.
I didn't change the guard logic, just the matched string.
I didn't scour the docs to verify what Claude said is true, I just left
the code as-is since it appears to be working.
---
.../{site-publish.yml => generate-static-site.yml} | 16 ++++++++--------
CONTRIBUTING.md | 16 ++++++++++++----
README.md | 14 +-------------
3 files changed, 21 insertions(+), 25 deletions(-)
diff --git a/.github/workflows/site-publish.yml
b/.github/workflows/generate-static-site.yml
similarity index 81%
rename from .github/workflows/site-publish.yml
rename to .github/workflows/generate-static-site.yml
index d9a41d1..00f7aa5 100644
--- a/.github/workflows/site-publish.yml
+++ b/.github/workflows/generate-static-site.yml
@@ -1,4 +1,4 @@
-name: Site Publish
+name: Generate Static Site
on:
push:
@@ -10,13 +10,13 @@ permissions:
contents: write
concurrency:
- group: site-publish
+ group: generate-static-site
cancel-in-progress: false
jobs:
- publish:
- # Prevent publish loops from bot commits and restrict to upstream repo.
- if: github.repository == 'apache/fineract-site' && github.actor !=
'github-actions[bot]' && (github.event_name != 'push' ||
!contains(github.event.head_commit.message, '[skip-publish]'))
+ generate:
+ # Prevent loops from bot commits and restrict to upstream repo.
+ if: github.repository == 'apache/fineract-site' && github.actor !=
'github-actions[bot]' && (github.event_name != 'push' ||
!contains(github.event.head_commit.message, '[skip-generate]'))
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -52,14 +52,14 @@ jobs:
--exclude 'LICENSE.txt' \
.build/site/ ./
- - name: Commit and push published output
+ - name: Commit and push generated output
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
if git diff --cached --quiet; then
- echo "No publish changes to commit."
+ echo "No changes to commit."
exit 0
fi
- git commit -m "chore: publish generated site [skip-publish]"
+ git commit -m "bot chore: generate site [skip-generate]"
git push origin HEAD:asf-site
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a4fee96..53ba907 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -76,11 +76,19 @@ Do not sign commits with SSH keys. More info:
## CI Workflows
-On push to `asf-site`, GitHub Actions builds the site, edits a clone of the
`asf-site` in-place, then commits and pushes generated files.
-
-* PR checks: `.github/workflows/site-pr-check.yml`
-* Publish automation: `.github/workflows/site-publish.yml`
+* Code quality pass: `.github/workflows/site-pr-check.yml`
+ * builds site w/Hugo
+ * checks internal links
+ * ensures Whimsy compliance (local/offline)
+ * runs unit tests against Whimsy compliance code
+* Static site generation: `.github/workflows/generate-static-site.yml`
+ * builds site w/Hugo
+ * checks internal links
+ * ensures Whimsy compliance (local/offline)
+ * commits and pushes changes to generated files, if any exist
* Ensure commits are signed: `.github/workflows/verify-commits.yml`
+* Maintain actual Whimsy compliance: `.github/workflows/whimsy-daily-check.yml`
+ * checks live Whimsy website daily for compliance
## Code formatting
diff --git a/README.md b/README.md
index be27b01..58b811a 100644
--- a/README.md
+++ b/README.md
@@ -58,19 +58,7 @@ docker run --rm -it -p 1313:1313 -v "${PWD}:/src" -w
/src/site-src fineract-site
Apache Whimsy periodically checks that the public homepage follows ASF
conventions.
Output of these checks is displayed
[here](https://whimsy.apache.org/site/project/fineract).
-24 hours after code is changed and <https://fineract.apache.org> updates,
ensure all checks remain green.
-
-## CI/CD
-
-- PR validation workflow: `.github/workflows/site-pr-check.yml`
- - Builds the same Docker image used locally
- - Runs build + checks in container
-- Publish workflow: `.github/workflows/site-publish.yml`
- - Builds on pushes to `asf-site`
- - Commits generated publish files back to `asf-site` via GitHub Actions
-
-Note: `.build/` is ignored in `.gitignore` and is never pushed.
## Contributor Guide
-See `CONTRIBUTING.md` for branch/PR workflow and validation checklist.
+See `CONTRIBUTING.md` for CI/CD details and branch/PR workflow.