Skip to content

Replace asset update with WordPress.org plugin page workflow - #69

Merged
lloc merged 2 commits into
dev/mainfrom
ci/wordpress-org-plugin-page
Oct 30, 2026
Merged

lloc merged 2 commits into
dev/mainfrom
ci/wordpress-org-plugin-page

Conversation

@InpsydeNiklas

@InpsydeNiklas InpsydeNiklas commented Oct 26, 2026 •

Copy link
Copy Markdown
Member

This replaces assets-update.yml (the 10up asset update on every push to main) with a manual WordPress.org plugin page workflow, built on wordpress-org-plugin-page.yml from inpsyde/reusable-workflows.

Behavior change: nothing is published automatically any more. Readme and asset changes reach WordPress.org only when someone runs the workflow from dev/main, and the readme is synced only when SYNC_README is on.

What changes

  • Manual only, from dev/main only. The workflow is workflow_dispatch only, and the job is skipped on any other ref, so a feature branch can't reach the plugin page.

  • Inputs: SYNC_README, SYNC_ASSETS and DRY_RUN, all default true. A dry run is the default. It shows the SVN status and the readme diff against the Stable tag, and uploads exactly what would be committed.

  • Asset validation before syncing:

    • lowercase names
    • banner and icon dimensions
    • size limits
    • blueprints/*.json
    • no LFS files

    Then .wordpress-org/ is mirrored to SVN /assets, so files removed from Git are removed from WordPress.org too.

  • GIT_REF is the dispatched commit (github.sha), never free text. The token is read-only.

  • The concurrency group wordpress-org-svn is shared with releases.

  • CONTRIBUTING.md documents the flow: merge to dev/main, dry run, review, then run with DRY_RUN off.

Release Confirmation is not enabled for multisyde, so syncing the readme into the stable tag is supported.

Tested

On a local Gitea, against the real WordPress.org SVN with dummy credentials:

  • the dry run is a no-op on the current tree
  • each sync switch touches only its own part
  • both switches off fails
  • an uppercase asset name fails validation
  • a blueprint is validated and listed
  • DRY_RUN=false fails at the SVN commit with an authentication error
  • pushes never start the workflow

Only verifiable here on GitHub: the boolean inputs reaching the called workflow. A Gitea bug passes them through workflow_call as false, so locally the logic was tested by running a copy of the reusable workflow directly.

The reusable workflow is pinned to the head of inpsyde/reusable-workflows#296 (173fdd9) and gets re-pinned to main once that PR is merged.

@github-actions

Copy link
Copy Markdown

🔍 WordPress Plugin Check Report

⚠️ Status: Passed with warnings

📊 Report

🎯 Total Issues ❌ Errors ⚠️ Warnings
1 0 1

⚠️ Warnings (1)

📁 modules/SiteActivePlugins/Feature.php (1 warning)
📍 Line 🔖 Check 💬 Message
169 WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "self::FILTER_MAX_SITES".

🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

@lloc
lloc added this pull request to stack #71 October 26, 2026 12:09
@lloc
lloc force-pushed the ci/wordpress-org-plugin-page branch from 6c9745b to b1d963c Compare October 26, 2026 12:26
Base automatically changed from ci/wordpress-org-release to dev/main October 26, 2026 12:30
@lloc
lloc force-pushed the ci/wordpress-org-plugin-page branch from b1d963c to 47cb6c8 Compare October 26, 2026 12:30
The old assets-update workflow pushed readme.txt and .wordpress-org/
to WordPress.org on every push to main. With main becoming the built
branch, that trigger no longer fits, and publishing should be a
deliberate step anyway.

The new workflow calls the inpsyde wordpress-org-plugin-page reusable
workflow and only runs when dispatched manually. A dry run is the
default, so a run only previews the SVN changes and the readme diff
until DRY_RUN is turned off. The assets are validated (names,
dimensions, sizes, blueprints) before anything is synced, and
.wordpress-org/ is mirrored to SVN /assets. The readme is synced to
the Stable tag and trunk only when SYNC_README is on. GIT_REF is the
dispatched commit, never free text.

The reusable workflow is pinned to the head of
inpsyde/reusable-workflows#296 until that PR is merged.
@lloc
lloc force-pushed the ci/wordpress-org-plugin-page branch from 47cb6c8 to 0b8d277 Compare October 27, 2026 11:12
@InpsydeNiklas
InpsydeNiklas marked this pull request as ready for review October 30, 2026 10:42
@InpsydeNiklas
InpsydeNiklas requested a review from lloc as a code owner October 30, 2026 10:42
@lloc
lloc merged commit c8b4800 into dev/main Oct 30, 2026
7 checks passed
@lloc
lloc deleted the ci/wordpress-org-plugin-page branch October 30, 2026 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants