No description
  • JavaScript 100%
Find a file
hayshin 0d3dd4687c
All checks were successful
CI / YAML style (push) Successful in 6s
CI / Workflow validation (push) Successful in 5s
CI / Action metadata validation (push) Successful in 6s
CI / Semantic version tests (push) Successful in 7s
Release / release (push) Successful in 33s
perf(protobuf): download prebuilt Buf binary
- avoid compiling Buf and its dependency graph on every cold runner
- keep architecture-aware pinned installation before generating SDKs
2026-07-18 18:22:09 +05:00
.forgejo/workflows feat(ci): support protobuf SDK modules 2026-07-18 15:55:14 +05:00
actions perf(protobuf): download prebuilt Buf binary 2026-07-18 18:22:09 +05:00
tests test: validate shared CI behavior 2026-07-12 19:43:05 +05:00
actionlint.yaml fix: resolve shared actions from local Forgejo 2026-07-14 10:42:34 +05:00
README.md feat(protobuf): add shared SDK drift action 2026-07-18 17:25:17 +05:00

Shared Forgejo CI

Public reusable workflows and composite actions for repositories on git.hayshin.dev.

Reusable workflows

Consumer workflows stay responsible for triggers. Jobs call versioned workflows:

jobs:
  ci:
    uses: infra/ci/.forgejo/workflows/go-ci.yml@v1
    with:
      check-links: true

Available workflows:

  • go-ci.yml: separate format, vet, build, test, and optional link-check jobs.
  • python-ci.yml: separate lock, lint, typecheck, test, and package jobs.
  • go-release.yml: calculate SemVer, validate, then tag and create release.
  • python-release.yml: calculate SemVer, validate package version, then tag and upload distributions.
  • go-module-release.yml: validate and publish a manually versioned nested Go module.
  • python-module-release.yml: validate and attach distributions for a tagged nested Python package.

Release workflows must only be called for pushes to the protected main branch.

Actions

  • actions/semantic-version: derives next version from Conventional Commits.
  • actions/forgejo-release: pushes validated tag and creates release.
  • actions/go/*: Go module, build, and test cache setup plus individual checks.
  • actions/python/*: uv cache setup and individual Python checks.
  • actions/protobuf/setup: pinned Go, Buf, and protobuf generator setup.
  • actions/protobuf/check: Python/Go SDK regeneration, Buf lint, and drift detection.

Semantic version rules: fix/perf produce patch, feat produces minor, and ! or BREAKING CHANGE: produces major. Other commits produce no release.

Versioning

Publish immutable SemVer tags and moving major tags. Consumers normally use @v1; pin commit SHA where immutable references are required. Breaking workflow inputs, outputs, or behavior require new major version.

Bootstrap

  1. Create public Forgejo repository infra/ci.
  2. Push this repository.
  3. Tag tested initial revision as v1.0.0 and v1.
  4. Replace consumer workflows only after tags resolve.

Cross-repository reusable workflows require this repository to remain public. Go and Python workflows require Forgejo runner caching to be enabled and reachable from job containers.