Skip to content

Extract shared Fast Forward workflows into .github #2

@coisa

Description

@coisa

Objective

Move the shared Fast Forward GitHub Actions implementation from php-fast-forward/dev-tools into this organization-level .github repository, following the migration direction tracked in php-fast-forward/dev-tools#240.

Current Limitation

Consumer repositories receive thin workflow wrappers from dev-tools, but those wrappers currently call reusable workflows and composite actions hosted in php-fast-forward/dev-tools. That keeps organization automation coupled to the PHP CLI package repository and assumes consumers can run composer dev-tools from their own dependency graph.

That assumption is becoming weaker for extracted packages such as fast-forward/agents, which should be able to consume shared Fast Forward workflows without requiring fast-forward/dev-tools as a project dependency.

Proposed Work

Add the reusable workflow and composite action implementation to this repository, then introduce a dedicated setup action that guarantees the dev-tools CLI is available before shared workflows call it.

The setup action should prefer an already installed project-local dev-tools command when available, and otherwise install fast-forward/dev-tools globally through Composer with an explicit version/ref input. This lets existing repositories keep working while newly extracted repositories can use shared workflows without depending on dev-tools directly.

Scope

  • Add reusable workflow files currently consumed by Fast Forward repository wrappers.
  • Add composite actions required by those workflows.
  • Add a dedicated action for installing or locating fast-forward/dev-tools globally.
  • Update copied workflow/action paths so reusable workflows resolve local actions from this repository instead of php-fast-forward/dev-tools.
  • Document the initial ownership split between .github, dev-tools, and consumer repositories.
  • Keep this issue focused on the .github repository side of the migration; wrapper changes in dev-tools may be handled by a coordinated follow-up PR there.

Non-goals

Acceptance Criteria

Delivery Criteria

  • .github/workflows/ contains the shared reusable workflow implementations needed by Fast Forward consumer wrappers.
  • .github/actions/ contains the composite actions required by those workflows.
  • A dedicated action installs or locates fast-forward/dev-tools and exposes a command path that workflows can use consistently.
  • Workflows that call composer dev-tools or related commands use the setup action first.
  • The setup action supports a configurable dev-tools version/ref for branch-based testing.
  • README documentation explains that .github owns shared automation while dev-tools owns PHP CLI commands and consumer wrapper synchronization.
  • The implementation notes how it coordinates with Extract shared GitHub Actions automation into php-fast-forward/.github dev-tools#240 and leaves release-safe refs from Define release-safe refs for consumer workflow wrappers and checked-out actions dev-tools#238 for the next policy step.

Regression Criteria

  • Static validation confirms migrated reusable workflows no longer checkout php-fast-forward/dev-tools only to access .github/actions.
  • Static validation confirms migrated reusable workflows do not reference php-fast-forward/dev-tools/.github/workflows/*@main.
  • YAML files and shell scripts parse successfully.
  • At least one smoke check verifies the dev-tools setup action can resolve an existing local command or prepare a global Composer installation path without requiring a consumer project dependency.

Architectural / Isolation Criteria

  • The change keeps automation ownership separate from dev-tools PHP package ownership.
  • The setup action is reusable by multiple workflows instead of duplicating global install logic in each workflow.
  • The migration avoids destructive changes to organization profile content already stored in this repository.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions