Skip to content

TypeSpec Validation - All #108

TypeSpec Validation - All

TypeSpec Validation - All #108

name: TypeSpec Validation - All
on:
push:
branches:
- main
- RPSaaSMaster
- typespec-next
pull_request:
branches:
- main
- RPSaaSMaster
- typespec-next
paths:
- .gitattributes
- .prettierrc.json
- package-lock.json
- package.json
- tsconfig.json
- eng/**
- specification/suppressions.yaml
- specification/common-types/**
# Workflow and workflow dependencies
- .github/workflows/typespec-validation-all.yaml
- .github/actions/setup-node-npm-ci/**
schedule:
# Run 4x/day
- cron: '0 0,6,12,18 * * *'
workflow_dispatch:
jobs:
typespec-validation-all:
# Use short name to maximize space for parameters in UI
name: TSV
strategy:
# Validate all specs, even if one job fails early
fail-fast: false
# Sort matrix elements from "most important" to "least important" for the best grouping and UI
# Keep matrix values short, to maximize number of parameters shown in UI
matrix:
# When triggered by schedule, validate both the default branch and typespec-next
# Use the placeholder string "default" instead of passing "" directly, since the latter gets ignored by
# the GitHub Jobs UI.
ref: ${{ fromJSON(github.event_name == 'schedule' && '["default", "next"]' || '["default"]') }}
os: [ubuntu, windows]
# shards must start at 0 and increment by 1
shard: [0, 1, 2]
# total-shards must be an accurate count of the number of shards
total-shards: [3]
runs-on: ${{ matrix.os }}-latest
steps:
- name: Enable git long paths
if: runner.os == 'Windows'
run: git config --global core.longpaths true
- uses: actions/checkout@v4
with:
# Convert placeholder string 'default' to '', which tells the action to checkout the default ref.
ref: ${{ matrix.ref == 'next' && 'typespec-next' || '' }}
- name: Setup Node 20 and run `npm ci`
uses: ./.github/actions/setup-node-npm-ci
- name: Validate All Specs
run: |
# Keep processing when errors are written. Nonzero exit will mark the
# step as failed.
$ErrorActionPreference = 'Continue'
./eng/scripts/TypeSpec-Validation.ps1 `
-Shard ${{ matrix.shard }} `
-TotalShards ${{ matrix.total-shards }} `
-CheckAll `
-GitClean `
-Verbose
shell: pwsh