Skip to content

Design versioned workflow templates based on Nextcloud upstream #4

Description

@vitormattos

Goal

Create a separate reusable workflow product for GitHub automation that does not belong in the ruleset reconciler.

Architecture decision

The implementation should live in a dedicated repository, proposed as:

LibreCodeCoop/github-workflows

github-governance remains responsible only for repository governance/ruleset reconciliation. Workflow templates and application release automation have independent consumers, permissions, versioning and release cycles and must not be added to that engine.

Initial repository responsibilities

The new repository should own:

  • reusable GitHub workflows;
  • reproducible imports/adaptations from upstream projects such as Nextcloud;
  • reviewable downstream patches;
  • tests for generated workflow output;
  • versioned releases consumed through immutable SHA pins;
  • Dependabot for GitHub Actions;
  • SPDX/REUSE compliance;
  • actionlint and zizmor.

Upstream template model

Imported templates must be reproducible:

  1. declare the upstream repository and immutable upstream commit;
  2. record the source file and expected hash;
  3. copy/import the upstream workflow deterministically;
  4. apply LibreCode-maintained patches explicitly;
  5. verify the generated result in CI;
  6. fail when an upstream refresh no longer applies cleanly.

Generated templates must not be edited manually.

First implementation

Bootstrap the repository with:

  • a short business-oriented README;
  • docs/architecture.md;
  • upstream/ metadata;
  • patches/;
  • templates/;
  • a deterministic sync/check script;
  • tests;
  • REUSE, actionlint and zizmor workflows;
  • Dependabot.

Only after that foundation is merged should the first Nextcloud workflows be imported.

Acceptance criteria

  • workflow-template code is outside github-governance;
  • upstream inputs are immutable and verifiable;
  • downstream differences are reviewable patches;
  • regeneration is deterministic;
  • CI detects upstream/hash/patch drift;
  • releases are versioned;
  • consumers pin full SHAs with release-version comments.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions