This document provides detailed information about the available GitHub workflows in the PepperDash workflow templates repository and how to use them in your projects.
The repository provides several reusable workflows for building and versioning PepperDash projects:
- essentialsplugins-getversion.yml: Creates version numbers based on semantic release principles
- Outputs:
version: The semantic version numbertag: The git tag for the versionnewVersion: Boolean indicating if a new version was generatedchannel: The release channel (empty for production releases)
- Outputs:
- essentials-3Series-builds.yml: Builds PepperDash Essentials/Core for 3-Series processors
- Inputs:
newVersion: Boolean indicating if this is a new versionversion: Semantic version numbertag: Git tag for the versionchannel: Release channel
- Inputs:
-
essentialsplugins-3Series-builds.yml: Builds Essentials Plugins for 3-Series processors
- Inputs:
newVersion: Boolean indicating if this is a new versionversion: Semantic version numbertag: Git tag for the versionchannel: Release channel
- Inputs:
-
essentialsplugins-4Series-builds.yml: Builds Essentials Plugins for 4-Series processors
- Inputs:
newVersion: Boolean indicating if this is a new versionversion: Semantic version numbertag: Git tag for the versionchannel: Release channelbypassPackageCheck: Optional boolean to bypass package name validation
- Inputs:
- essentialsplugins-checkCommitMessage.yml: Validates commit messages
- projects-4series-builds.yml: Generic 4-Series project builds
- update-readme.yml: Updates README file with build status and other information
To use these workflows in your project:
-
Create a
.github/workflowsdirectory in your project's root folder:mkdir -p .github/workflows -
Create a caller YAML file in the
.github/workflowsdirectory:
name: Build Essentials Plugin
on:
push:
branches:
- '**'
jobs:
# Get-Version caller
getVersion:
uses: PepperDash/workflow-templates/.github/workflows/essentialsplugins-getversion.yml@main
secrets: inherit
# 3-Series caller
build-3Series:
uses: PepperDash/workflow-templates/.github/workflows/essentialsplugins-3Series-builds.yml@main
secrets: inherit
needs: getVersion
if: needs.getVersion.outputs.newVersion == 'true'
with:
newVersion: ${{ needs.getVersion.outputs.newVersion }}
version: ${{ needs.getVersion.outputs.version }}
tag: ${{ needs.getVersion.outputs.tag }}
channel: ${{ needs.getVersion.outputs.channel }}
# 4-Series caller
build-4Series:
uses: PepperDash/workflow-templates/.github/workflows/essentialsplugins-4Series-builds.yml@main
secrets: inherit
needs: getVersion
if: needs.getVersion.outputs.newVersion == 'true'
with:
newVersion: ${{ needs.getVersion.outputs.newVersion }}
version: ${{ needs.getVersion.outputs.version }}
tag: ${{ needs.getVersion.outputs.tag }}
channel: ${{ needs.getVersion.outputs.channel }}name: Build Essentials 1.X
on:
push:
branches:
- '**'
jobs:
getVersion:
uses: PepperDash/workflow-templates/.github/workflows/essentialsplugins-getversion.yml@main
secrets: inherit
build-3Series:
uses: PepperDash/workflow-templates/.github/workflows/essentials-3Series-builds.yml@main
secrets: inherit
needs: getVersion
if: needs.getVersion.outputs.newVersion == 'true'
with:
newVersion: ${{ needs.getVersion.outputs.newVersion }}
version: ${{ needs.getVersion.outputs.version }}
tag: ${{ needs.getVersion.outputs.tag }}
channel: ${{ needs.getVersion.outputs.channel }}name: Build PepperDash Essentials
on:
push:
branches:
- '**'
jobs:
# Get-Version caller
getVersion:
uses: PepperDash/workflow-templates/.github/workflows/essentialsplugins-getversion.yml@main
secrets: inherit
# 4-Series caller
build-4Series:
uses: PepperDash/workflow-templates/.github/workflows/essentialsplugins-4Series-builds.yml@main
secrets: inherit
needs: getVersion
if: needs.getVersion.outputs.newVersion == 'true'
with:
newVersion: ${{ needs.getVersion.outputs.newVersion }}
version: ${{ needs.getVersion.outputs.version }}
tag: ${{ needs.getVersion.outputs.tag }}
channel: ${{ needs.getVersion.outputs.channel }}
bypassPackageCheck: trueTo ensure the workflows function correctly, your project should adhere to the following structure:
/Project-Repo/
├── .gitub/
│ └── workflows/
│ ├── essentialsplugins-builds-caller.yml // <== Essentials Plugins (EPI) caller
│ └── essentials-builds-caller.yml // <== Essentials & Core caller
├── src/
│ ├── Directory.Build.props
│ ├── Directory.Build.targets
│ ├── *.3series.csproj
│ ├── *.4series.csproj
│ └── // source code
├── *.3series.sln
├── *.4series.sln
├── .releaserc.json
├── LICENSE.md
└── README.md
If your workflow fails:
- Check the workflow logs to identify where the build failed
- Verify that your repo callers are referencing the correct workflow version
- Ensure your project structure matches the required format
- Check that all required inputs are provided to the workflows
- If you continue to have issues, reach out to the CI/CD/Git Foundation Team via Slack
By default, workflow references use the @main branch. Only reference other branches in specific cases where needed.
The essentialsplugins-getversion.yml workflow:
- Manages semantic versioning based on commit history
- Requires proper commit message formatting for version bumps
- Generates version numbers, tags, and channel information
- Should be called first in workflow chains
Build workflows handle:
- Compiling projects for specific platforms (3-Series or 4-Series)
- Creating distribution packages
- Publishing artifacts to appropriate registries
- Generating documentation and release notes