Shared Workflows & Actions#

plone.meta provides reusable GitHub Actions workflows and composite actions for use by Cookieplone-based projects. These are not used by the config-package tool; they are designed to be called directly from downstream project workflows.

All workflows and actions are located in the plone.meta repository and referenced via uses: in your project’s workflow files.

Composite Actions#

setup_backend_uv#

Sets up a Python backend environment using uv as the package installer.

Inputs:

Input

Description

Required

Default

python-version

Python version to install

No

"3.12"

Example usage:

steps:
  - uses: actions/checkout@v6
  - uses: plone/meta/.github/actions/setup_backend_uv@2.x
    with:
      python-version: "3.13"

setup_frontend#

Sets up a Node.js frontend environment with dependency installation.

Inputs:

Input

Description

Required

Default

node-version

Node.js version to install

No

"22.x"

Example usage:

steps:
  - uses: actions/checkout@v6
  - uses: plone/meta/.github/actions/setup_frontend@2.x
    with:
      node-version: "22.x"

setup_uv#

Sets up the uv package installer.

Inputs:

Input

Description

Required

Default

uv-version

Version of uv to install

No

"latest"

Example usage:

steps:
  - uses: actions/checkout@v6
  - uses: plone/meta/.github/actions/setup_uv@2.x

Backend Workflows#

backend-lint#

Runs backend linting checks.

Example usage:

jobs:
  backend-lint:
    uses: plone/meta/.github/workflows/backend-lint.yml@2.x

backend-pytest#

Runs backend tests with pytest.

Example usage:

jobs:
  backend-pytest:
    uses: plone/meta/.github/workflows/backend-pytest.yml@2.x

backend-pytest-coverage#

Runs backend tests with coverage reporting.

Example usage:

jobs:
  backend-pytest-coverage:
    uses: plone/meta/.github/workflows/backend-pytest-coverage.yml@2.x

Documentation Workflows#

docs-build#

Builds project documentation.

Example usage:

jobs:
  docs-build:
    uses: plone/meta/.github/workflows/docs-build.yml@2.x

Frontend Workflows#

frontend-acceptance#

Runs frontend acceptance (end-to-end) tests.

Example usage:

jobs:
  frontend-acceptance:
    uses: plone/meta/.github/workflows/frontend-acceptance.yml@2.x

frontend-code#

Runs frontend code quality checks (linting, formatting).

Example usage:

jobs:
  frontend-code:
    uses: plone/meta/.github/workflows/frontend-code.yml@2.x

frontend-i18n#

Validates frontend internationalization (i18n) setup.

Example usage:

jobs:
  frontend-i18n:
    uses: plone/meta/.github/workflows/frontend-i18n.yml@2.x

frontend-storybook#

Builds and validates Storybook stories.

Example usage:

jobs:
  frontend-storybook:
    uses: plone/meta/.github/workflows/frontend-storybook.yml@2.x

frontend-unit#

Runs frontend unit tests.

Example usage:

jobs:
  frontend-unit:
    uses: plone/meta/.github/workflows/frontend-unit.yml@2.x

Container Image Workflows#

container-image-build-push#

Builds and pushes a container image in a single workflow. Combines the build and push steps for convenience.

Secrets:

Secret

Description

Required

registry-username

Container registry username

Yes

registry-password

Container registry password or token

Yes

Example usage:

jobs:
  container-image:
    uses: plone/meta/.github/workflows/container-image-build-push.yml@2.x
    secrets:
      registry-username: ${{ secrets.REGISTRY_USERNAME }}
      registry-password: ${{ secrets.REGISTRY_PASSWORD }}

container-image-build#

Builds a container image without pushing. Useful for validation in pull requests.

Example usage:

jobs:
  container-image-build:
    uses: plone/meta/.github/workflows/container-image-build.yml@2.x

container-image-push#

Pushes a previously built container image to a registry.

Secrets:

Secret

Description

Required

registry-username

Container registry username

Yes

registry-password

Container registry password or token

Yes

Example usage:

jobs:
  container-image-push:
    uses: plone/meta/.github/workflows/container-image-push.yml@2.x
    secrets:
      registry-username: ${{ secrets.REGISTRY_USERNAME }}
      registry-password: ${{ secrets.REGISTRY_PASSWORD }}

Version pinning#

All examples above use @2.x to track the latest 2.x release. You can pin to a specific tag (e.g., @v2.4.0) for reproducible builds:

uses: plone/meta/.github/workflows/backend-lint.yml@v2.4.0