GitLab CI Support
Architecture notes and open items for adding GitLab CI provider support.
IMPORTANT: Developer documentation for the current development branch. This content is unreleased, may change without notice, and must not be treated as Buildish release documentation.
graph LR
subgraph "Implemented"
GH["GitHub Actions ✓"]
end
subgraph "Planned"
CB["Codeberg / Forgejo CI"]
GL["GitLab CI"]
BB["Bitbucket Pipelines"]
end
GH -- seam interfaces --> CORE["Shared core\nsrc/phases/"]
CB -. seam interfaces .-> CORE
GL -. seam interfaces .-> CORE
BB -. seam interfaces .-> CORE
| Provider | Cache backend | Artifact backend | Host adapters | Entrypoints | Status |
|---|---|---|---|---|---|
| GitHub Actions | ✓ | ✓ | ✓ | ✓ | Implemented |
| Codeberg / Forgejo | — | — | — | — | Planned |
| GitLab CI | — | — | — | — | Planned |
| Bitbucket Pipelines | ⚠ no native frontend | — | — | — | Planned |
| Jenkins | ⚠ external store required | ✓ (Copy Artifact Plugin) | — | — | Assessed |
The action is designed to run on multiple CI platforms without changes to the shared core. The seam between platform-specific and platform-agnostic code is defined by a set of TypeScript interfaces. See CI Abstraction Layer for the full interface list and provider boundary rules.
| Path | Role |
|---|---|
src/ci/<provider>/ |
Platform-specific adapters implementing the seam interfaces |
src/phases/ |
Shared prepare/finalize logic; never imports from src/ci/ |
src/cache/backend.ts |
BaseCacheBackend interface |
src/delta/backend.ts |
WorkflowArtifactBackend interface |
src/host/types.ts |
HostReporter, HostStateStore, HostInputSource, HostOutputSink, ReportSink |
src/ci/types.ts |
CiPlatformAdapter, CiJobContext |
descriptors/<provider>/ |
CI descriptor files (action.yml, .gitlab-ci.yml, etc.) |
BaseCacheBackend (src/cache/backend.ts) — save and restore the base cache using the
provider’s native cache service.WorkflowArtifactBackend (src/delta/backend.ts) — upload, list, and download delta
artifact packages using the provider’s artifact service.HostReporter — write log output and group markers to the CI log.HostStateStore — persist and retrieve cross-phase state between prepare and finalize.HostInputSource — read action/pipeline configuration inputs from the CI environment.HostOutputSink — write outputs back to the CI environment.ReportSink — write job summaries or equivalent reports.CiPlatformAdapter — expose CiJobContext (job name, run ID, run attempt, URLs).GitHub Actions has distinct main and post execution phases, which map to the prepare and
finalize concepts in this project. Codeberg/Forgejo CI also supports a post-execution hook.
GitLab CI does not have a built-in equivalent, so the finalize logic would need to be invoked
explicitly as a separate pipeline job or an after_script step. Bitbucket Pipelines has
after-script, which runs in the same container as the main script and maps cleanly onto the
finalize phase.
The prepare/finalize naming in this codebase is intentionally CI-agnostic to support all of these patterns.
Architecture notes and open items for adding GitLab CI provider support.
Architecture notes and open items for adding Bitbucket Pipelines provider support.
Architecture notes and implementation options for adding Jenkins provider support.
Architecture notes and open items for adding Codeberg and Forgejo CI provider support.