Skip to content

f2calv/gha-workflows

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Actions Reusable Workflows Repository

A 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.

All 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.

Usage

Reference a workflow from any repository:

jobs:
  build:
    uses: f2calv/gha-workflows/.github/workflows/app-build-dotnet.yml@v1
    with:
      fullSemVer: ${{ needs.versioning.outputs.fullSemVer }}
      solution-name: MySolution.slnx

Workflows

Application Build

Workflow Description Key Inputs
App Build .NET Restore, workload restore, build a .NET solution/project. Installs .NET 8/9/10 SDKs. fullSemVer (required), solution-name, configuration, dotnet-restore-args, dotnet-build-args
App Build Rust Format check, clippy lint, fetch and build a Rust project. fullSemVer (required)

Containers & Helm

Workflow Description Key Inputs
Container Image Build Multi-architecture buildx build and push to a container registry (ghcr.io, ACR, Docker Hub). Tags with semver, major, minor and latest. registry (required), tag (required), tag-major (required), tag-minor (required), platform, push-image
Helm Chart Package 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
GitOps Manifest Update Update image tags in a GitOps repository via f2calv/gha-gitops-manifest-update. registry (required), repository (required), tag (required), manifest (required), manifest-path (required)

NuGet

Workflow Description Key Inputs
.NET Publish NuGet Build, test, pack and push NuGet packages via f2calv/gha-dotnet-nuget. configuration, execute-tests, push-preview

Release & Versioning

Workflow Description Key Inputs
Release Versioning Determine a semantic version (via GitVersion), tag the repo and create a GitHub release. semVer, tag-prefix, move-major-tag, tag-and-release

Code Quality

Workflow Description Key Inputs
Lint Run pre-commit hooks against all files in the repository. pre-commit-version

Dependency Diagrams

Mermaid diagrams showing the action dependency chain for each workflow. Actions and workflows owned by f2calv are highlighted in blue.

_app-build-dotnet

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_app-build-dotnet"]) --> J["app-build-dotnet"]
    J --> A1["actions/checkout@v6"]
    J --> A2["actions/setup-dotnet@v5"]
Loading

_app-build-rust

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_app-build-rust"]) --> J["app-build-rust"]
    J --> A1["actions/checkout@v6"]
Loading

_container-image-build

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_container-image-build"]) --> J["container-image-build"]
    J --> A1["actions/checkout@v6"]
Loading

_helm-chart-package

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_helm-chart-package"]) --> J["helm-chart-package"]
    J --> A1["actions/checkout@v6"]
    J --> A2["azure/setup-helm@v4"]
    J --> A3["helm/kind-action@v1"]
Loading

_gha-gitops-manifest-update

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_gha-gitops-manifest-update"]) --> J["gha-gitops-manifest-update"]
    J --> A1["actions/checkout@v6"]
    J --> A2["f2calv/gha-gitops-manifest-update@v1"]
    class A2 f2calv
Loading

_gha-release-versioning

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_gha-release-versioning"]) --> J["gha-release-versioning"]
    J --> A1["actions/checkout@v6"]
    J --> A2["f2calv/gha-release-versioning@v1"]
    class A2 f2calv
Loading

_dotnet-publish-nuget

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_dotnet-publish-nuget"]) --> J1["versioning"]
    W --> J2["build"]
    W --> J3["release"]
    J1 -- uses --> SW1[["_gha-release-versioning"]]
    J2 -- needs --> J1
    J2 --> A1["f2calv/gha-dotnet-nuget@v2"]
    J3 -- needs --> J1
    J3 -- needs --> J2
    J3 -- uses --> SW2[["_gha-release-versioning"]]
    class A1 f2calv
    class SW1 f2calv
    class SW2 f2calv
Loading

_lint

flowchart LR
    classDef f2calv fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
    W(["_lint"]) --> J["lint"]
    J --> A1["actions/checkout@v6"]
Loading

Companion Actions

These workflows depend on companion composite actions:

Other Resources

About

GitHub Reusable Workflows

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages