{"id":21823453,"url":"https://github.com/f2calv/gha-workflows","last_synced_at":"2026-05-09T00:02:15.970Z","repository":{"id":63508793,"uuid":"477235924","full_name":"f2calv/gha-workflows","owner":"f2calv","description":"GitHub Reusable Workflows","archived":false,"fork":false,"pushed_at":"2024-11-23T02:09:07.000Z","size":108,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T07:46:40.224Z","etag":null,"topics":["github-actions","workflow-reusable","workflows"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/f2calv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-03T04:19:07.000Z","updated_at":"2024-11-23T02:07:57.000Z","dependencies_parsed_at":"2024-05-05T02:24:27.324Z","dependency_job_id":"80ec6c7f-5dce-499d-9120-448e8237bc76","html_url":"https://github.com/f2calv/gha-workflows","commit_stats":null,"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f2calv%2Fgha-workflows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f2calv%2Fgha-workflows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f2calv%2Fgha-workflows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f2calv%2Fgha-workflows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/f2calv","download_url":"https://codeload.github.com/f2calv/gha-workflows/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244790281,"owners_count":20510715,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-actions","workflow-reusable","workflows"],"created_at":"2024-11-27T17:32:10.618Z","updated_at":"2026-05-09T00:02:15.965Z","avatar_url":"https://github.com/f2calv.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Actions Reusable Workflows Repository\n\nA collection of reusable GitHub Actions workflows covering common CI/CD scenarios across public and private repositories. For background on reusable workflows see the [official docs](https://docs.github.com/en/actions/using-workflows/reusing-workflows).\n\nAll reusable workflows are called via `workflow_call` and follow a consistent naming convention — the `name:` field is prefixed with `_` (e.g. `_app-build-dotnet`) to distinguish them from standalone workflows.\n\n## Usage\n\nReference a workflow from any repository:\n\n```yaml\njobs:\n  build:\n    uses: f2calv/gha-workflows/.github/workflows/app-build-dotnet.yml@v1\n    with:\n      version: ${{ needs.versioning.outputs.version }}\n      solution-name: MySolution.slnx\n```\n\n## Workflows\n\n### Application Build\n\n| Workflow | Description | Key Inputs |\n| --- | --- | --- |\n| [App Build .NET](.github/workflows/app-build-dotnet.yml) | Restore, workload restore, build a .NET solution/project. Installs .NET 8/9/10 SDKs. Optionally clones extra repositories into the build context. | `version` (required), `solution-name`, `configuration`, `dotnet-restore-args`, `dotnet-build-args`, `extra-repos` |\n| [App Build Rust](.github/workflows/app-build-rust.yml) | Format check, clippy lint, fetch and build a Rust project. | `version` (required) |\n\n### Containers \u0026 Helm\n\n| Workflow | Description | Key Inputs |\n| --- | --- | --- |\n| [Container Image Build](.github/workflows/container-image-build.yml) | Multi-architecture buildx build and push to a container registry (ghcr.io, ACR, Docker Hub). Tags with semver, major, minor and latest. Optionally clones extra repositories into the Docker build context. | `registry` (required), `tag` (required), `tag-major` (required), `tag-minor` (required), `platform`, `dockerfile`, `push-image`, `extra-repos` |\n| [Helm Chart Package](.github/workflows/helm-chart-package.yml) | Lint, package and push a Helm chart to an OCI registry. Helm version is sourced from `.devcontainer/devcontainer.json`. | `tag` (required), `image-registry` (required), `chart-registry` (required), `chart-repository` (required), `chart-path` |\n| [GitOps Manifest Update](.github/workflows/gha-gitops-manifest-update.yml) | Update image tags in a GitOps repository via [f2calv/gha-gitops-manifest-update](https://github.com/f2calv/gha-gitops-manifest-update). | `tag` (required), `image-registry` (required), `image-repository` (required), `manifest-paths` (required), `namespace` (required) |\n\n### NuGet\n\n| Workflow | Description | Key Inputs |\n| --- | --- | --- |\n| [.NET Publish NuGet](.github/workflows/dotnet-publish-nuget.yml) | Build, test, pack and push NuGet packages via [f2calv/gha-dotnet-nuget](https://github.com/f2calv/gha-dotnet-nuget). | `configuration`, `execute-tests`, `push-preview` |\n\n### Release \u0026 Versioning\n\n| Workflow | Description | Key Inputs |\n| --- | --- | --- |\n| [Release Versioning](.github/workflows/gha-release-versioning.yml) | Determine a semantic version (via [GitVersion](https://gitversion.net/)), tag the repo and create a GitHub release. | `semVer`, `tag-prefix`, `move-major-tag`, `tag-and-release` |\n\n### Code Quality\n\n| Workflow | Description | Key Inputs |\n| --- | --- | --- |\n| [Lint](.github/workflows/lint.yml) | Run [pre-commit](https://pre-commit.com/) hooks against all files in the repository. | `pre-commit-version` |\n\n## Deployment Flow\n\nMermaid diagrams showing the action dependency chain for each workflow. Actions and workflows owned by [f2calv](https://github.com/f2calv) are highlighted in blue.\n\n### _app-build-dotnet\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_app-build-dotnet\"]) --\u003e J[\"app-build-dotnet\"]\n    J --\u003e A1[\"actions/checkout@v6\"]\n    J --\u003e A2[\"actions/setup-dotnet@v5\"]\n```\n\n### _app-build-rust\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_app-build-rust\"]) --\u003e J[\"app-build-rust\"]\n    J --\u003e A1[\"actions/checkout@v6\"]\n```\n\n### _container-image-build\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_container-image-build\"]) --\u003e J[\"container-image-build\"]\n    J --\u003e A1[\"actions/checkout@v6\"]\n```\n\n### _helm-chart-package\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_helm-chart-package\"]) --\u003e J[\"helm-chart-package\"]\n    J --\u003e A1[\"actions/checkout@v6\"]\n    J --\u003e A2[\"azure/setup-helm@v5\"]\n    J --\u003e A3[\"helm/kind-action@v1\"]\n```\n\n### _gha-gitops-manifest-update\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_gha-gitops-manifest-update\"]) --\u003e J[\"gha-gitops-manifest-update\"]\n    J --\u003e A1[\"actions/checkout@v6\"]\n    J --\u003e A2[\"f2calv/gha-gitops-manifest-update@v2\"]\n    class A2 f2calv\n```\n\n### _gha-release-versioning\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_gha-release-versioning\"]) --\u003e J[\"gha-release-versioning\"]\n    J --\u003e A1[\"actions/checkout@v6\"]\n    J --\u003e A2[\"f2calv/gha-release-versioning@v1\"]\n    class A2 f2calv\n```\n\n### _dotnet-publish-nuget\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_dotnet-publish-nuget\"]) --\u003e J1[\"versioning\"]\n    W --\u003e J2[\"build\"]\n    W --\u003e J3[\"release\"]\n    J1 -- uses --\u003e SW1[[\"_gha-release-versioning\"]]\n    J2 -- needs --\u003e J1\n    J2 --\u003e A1[\"f2calv/gha-dotnet-nuget@v2\"]\n    J3 -- needs --\u003e J1\n    J3 -- needs --\u003e J2\n    J3 -- uses --\u003e SW2[[\"_gha-release-versioning\"]]\n    class A1 f2calv\n    class SW1 f2calv\n    class SW2 f2calv\n```\n\n### _lint\n\n```mermaid\nflowchart LR\n    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f\n    W([\"_lint\"]) --\u003e J[\"lint\"]\n    J --\u003e A1[\"actions/checkout@v6\"]\n```\n\n## Companion Actions\n\nThese workflows depend on companion composite actions:\n\n- [f2calv/gha-release-versioning](https://github.com/f2calv/gha-release-versioning) — Semantic versioning with GitVersion\n- [f2calv/gha-dotnet-nuget](https://github.com/f2calv/gha-dotnet-nuget) — .NET build, test, pack and NuGet push\n- [f2calv/gha-gitops-manifest-update](https://github.com/f2calv/gha-gitops-manifest-update) — GitOps manifest image tag updates\n\n## Other Resources\n\n- [GitHub Actions Docs](https://docs.github.com/en/actions)\n- [Reusing Workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows)\n- My older [Azure DevOps Shared YAML Templates](https://github.com/f2calv/CasCap.YAMLTemplates)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff2calv%2Fgha-workflows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff2calv%2Fgha-workflows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff2calv%2Fgha-workflows/lists"}