Note
To see DevantlerTech's Actions, please visit the devantler-tech/actions repository.
Welcome to the DevantlerTech GitHub Reusable Workflows repository! This repository contains reusable workflows designed to streamline your CI/CD processes. These actions are used across all DevantlerTech projects, ensuring consistency and efficiency.
The below diagram illustrates the relationship between GitHub Workflows and GitHub Actions.
---
title: GitHub Actions Relationship Diagram
---
flowchart TD
A[Workflows] --> B[Jobs]
B --> C([***Reusable Workflows***])
B --> D[Steps]
C --> D
C --> B
D --> E[Actions]
E -.- F([Composite Actions])
F --> D
E -.- G([JavaScript Actions])
E -.- H([Docker Container Actions])
Reusable workflows are designed to encapsulate common CI/CD patterns that can be shared across multiple repositories. They allow you to define a workflow once and reuse it in the job-scope of other workflows. This reduces duplication and enables building generic workflows for common tasks.
Click to expand
.github/workflows/cd-cluster-bootstrap.yaml is a workflow used to bootstrap a cluster on the DevantlerTech platform. It installs core components like Cilium and Flux.
To use this reusable workflow, you can include it in your workflow file as follows:
jobs:
bootstrap-cluster:
uses: devantler-tech/reusable-workflows/.github/workflows/cd-cluster-bootstrap.yaml@{ref} # ref
secrets:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
with:
DEPLOYMENT_ENV: dev
Key | Type | Default | Required | Description |
---|---|---|---|---|
KUBE_CONFIG |
Secret | - | ✅ | Kubernetes config file |
SOPS_AGE_KEY |
Secret | - | ✅ | Age key for SOPS |
DEPLOYMENT_ENV |
Input (string) | dev |
✅ | Deployment environment |
Click to expand
.github/workflows/cd-dotnet-application-publish.yaml is a workflow used to publish .NET applications.
jobs:
publish-application:
uses: devantler-tech/reusable-workflows/.github/workflows/cd-dotnet-application-publish.yaml@{ref} # ref
secrets:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
Key | Type | Default | Required | Description |
---|---|---|---|---|
NUGET_API_KEY |
Secret | - | ✅ | NuGet API key |
Click to expand
.github/workflows/cd-dotnet-library-publish.yaml is a workflow used to publish .NET libraries to NuGet and GHCR.
jobs:
publish-library:
uses: devantler-tech/reusable-workflows/.github/workflows/cd-dotnet-library-publish.yaml@{ref} # ref
secrets:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
Key | Type | Default | Required | Description |
---|---|---|---|---|
NUGET_API_KEY |
Secret | - | ✅ | NuGet API key |
Click to expand
.github/workflows/cd-gitops-deploy.yaml is a workflow used to deploy applications using GitOps with Flux.
jobs:
gitops-deploy:
uses: devantler-tech/reusable-workflows/.github/workflows/cd-gitops-deploy.yaml@{ref} # ref
secrets:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
with:
DEPLOYMENT_ENV: dev
Key | Type | Default | Required | Description |
---|---|---|---|---|
KUBE_CONFIG |
Secret | - | ✅ | Kubernetes config file |
SOPS_AGE_KEY |
Secret | - | ✅ | Age key for SOPS |
DEPLOYMENT_ENV |
Input (string) | dev |
✅ | Deployment environment |
Click to expand
.github/workflows/cd-pages-publish.yaml is a workflow used to build and publish a Jekyll site to GitHub Pages.
jobs:
pages:
uses: devantler-tech/reusable-workflows/.github/workflows/cd-pages-publish.yaml@{ref} # ref
with:
RUBY_VERSION: "3.3" # optional
JEKYLL_ENV: production # optional
EXTRA_BUILD_ARGS: "" # optional, e.g. '--future'
Key | Type | Default | Required | Description |
---|---|---|---|---|
RUBY_VERSION |
Input (string) | 3.3 |
❌ | Ruby version to install |
JEKYLL_ENV |
Input (string) | production |
❌ | Jekyll environment |
EXTRA_BUILD_ARGS |
Input (string) | "" |
❌ | Extra args appended before the automatically supplied --baseurl |
Key | Description |
---|---|
page_url |
Deployed Pages site URL |
Click to expand
.github/workflows/ci-auto-merge.yaml is a workflow that automatically merges pull requests from trusted bots and maintainers.
jobs:
auto-merge:
uses: devantler-tech/reusable-workflows/.github/workflows/ci-auto-merge.yaml@{ref} # ref
Click to expand
.github/workflows/ci-dotnet-test.yaml is a workflow used to test .NET solutions or projects across multiple operating systems.
jobs:
dotnet-test:
uses: devantler-tech/reusable-workflows/.github/workflows/ci-dotnet-test.yaml@{ref} # ref
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Key | Type | Default | Required | Description |
---|---|---|---|---|
CODECOV_TOKEN |
Secret | - | ✅ | Codecov token |
Click to expand
.github/workflows/ci-gitops-test.yaml is a workflow used to test GitOps configurations with Flux.
jobs:
gitops-test:
uses: devantler-tech/reusable-workflows/.github/workflows/ci-gitops-test.yaml@{ref} # ref
secrets:
KSAIL_SOPS_KEY: ${{ secrets.KSAIL_SOPS_KEY }}
with:
HOSTS_FILE: hosts
ROOT_CA_CERT_FILE: root-ca.crt
Key | Type | Default | Required | Description |
---|---|---|---|---|
KSAIL_SOPS_KEY |
Secret | - | ❌ | SOPS Age key for KSail |
HOSTS_FILE |
Input (string) | - | ❌ | Path to hosts file for testing |
ROOT_CA_CERT_FILE |
Input (string) | - | ❌ | Path to root CA certificate file |
Click to expand
.github/workflows/ci-gitops-validate.yaml is a workflow used to validate GitOps cluster configurations.
jobs:
gitops-validate:
uses: devantler-tech/reusable-workflows/.github/workflows/ci-gitops-validate.yaml@{ref} # ref
Click to expand
.github/workflows/release.yaml is a workflow used to create releases using semantic-release.
jobs:
release:
uses: devantler-tech/reusable-workflows/.github/workflows/release.yaml@{ref} # ref
secrets:
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
Key | Type | Default | Required | Description |
---|---|---|---|---|
APP_PRIVATE_KEY |
Secret | - | ✅ | GitHub App private key |
Click to expand
.github/workflows/sync-cluster-policies.yaml is a workflow used to sync upstream Kyverno policies to a target directory.
jobs:
sync-cluster-policies:
uses: devantler-tech/reusable-workflows/.github/workflows/sync-cluster-policies.yaml@{ref} # ref
secrets:
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
with:
KYVERNO_POLICIES_DIR: policies/kyverno
Key | Type | Default | Required | Description |
---|---|---|---|---|
APP_PRIVATE_KEY |
Secret | - | ✅ | GitHub App private key |
KYVERNO_POLICIES_DIR |
Input (string) | - | ✅ | Directory to sync Kyverno policies to |
Click to expand
.github/workflows/todos.yaml is a workflow used to scan for TODOs in code and create GitHub issues.
jobs:
todos:
uses: devantler-tech/reusable-workflows/.github/workflows/todos.yaml@{ref} # ref
secrets:
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
Key | Type | Default | Required | Description |
---|---|---|---|---|
APP_PRIVATE_KEY |
Secret | - | ✅ | GitHub App private key |
Click to expand
.github/workflows/zizmor.yaml is a workflow used to perform static analysis on GitHub Actions workflows.
jobs:
zizmor:
uses: devantler-tech/reusable-workflows/.github/workflows/zizmor.yaml@{ref} # ref