Default workflow templates and reusable workflows for VirtoCommerce platform/modules.
Actual workflow templates are located in workflow-templates folder.
Module workflow templates include:
- module-ci.yml - VirtoCommerce Module CI workflow template.
- module-release-hotfix.yml - VirtoCommerce Module release hotfix workflow template.
- release.yml - VirtoCommerce Release workflow template.
- publish-nugets.yml VirtoCommerce nugets publish workflow template.
Platform workflow templates include:
- platform-ci.yml - VirtoCommerce Platform CI workflow template.
- platform-release-hotfix.yml - VirtoCommerce Platform release hotfix workflow template.
- release.yml - VirtoCommerce Release workflow template.
- publish-nugets.yml - VirtoCommerce nugets publish workflow template.
Note release.yml and publish-nugets.yml used for both VirtoCommerce modules and platform.
To update workflow templates:
- Update template in
workflow-templatesfolder. - Increment version in a template.
- Add a version tag for releases of your workflows.
git tag -a -m "My template release" v3.800.0
git push --follow-tags
- Run
Deploy Module workflowsto update workflows in modules orDeploy Platform workflowsto update workflows in platform.
- Specify version tag in
Version to deployinput parameter.
You can also use main as version tag to use latest version from the main branch for update.
- Add new workflow template to
workflow-templatesfolder as described in the article. - Add new workflow file name to
TEMPLATES_LISTenvironment variable indeploy-module-workflows.yml,deploy-platform-workflows.ymlor both workflows for deploy new workflow to the repositories.
Every third-party uses: reference in this repo (anything not under VirtoCommerce/*) is pinned to a full 40-character commit SHA with a trailing # tag comment, per the GitHub Actions hardening guide. Tags are mutable; SHAs are not.
# Correct
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# Rejected by CI
uses: actions/checkout@v6This applies to both reusable workflows in .github/workflows/ and starter workflows in workflow-templates/ (the latter inherit pinned SHAs when copied into module repos).
How updates happen
- Dependabot (
.github/dependabot.yml) scans.github/workflows/weekly and opens grouped PRs bumping SHA + trailing comment when upstream cuts a new tag. Dependabot'sgithub-actionsecosystem does NOT scanworkflow-templates/. - Auto-update for templates (
.github/workflows/auto-update-templates.yml) runs Mondays 08:00 UTC, executespinact run -updateagainstworkflow-templates/*.yml, and opens a PR with the SHA bumps. Closes the gap Dependabot can't cover. - Pin-check CI (
.github/workflows/pin-check.yml) runspinact run -checkon every PR that touches workflows or templates. PRs with unpinned third-partyuses:lines fail. - Scope is configured in
.pinact.yaml—VirtoCommerce/*is intentionally ignored (internal, not third-party).
For contributors
-
When adding a new third-party action, write the SHA, not the tag. Quick lookup:
gh api repos/OWNER/REPO/commits/TAG --jq '.sha' -
VirtoCommerce/vc-github-actions/<dir>@masterandVirtoCommerce/.github/.../*.yml@vN.N.Nrefs remain version-/branch-pinned as before. -
New module repos created via
create-module-repository.ymlinherit pinned templates but do not get their own Dependabot config — SHAs there will go stale unless the module repo adds one.


