| title | Consumer patterns |
|---|
Copy-paste reference for every AzureLocal reusable workflow. One snippet per workflow. Drop into .github/workflows/<name>.yml in your product repo.
Every snippet pins @v1 (major). Never pin @main — drift audit will fail your repo.
name: Add to project
on:
issues:
types: [opened]
pull_request:
types: [opened]
jobs:
add-to-project:
uses: AzureLocal/.github/.github/workflows/reusable-add-to-project.yml@v1
with:
id-prefix: my-repo # unique string per consumer
solution-option-id: SOME_GUID # from org project metadataname: Release please
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
jobs:
release-please:
uses: AzureLocal/.github/.github/workflows/reusable-release-please.yml@v1name: Validate repo structure
on:
pull_request:
push:
branches: [main]
jobs:
validate:
uses: AzureLocal/.github/.github/workflows/reusable-validate-structure.yml@v1Runs Pester + PSScriptAnalyzer. Optionally publishes to PSGallery on release.
name: CI
on:
pull_request:
push:
branches: [main]
release:
types: [published]
jobs:
ci:
uses: AzureLocal/platform/.github/workflows/reusable-ps-module-ci.yml@v1
with:
module-path: Modules/MyModule
module-manifest: Modules/MyModule/MyModule.psd1
test-path: tests/maproom/unit
publish-to-gallery: ${{ github.event_name == 'release' }}
secrets:
psgallery-api-key: ${{ secrets.PSGALLERY_API_KEY }}Runs lint, typecheck, vitest, build.
name: CI
on:
pull_request:
push:
branches: [main]
jobs:
ci:
uses: AzureLocal/platform/.github/workflows/reusable-ts-web-ci.yml@v1
with:
node-version: '20'
package-manager: npm # npm | pnpm | yarn
build-output-dir: distValidates Bicep, Terraform, and ARM templates.
name: Validate IaC
on:
pull_request:
paths:
- 'bicep/**'
- 'terraform/**'
- 'arm/**'
push:
branches: [main]
jobs:
validate:
uses: AzureLocal/platform/.github/workflows/reusable-iac-validate.yml@v1
with:
bicep-path: bicep
terraform-path: terraform
arm-path: armBuilds MkDocs and deploys to GitHub Pages (gh-pages branch).
name: Deploy docs
on:
push:
branches: [main]
paths:
- 'docs/**'
- 'mkdocs.yml'
- 'requirements-docs.txt'
workflow_dispatch:
permissions:
contents: write
jobs:
deploy:
uses: AzureLocal/platform/.github/workflows/reusable-mkdocs-deploy.yml@v1
with:
python-version: '3.12'
requirements-file: requirements-docs.txtInvokes the MAPROOM runner against the calling repo's tests/maproom/ fixtures and unit tests.
name: MAPROOM
on:
pull_request:
push:
branches: [main]
jobs:
maproom:
uses: AzureLocal/platform/.github/workflows/reusable-maproom-run.yml@v1
with:
fixtures-path: tests/maproom/Fixtures
tests-path: tests/maproom/unitRuns on demand (scheduled or manual). Reports any drift from canonical standards.
name: Drift check
on:
schedule:
- cron: '0 9 * * MON' # weekly, Monday 09:00 UTC
workflow_dispatch:
jobs:
drift-check:
uses: AzureLocal/platform/.github/workflows/reusable-drift-check.yml@v1.github/workflows/
├── ci.yml # reusable-ps-module-ci
├── maproom.yml # reusable-maproom-run
├── release-please.yml # reusable-release-please (from .github)
├── add-to-project.yml # reusable-add-to-project (from .github)
├── validate-structure.yml # reusable-validate-structure (from .github)
└── drift-check.yml # reusable-drift-check (weekly)
.github/workflows/
├── ci.yml # reusable-ts-web-ci
├── release-please.yml # reusable-release-please (from .github)
├── add-to-project.yml # reusable-add-to-project (from .github)
├── validate-structure.yml # reusable-validate-structure (from .github)
└── drift-check.yml # reusable-drift-check
.github/workflows/
├── validate-iac.yml # reusable-iac-validate
├── deploy-docs.yml # reusable-mkdocs-deploy
├── release-please.yml # reusable-release-please (from .github)
├── add-to-project.yml # reusable-add-to-project (from .github)
├── validate-structure.yml # reusable-validate-structure (from .github)
└── drift-check.yml # reusable-drift-check
reusable-workflows/versioning.md— how to pin, how to migrate across majorsreference/env-secrets.md— which secrets each workflow needsreference/troubleshooting.md— common failure modes