Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add pipeline to detect breaking change in swagger #1099

Open
wants to merge 23 commits into
base: main
Choose a base branch
from
59 changes: 59 additions & 0 deletions eng/pipelines/pr-breaking-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
trigger: none

resources:
repositories:
- repository: azure-rest-api-specs
type: github
name: Azure/azure-rest-api-specs
endpoint: azure

MaryGao marked this conversation as resolved.
Show resolved Hide resolved
stages:
- stage: Build_and_Validate
jobs:
- job: Validate_generated_swagger
pool:
name: azsdk-pool-mms-ubuntu-2004-general
vmImage: ubuntu-20.04
steps:
- checkout: self
submodules: true
- template: /eng/pipelines/templates/install.yml
parameters:
nodeVersion: "18.x"
workingDirectory: $(Build.SourcesDirectory)/typespec-azure
- script: pnpm run build
displayName: Build
workingDirectory: $(Build.SourcesDirectory)/typespec-azure

- checkout: azure-rest-api-specs
fetchDepth: 1
- pwsh: |
$packageJson = Get-Content -Raw "package.json" | ConvertFrom-Json -AsHashtable

$packageJson.devDependencies["@azure-tools/typespec-autorest"] = "file:$(Build.SourcesDirectory)/typespec-azure/packages/typespec-autorest"
$packageJson.devDependencies["@azure-tools/typespec-azure-core"] = "file:$(Build.SourcesDirectory)/typespec-azure/packages/typespec-azure-core"
$packageJson.devDependencies["@azure-tools/typespec-azure-portal-core"] = "file:$(Build.SourcesDirectory)/typespec-azure/packages/typespec-azure-portal-core"
$packageJson.devDependencies["@azure-tools/typespec-azure-resource-manager"] = "file:$(Build.SourcesDirectory)/typespec-azure/packages/typespec-azure-resource-manager"
$packageJson.devDependencies["@azure-tools/typespec-client-generator-core"] = "file:$(Build.SourcesDirectory)/typespec-azure/packages/typespec-client-generator-core"
$packageJson.devDependencies["@azure-tools/typespec-azure-rulesets"] = "file:$(Build.SourcesDirectory)/typespec-azure/packages/typespec-azure-rulesets"
$packageJson.devDependencies["@typespec/compiler"] = "file:$(Build.SourcesDirectory)/typespec-azure/core/packages/compiler"
$packageJson.devDependencies["@typespec/http"] = "file:$(Build.SourcesDirectory)/typespec-azure/core/packages/http"
$packageJson.devDependencies["@typespec/openapi"] = "file:$(Build.SourcesDirectory)/typespec-azure/core/packages/openapi"
$packageJson.devDependencies["@typespec/openapi3"] = "file:$(Build.SourcesDirectory)/typespec-azure/core/packages/openapi3"
$packageJson.devDependencies["@typespec/rest"] = "file:$(Build.SourcesDirectory)/typespec-azure/core/packages/rest"
$packageJson.devDependencies["@typespec/versioning"] = "file:$(Build.SourcesDirectory)/typespec-azure/core/packages/versioning"

$packageJson | ConvertTo-Json -Depth 100 | Out-File -Path "package.json" -Encoding utf8 -NoNewline -Force
displayName: 'Update package.json in azure-rest-api-specs'
workingDirectory: $(Build.SourcesDirectory)/azure-rest-api-specs
- script: pnpm install
displayName: Install updated TypeSpec dependencies
workingDirectory: $(Build.SourcesDirectory)/azure-rest-api-specs
- pwsh: ./eng/scripts/TypeSpec-Generate-Swagger.ps1 -CheckAll
displayName: 'Generate all swagger files'
workingDirectory: $(Build.SourcesDirectory)/azure-rest-api-specs
- pwsh: git diff
displayName: 'Check for changes'
workingDirectory: $(Build.SourcesDirectory)/azure-rest-api-specs


7 changes: 7 additions & 0 deletions eng/pipelines/templates/1es-redirect.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ resources:
type: git
name: internal/azure-sdk-build-tools
ref: refs/tags/azure-sdk-build-tools_20230613.1
- repository: azure-rest-api-specs
type: github
name: Azure/azure-rest-api-specs
endpoint: azure

parameters:
- name: stages
Expand Down Expand Up @@ -35,6 +39,9 @@ extends:
name: azsdk-pool-mms-win-2022-general
image: azsdk-pool-mms-win-2022-1espt
os: windows
sourceRepositoriesToScan:
exclude:
- repository: azure-rest-api-specs
psscriptanalyzer:
compiled: true
break: true
Expand Down
7 changes: 6 additions & 1 deletion eng/pipelines/templates/install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ parameters:
- name: pnpmStorePath
type: string
default: $(Pipeline.Workspace)/.pnpm-store
- name: workingDirectory
type: string
default: $(Build.SourcesDirectory)
steps:
- task: UseDotNet@2
inputs:
Expand All @@ -19,7 +22,7 @@ steps:

- task: Cache@2
inputs:
key: 'pnpm | "$(Agent.OS)" | pnpm-lock.yaml'
key: 'pnpm | "$(Agent.OS)" | ${{ parameters.workingDirectory }}/pnpm-lock.yaml'
path: ${{ parameters.pnpmStorePath }}
displayName: Cache pnpm store
- script: |
Expand All @@ -40,6 +43,8 @@ steps:
- script: pnpm install
displayName: Install JavaScript Dependencies
retryCountOnTaskFailure: 3
workingDirectory: ${{ parameters.workingDirectory }}

- script: dotnet restore core/packages/typespec-vs
displayName: Restore .NET Dependencies
workingDirectory: ${{ parameters.workingDirectory }}
Loading